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

gehe zum Quellcode dieser Datei

Makrodefinitionen

#define NUM_FL   9
 
#define NUM_DATA   3
 
#define CF_EFL   2800
 
#define CF_EFL_DIV   580
 

Funktionen

void boot ()
 
static void core_hook_task_create (__attribute__((unused)) void *tcb)
 
static void core_hook_task_delete (void *tcb)
 
void spytask (long ua, long ub, long uc, long ud, long ue, long uf)
 
static void task_start_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void remount_filesystem ()
 
static void init_file_modules_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void capt_seq_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void physw_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void movie_record_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
void task_JogDial_my ()
 
static void task_JogDial_hook (long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static int my_ncmp (const char *s1, const char *s2, long len)
 
void createHook (void *pNewTcb)
 
void deleteHook (void *pTcb)
 
void startup ()
 
long get_vbatt_min ()
 
long get_vbatt_max ()
 
int get_effective_focal_length (int zp)
 
int get_focal_length (int zp)
 
int get_zoom_x (int zp)
 

Variablen

long link_bss_start
 
long link_bss_end
 
static int stop_hooking
 
static void(* task_prev )(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void(* init_file_modules_prev )(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
int focus_len_table [NUM_FL *NUM_DATA]
 
const int zoom_points = NUM_FL
 

Makro-Dokumentation

#define CF_EFL   2800

Definiert in Zeile 207 der Datei main.c.

#define CF_EFL_DIV   580

Definiert in Zeile 208 der Datei main.c.

#define NUM_DATA   3

Definiert in Zeile 199 der Datei main.c.

#define NUM_FL   9

Definiert in Zeile 198 der Datei main.c.

Dokumentation der Funktionen

void boot ( )

Definiert in Zeile 43 der Datei boot.c.

43  {
44 
45  long *canon_data_src = (void*)0xFFEDAC70; // value taken at ROM:FFC00188
46  long *canon_data_dst = (void*)0x1900;
47  long canon_data_len = 0xDF84 - 0x1900; // data_end - data_start 0xDF7C taken at ROM:FFC00138
48  long *canon_bss_start = (void*)0xDF84; // just after data
49  long canon_bss_len = 0xD4F38 - 0xDF84; // d4ec8 taken at ROM:FFC00FB4
50 
51  long i;
52 
53  // enable caches and write buffer...
54  // this is a carryover from old dryos ports, may not be useful
55  asm volatile (
56  "MRC p15, 0, R0,c1,c0\n"
57  "ORR R0, R0, #0x1000\n"
58  "ORR R0, R0, #4\n"
59  "ORR R0, R0, #1\n"
60  "MCR p15, 0, R0,c1,c0\n"
61  :::"r0"
62  );
63 
64  for(i=0;i<canon_data_len/4;i++)
65  canon_data_dst[i]=canon_data_src[i];
66 
67  for(i=0;i<canon_bss_len/4;i++)
68  canon_bss_start[i]=0;
69 
70  asm volatile ("B sub_FFC001A4_my\n");
71 };
static void capt_seq_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 68 der Datei main.c.

71 {
72  (void)p0; (void)p1; (void)p2; (void)p3; (void)p4; (void)p5; (void)p6; (void)p7; (void)p8; (void)p9;
73  capt_seq_task();
74 }
static void core_hook_task_create ( __attribute__((unused)) void *  tcb)
static

Definiert in Zeile 12 der Datei main.c.

13 {
14 }
static void core_hook_task_delete ( void *  tcb)
static

Definiert in Zeile 16 der Datei main.c.

17 {
18  char *name = (char*)(*(long*)((char*)tcb+0x34));
19  if (strcmp(name,"tInitFileM")==0) core_spytask_can_start();
20 }
void createHook ( void *  pNewTcb)

Definiert in Zeile 113 der Datei main.c.

114 {
115  char *name = (char*)(*(long*)((char*)pNewTcb+0x34));
116  long *entry = (long*)((char*)pNewTcb+0x74);
117 
118  // always hook first task creation
119  // to create SpyProc
120  if (!stop_hooking){
121  task_prev = (void*)(*entry);
122  *entry = (long)task_start_hook;
123  stop_hooking = 1;
124  } else {
125  // hook/replace another tasks
126  if (my_ncmp(name, "tPhySw", 6) == 0){
127  *entry = (long)physw_hook;
128  }
129 
130  if (my_ncmp(name, "tInitFileM", 10) == 0){
131  init_file_modules_prev = (void*)(*entry);
132  #if CAM_MULTIPART
133  *entry = (long)init_file_modules_task;
134  #else
135  *entry = (long)init_file_modules_hook;
136  #endif
137  }
138 
139  if (my_ncmp(name, "tCaptSeqTa", 10) == 0){
140  *entry = (long)capt_seq_hook;
141  }
142 
143  if (my_ncmp(name, "tJogDial", 8) == 0){
144  *entry = (long)task_JogDial_hook;
145  }
146 
147  if (my_ncmp(name, "tMovieReco", 10) == 0){
148  #if CAM_CHDK_HAS_EXT_VIDEO_MENU
149  *entry = (long)movie_record_hook;
150  #endif
151  }
152 
153  #if CAM_EXT_TV_RANGE
154  if (my_ncmp(name, "tExpDrvTas", 10) == 0){
155  *entry = (long)exp_drv_task;
156  }
157  #endif
158 
159  core_hook_task_create(pNewTcb);
160  }
161 }
void deleteHook ( void *  pTcb)

Definiert in Zeile 163 der Datei main.c.

164 {
165  core_hook_task_delete(pTcb);
166 }
int get_effective_focal_length ( int  zp)

Definiert in Zeile 212 der Datei main.c.

212  {
214 }
int get_focal_length ( int  zp)

Definiert in Zeile 216 der Datei main.c.

216  {
217  if (zp < 0) zp = 0;
218  else if (zp >= NUM_FL) zp = NUM_FL-1;
219  return focus_len_table[zp*NUM_DATA];
220 }
long get_vbatt_max ( )

Definiert in Zeile 192 der Datei main.c.

193 {
194  return 8100;
195 }
long get_vbatt_min ( )

Definiert in Zeile 187 der Datei main.c.

188 {
189  return 6700;
190 }
int get_zoom_x ( int  zp)

Definiert in Zeile 222 der Datei main.c.

222  {
223  return get_focal_length(zp)*10/focus_len_table[0];
224 }
static void init_file_modules_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 59 der Datei main.c.

62 {
64  init_file_modules_prev(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 );
65 }
static void movie_record_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 85 der Datei main.c.

88 {
89  (void)p0; (void)p1; (void)p2; (void)p3; (void)p4; (void)p5; (void)p6; (void)p7; (void)p8; (void)p9;
91 }
static int my_ncmp ( const char *  s1,
const char *  s2,
long  len 
)
static

Definiert in Zeile 103 der Datei main.c.

104 {
105  int i;
106  for (i=0;i<len;i++){
107  if (s1[i] != s2[i])
108  return 1;
109  }
110  return 0;
111 }
static void physw_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 77 der Datei main.c.

80 {
81  (void)p0; (void)p1; (void)p2; (void)p3; (void)p4; (void)p5; (void)p6; (void)p7; (void)p8; (void)p9;
82  mykbd_task();
83 }
static void remount_filesystem ( )
static

Definiert in Zeile 52 der Datei main.c.

53 {
56 }
void spytask ( long  ua,
long  ub,
long  uc,
long  ud,
long  ue,
long  uf 
)

Definiert in Zeile 35 der Datei main.c.

36 {
37  (void)ua; (void)ub; (void)uc; (void)ud; (void)ue; (void)uf;
38  core_spytask();
39 }
void startup ( )

Definiert in Zeile 168 der Datei main.c.

169 {
170  long *bss = &link_bss_start;
171 
172  // sanity check
173  if ((long)&link_bss_end > (MEMISOSTART + MEMISOSIZE)){
174  started();
175  shutdown();
176  }
177 
178  // initialize .bss senment
179  while (bss<&link_bss_end)
180  *bss++ = 0;
181 
182  boot();
183 }
static void task_JogDial_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 95 der Datei main.c.

98 {
99  (void)p0; (void)p1; (void)p2; (void)p3; (void)p4; (void)p5; (void)p6; (void)p7; (void)p8; (void)p9;
100  task_JogDial_my();
101 }
void task_JogDial_my ( )
static void task_start_hook ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 42 der Datei main.c.

45 {
46  _CreateTask("SpyTask", 0x19, 0x2000, spytask, 0);
47 
48  task_prev(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 );
49 }

Variablen-Dokumentation

int focus_len_table[NUM_FL *NUM_DATA]
void(* init_file_modules_prev)(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
static

Definiert in Zeile 29 der Datei main.c.

long link_bss_end
long link_bss_start
int stop_hooking
static

Definiert in Zeile 23 der Datei main.c.

void(* task_prev)(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
static

Definiert in Zeile 25 der Datei main.c.

const int zoom_points = NUM_FL

Definiert in Zeile 210 der Datei main.c.