CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
capt_seq.c-Dateireferenz
#include "lolevel.h"
#include "platform.h"
#include "core.h"
#include "../../../generic/capt_seq.c"
+ Include-Abhängigkeitsdiagramm für capt_seq.c:

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define USE_STUBS_NRFLAG   1
 
#define NR_AUTO   (-1)
 

Funktionen

void _LogCameraEvent (int id, const char *fmt,...)
 
int _captseq_raw_addr_init (int raw_index, char **ptr)
 
void captseq_raw_addr_init_my (int raw_index, char **ptr)
 
void clear_current_raw_addr (void)
 
void __attribute__ ((naked, noinline))
 

Variablen

char * current_raw_addr
 

Makro-Dokumentation

#define NR_AUTO   (-1)

Definiert in Zeile 10 der Datei capt_seq.c.

#define USE_STUBS_NRFLAG   1

Definiert in Zeile 9 der Datei capt_seq.c.

Dokumentation der Funktionen

void __attribute__ ( (naked, noinline)  )

!!

Definiert in Zeile 63 der Datei capt_seq.c.

63  {
64  asm volatile (
65 " push {r3, r4, r5, r6, r7, lr}\n"
66 " ldr r4, =0x0003fad4\n"
67 " movs r6, #0\n"
68 " ldr r5, =0x0000bd84\n"
69 "loc_fc1501e0:\n"
70 " movs r2, #0\n"
71 " mov r1, sp\n"
72 " ldr r0, [r5, #8]\n"
73 " blx sub_fc2ef8ec\n" // j_ReceiveMessageQueue
74 " lsls r0, r0, #0x1f\n"
75 " beq loc_fc150202\n"
76 " movw r2, #0x449\n"
77 " ldr r1, =0xfc14fe88\n" // *"SsShootTask.c"
78 " movs r0, #0\n"
79 " blx sub_fc2ef9e4\n" // j_DebugAssert
80 " blx sub_fc2ef90c\n"
81 " pop {r3, r4, r5, r6, r7, pc}\n"
82 "loc_fc150202:\n"
83 " ldr r0, [sp]\n"
84 " ldr r0, [r0]\n"
85 " cmp r0, #1\n"
86 " beq loc_fc15021a\n"
87 " cmp r0, #0x28\n"
88 " beq loc_fc15021a\n"
89 " cmp r0, #0x1d\n"
90 " beq loc_fc15021a\n"
91 " cmp r0, #0x20\n"
92 " beq loc_fc15021a\n"
93 " bl sub_fc1e67ac\n"
94 "loc_fc15021a:\n"
95 #ifdef CAPTSEQ_DEBUG_LOG
96 // debug message
97 "ldr r0, [sp]\n"
98 "ldr r0, [r0]\n"
99 "bl log_capt_seq\n"
100 #endif
101 " ldr r0, [sp]\n"
102 " ldr r1, [r0]\n"
103 " cmp r1, #0x2b\n"
104 " bhs loc_fc150304\n"
105 " tbb [pc, r1]\n" // (jumptable r1 43 elements)
106 "branchtable_fc150226:\n"
107 " .byte((loc_fc150252 - branchtable_fc150226) / 2)\n" // (case 0)
108 " .byte((loc_fc150268 - branchtable_fc150226) / 2)\n" // (case 1)
109 " .byte((loc_fc150270 - branchtable_fc150226) / 2)\n" // (case 2)
110 " .byte((loc_fc15027e - branchtable_fc150226) / 2)\n" // (case 3)
111 " .byte((loc_fc150278 - branchtable_fc150226) / 2)\n" // (case 4)
112 " .byte((loc_fc150288 - branchtable_fc150226) / 2)\n" // (case 5)
113 " .byte((loc_fc15028e - branchtable_fc150226) / 2)\n" // (case 6)
114 " .byte((loc_fc150294 - branchtable_fc150226) / 2)\n" // (case 7)
115 " .byte((loc_fc15029c - branchtable_fc150226) / 2)\n" // (case 8)
116 " .byte((loc_fc1502da - branchtable_fc150226) / 2)\n" // (case 9)
117 " .byte((loc_fc1502a6 - branchtable_fc150226) / 2)\n" // (case 10)
118 " .byte((loc_fc1502ae - branchtable_fc150226) / 2)\n" // (case 11)
119 " .byte((loc_fc1502c0 - branchtable_fc150226) / 2)\n" // (case 12)
120 " .byte((loc_fc1502c8 - branchtable_fc150226) / 2)\n" // (case 13)
121 " .byte((loc_fc1502ce - branchtable_fc150226) / 2)\n" // (case 14)
122 " .byte((loc_fc1502d4 - branchtable_fc150226) / 2)\n" // (case 15)
123 " .byte((loc_fc1502e2 - branchtable_fc150226) / 2)\n" // (case 16)
124 " .byte((loc_fc1502e8 - branchtable_fc150226) / 2)\n" // (case 17)
125 " .byte((loc_fc1502ee - branchtable_fc150226) / 2)\n" // (case 18)
126 " .byte((loc_fc1502f4 - branchtable_fc150226) / 2)\n" // (case 19)
127 " .byte((loc_fc1502fa - branchtable_fc150226) / 2)\n" // (case 20)
128 " .byte((loc_fc1502fe - branchtable_fc150226) / 2)\n" // (case 21)
129 " .byte((loc_fc150306 - branchtable_fc150226) / 2)\n" // (case 22)
130 " .byte((loc_fc15030c - branchtable_fc150226) / 2)\n" // (case 23)
131 " .byte((loc_fc150312 - branchtable_fc150226) / 2)\n" // (case 24)
132 " .byte((loc_fc150318 - branchtable_fc150226) / 2)\n" // (case 25)
133 " .byte((loc_fc15031e - branchtable_fc150226) / 2)\n" // (case 26)
134 " .byte((loc_fc150326 - branchtable_fc150226) / 2)\n" // (case 27)
135 " .byte((loc_fc15032c - branchtable_fc150226) / 2)\n" // (case 28)
136 " .byte((loc_fc150330 - branchtable_fc150226) / 2)\n" // (case 29)
137 " .byte((loc_fc150338 - branchtable_fc150226) / 2)\n" // (case 30)
138 " .byte((loc_fc15033e - branchtable_fc150226) / 2)\n" // (case 31)
139 " .byte((loc_fc150344 - branchtable_fc150226) / 2)\n" // (case 32)
140 " .byte((loc_fc15034a - branchtable_fc150226) / 2)\n" // (case 33)
141 " .byte((loc_fc150350 - branchtable_fc150226) / 2)\n" // (case 34)
142 " .byte((loc_fc150356 - branchtable_fc150226) / 2)\n" // (case 35)
143 " .byte((loc_fc15035c - branchtable_fc150226) / 2)\n" // (case 36)
144 " .byte((loc_fc150364 - branchtable_fc150226) / 2)\n" // (case 37)
145 " .byte((loc_fc15036a - branchtable_fc150226) / 2)\n" // (case 38)
146 " .byte((loc_fc15039a - branchtable_fc150226) / 2)\n" // (case 39)
147 " .byte((loc_fc1503a0 - branchtable_fc150226) / 2)\n" // (case 40)
148 " .byte((loc_fc15038e - branchtable_fc150226) / 2)\n" // (case 41)
149 " .byte((loc_fc1503ba - branchtable_fc150226) / 2)\n" // (case 42)
150 ".align 1\n"
151 "loc_fc150252:\n" // case 0: preshoot, quick press shoot
152 " ldr r0, [r0, #0xc]\n"
153 " bl sub_fc15073a\n"
154 #ifdef CAPTSEQ_DEBUG_LOG
155 "bl log_capt_seq_override\n"
156 #endif
157 " BL clear_current_raw_addr\n" // +
158 " BL shooting_expo_param_override\n" // +
159 " bl sub_fc14dc2e\n"
160 " ldr r0, [r4, #0x28]\n"
161 " cmp r0, #0\n"
162 " beq loc_fc150266\n"
163 " bl sub_fc1e58d8_my\n" // -> nr?, remote hook, raw hook (quick, no half press)
164 "loc_fc150266:\n"
165 " b loc_fc1503ba\n"
166 "loc_fc150268:\n" // case 1: (normal shoot)
167 " ldr r0, [r0, #0x10]\n"
168 " bl sub_fc1e56a6_my\n" // -> nr?, remote hook, raw hook
169 " b loc_fc1503ba\n"
170 "loc_fc150270:\n"
171 " movs r0, #1\n"
172 " bl sub_fc1509dc\n"
173 " b loc_fc1503ba\n"
174 "loc_fc150278:\n"
175 " bl sub_fc1504c2\n"
176 " b loc_fc150284\n"
177 "loc_fc15027e:\n"
178 " ldr r0, [r0, #0xc]\n"
179 " bl sub_fc150722\n"
180 "loc_fc150284:\n"
181 " str r6, [r4, #0x28]\n"
182 " b loc_fc1503ba\n"
183 "loc_fc150288:\n"
184 " bl sub_fc150728\n"
185 " b loc_fc1503ba\n"
186 "loc_fc15028e:\n"
187 " bl sub_fc150902\n"
188 " b loc_fc1502a0\n"
189 "loc_fc150294:\n"
190 " ldr r0, [r0, #0x10]\n"
191 " bl sub_fc1e5980\n"
192 " b loc_fc1503ba\n"
193 "loc_fc15029c:\n"
194 " bl sub_fc150964\n"
195 "loc_fc1502a0:\n"
196 " bl sub_fc14dc2e\n"
197 " b loc_fc1503ba\n"
198 "loc_fc1502a6:\n"
199 " ldr r0, [r4, #0x54]\n"
200 " bl sub_fc150f38\n"
201 " b loc_fc1503ba\n"
202 "loc_fc1502ae:\n"
203 " bl sub_fc15118a\n"
204 " b loc_fc1503ba\n"
205 ".ltorg\n"
206 // firmware had literal pool here
207 /*
208 fcd0 0003
209 fad4 0003
210 bd84 0000
211 */
212 "loc_fc1502c0:\n"
213 " ldr r0, [r0, #0xc]\n"
214 " bl sub_fc1511d6\n"
215 " b loc_fc1503ba\n"
216 "loc_fc1502c8:\n"
217 " bl sub_fc15138e\n"
218 " b loc_fc1503ba\n"
219 "loc_fc1502ce:\n"
220 " bl sub_fc151770\n"
221 " b loc_fc1503ba\n"
222 "loc_fc1502d4:\n"
223 " bl sub_fc151806\n"
224 " b loc_fc1503ba\n"
225 "loc_fc1502da:\n"
226 " ldr r0, [r0, #0xc]\n"
227 " bl sub_fc150722\n"
228 " b loc_fc1503ba\n"
229 "loc_fc1502e2:\n"
230 " bl sub_fc1e432c\n"
231 " b loc_fc1503ba\n"
232 "loc_fc1502e8:\n"
233 " bl sub_fc1e44d4\n"
234 " b loc_fc1503ba\n"
235 "loc_fc1502ee:\n"
236 " bl sub_fc1e4568\n"
237 " b loc_fc1503ba\n"
238 "loc_fc1502f4:\n"
239 " bl sub_fc1e45f4\n"
240 " b loc_fc1503ba\n"
241 "loc_fc1502fa:\n"
242 " movs r0, #0\n"
243 " b loc_fc150320\n"
244 "loc_fc1502fe:\n"
245 " bl sub_fc1e48e8\n"
246 " b loc_fc1503ba\n"
247 "loc_fc150304:\n"
248 " b loc_fc1503ac\n"
249 "loc_fc150306:\n"
250 " bl sub_fc1e4948\n"
251 " b loc_fc1503ba\n"
252 "loc_fc15030c:\n"
253 " bl sub_fc1e494c\n"
254 " b loc_fc1503ba\n"
255 "loc_fc150312:\n"
256 " bl sub_fc1e495c\n"
257 " b loc_fc1503ba\n"
258 "loc_fc150318:\n"
259 " bl sub_fc1e49d4\n"
260 " b loc_fc1503ba\n"
261 "loc_fc15031e:\n"
262 " movs r0, #1\n"
263 "loc_fc150320:\n"
264 " bl sub_fc1e47c8\n"
265 " b loc_fc1503ba\n"
266 "loc_fc150326:\n"
267 " bl sub_fc150abe\n"
268 " b loc_fc1503ba\n"
269 "loc_fc15032c:\n"
270 " movs r0, #0\n"
271 " b loc_fc150332\n"
272 "loc_fc150330:\n"
273 " ldr r0, [r0, #0xc]\n"
274 "loc_fc150332:\n"
275 " bl sub_fc150b1e\n"
276 " b loc_fc1503ba\n"
277 "loc_fc150338:\n"
278 " bl sub_fc1e46f2\n"
279 " b loc_fc1503ba\n"
280 "loc_fc15033e:\n"
281 " bl sub_fc1e4758\n"
282 " b loc_fc1503ba\n"
283 "loc_fc150344:\n"
284 " bl sub_fc1e6188\n"
285 " b loc_fc1503ba\n"
286 "loc_fc15034a:\n"
287 " bl sub_fc14e6c0\n"
288 " b loc_fc1503ba\n"
289 "loc_fc150350:\n"
290 " bl sub_fc2bff66\n"
291 " b loc_fc1503ba\n"
292 "loc_fc150356:\n"
293 " bl sub_fc2c0040\n"
294 " b loc_fc1503ba\n"
295 "loc_fc15035c:\n"
296 " ldr r0, [r0, #0xc]\n"
297 " bl sub_fc1e4aa8\n"
298 " b loc_fc1503ba\n"
299 "loc_fc150364:\n"
300 " bl sub_fc1e4b10\n"
301 " b loc_fc1503ba\n"
302 "loc_fc15036a:\n"
303 " bl sub_fc155bea\n"
304 " ldrh.w r0, [r4, #0x1a4]\n"
305 " cmp r0, #4\n"
306 " beq loc_fc150380\n"
307 " ldrh r0, [r4]\n"
308 " sub.w r1, r0, #0x4200\n"
309 " subs r1, #0x36\n"
310 " bne loc_fc1503ba\n"
311 "loc_fc150380:\n"
312 " bl sub_fc2c0040\n"
313 " bl sub_fc2c0556\n"
314 " bl sub_fc2c039e\n"
315 " b loc_fc1503ba\n"
316 "loc_fc15038e:\n"
317 " bl sub_fc151a02\n"
318 " movs r0, #1\n"
319 " bl sub_fc154066\n"
320 " b loc_fc1503ba\n"
321 "loc_fc15039a:\n"
322 " movs r2, #0\n"
323 " movs r1, #0x11\n"
324 " b loc_fc1503a4\n"
325 "loc_fc1503a0:\n"
326 " movs r2, #0\n"
327 " movs r1, #0x10\n"
328 "loc_fc1503a4:\n"
329 " movs r0, #0\n"
330 " bl sub_fc14e934\n"
331 " b loc_fc1503ba\n"
332 "loc_fc1503ac:\n"
333 " movw r2, #0x575\n"
334 " ldr r1, =0xfc14fe88\n" // *"SsShootTask.c"
335 " movs r0, #0\n"
336 " blx sub_fc2ef9e4\n" // j_DebugAssert
337 "loc_fc1503ba:\n"
338 // debug after message handled
339 #ifdef CAPTSEQ_DEBUG_LOG
340 "ldr r0, [sp]\n"
341 "ldr r0, [r0]\n"
342 "bl log_capt_seq2\n"
343 #endif
344 " ldr r0, [sp]\n"
345 " ldr r1, [r0, #4]\n"
346 " ldr r0, [r5, #4]\n"
347 " blx sub_fc2ef84c\n" // j_SetEventFlag
348 " ldr r7, [sp]\n"
349 " ldr r0, [r7, #8]\n"
350 " cbnz r0, loc_fc1503d8\n"
351 " movw r2, #0x12a\n"
352 " ldr r1, =0xfc14fe88\n" // *"SsShootTask.c"
353 " movs r0, #0\n"
354 " blx sub_fc2ef9e4\n" // j_DebugAssert
355 "loc_fc1503d8:\n"
356 " str r6, [r7, #8]\n"
357 " b loc_fc1501e0\n"
358 ".ltorg\n"
359  );
360 }
int _captseq_raw_addr_init ( int  raw_index,
char **  ptr 
)
void _LogCameraEvent ( int  id,
const char *  fmt,
  ... 
)
void captseq_raw_addr_init_my ( int  raw_index,
char **  ptr 
)

Definiert in Zeile 49 der Datei capt_seq.c.

49  {
50  _captseq_raw_addr_init(raw_index,ptr);
51  current_raw_addr=*(ptr + 0x5c/4); // @0xfc1527b2, ptr+0x5c
52 #ifdef CAPTSEQ_DEBUG_LOG
53  _LogCameraEvent(0x60,"rawinit i:0x%x p:0x%x v:0x%x",raw_index,ptr,current_raw_addr);
54 #endif
55 }
void clear_current_raw_addr ( void  )

Definiert in Zeile 57 der Datei capt_seq.c.

57  {
59 }

Variablen-Dokumentation

char* current_raw_addr

Definiert in Zeile 47 der Datei capt_seq.c.