CHDK_DE Vorschauversion  Trunk Rev. 6014
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
main.c-Dateireferenz
#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 VBATT_DEFAULT_MIN   (3500)
 
#define VBATT_DEFAULT_MAX   (4100)
 
#define NUM_FL   (int)(sizeof(fl_tbl)/sizeof(fl_tbl[0]))
 
#define CF_EFL   60345
 

Funktionen

void boot ()
 
void mykbd_task (long ua, long ub, long uc, long ud, long ue, long uf)
 
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 task_fs (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 movie_record_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)
 
int rec_mode_active (void)
 

Variablen

long link_bss_start
 
long link_bss_end
 
static int stop_hooking
 
static void(* taskprev )(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static void(* taskfsprev )(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long p8, long p9)
 
static const int fl_tbl [] = {5800, 7109, 8462, 10093, 12120, 14421, 17400}
 
const int zoom_points = NUM_FL
 

Makro-Dokumentation

#define CF_EFL   60345

Definiert in Zeile 183 der Datei main.c.

#define NUM_FL   (int)(sizeof(fl_tbl)/sizeof(fl_tbl[0]))

Definiert in Zeile 182 der Datei main.c.

#define VBATT_DEFAULT_MAX   (4100)

Definiert in Zeile 2 der Datei main.c.

#define VBATT_DEFAULT_MIN   (3500)

Definiert in Zeile 1 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 71 der Datei main.c.

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

Definiert in Zeile 15 der Datei main.c.

16 {
17 }
static void core_hook_task_delete ( void *  tcb)
static

Definiert in Zeile 19 der Datei main.c.

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

Definiert in Zeile 98 der Datei main.c.

99 {
100  char *name = (char*)(*(long*)((char*)pNewTcb+0x34));
101  long *entry = (long*)((char*)pNewTcb+0x74);
102 
103  // always hook first task creation
104  // to create SpyProc
105  if (!stop_hooking){
106  taskprev = (void*)(*entry);
107  *entry = (long)task_start_hook;
108  stop_hooking = 1;
109  } else {
110  // hook/replace another tasks
111  if (my_ncmp(name, "tSwitchChe", 10) == 0){
112  *entry = (long)mykbd_task;
113  }
114  if (my_ncmp(name, "tInitFileM", 10) == 0){
115  taskfsprev = (void*)(*entry);
116  *entry = (long)task_fs;
117  }
118 
119  if (my_ncmp(name, "tCaptSeqTa", 10) == 0){
120  *entry = (long)capt_seq_hook;
121  }
122 
123  if (my_ncmp(name, "tMovieRecT", 10) == 0){
124  *entry = (long)movie_record_hook;
125  }
126 
127  core_hook_task_create(pNewTcb);
128  }
129 }
void deleteHook ( void *  pTcb)

Definiert in Zeile 131 der Datei main.c.

132 {
133  core_hook_task_delete(pTcb);
134 }
int get_effective_focal_length ( int  zp)

Definiert in Zeile 187 der Datei main.c.

187  {
188  return (CF_EFL*get_focal_length(zp))/10000;
189 }
int get_focal_length ( int  zp)

Definiert in Zeile 191 der Datei main.c.

191  {
192  if (zp<0) return fl_tbl[0];
193  else if (zp>NUM_FL-1) return fl_tbl[NUM_FL-1];
194  else return fl_tbl[zp];
195 }
long get_vbatt_max ( )

Definiert in Zeile 175 der Datei main.c.

176 {
177  return 4100;
178 }
long get_vbatt_min ( )

Definiert in Zeile 170 der Datei main.c.

171 {
172  return 3500;
173 }
int get_zoom_x ( int  zp)

Definiert in Zeile 197 der Datei main.c.

197  {
198  if (zp<1) return 10;
199  else if (zp>NUM_FL-1) return fl_tbl[NUM_FL-1]*10/fl_tbl[0];
200  else return fl_tbl[zp]*10/fl_tbl[0];
201 }
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 79 der Datei main.c.

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

Definiert in Zeile 88 der Datei main.c.

89 {
90  int i;
91  for (i=0;i<len;i++){
92  if (s1[i] != s2[i])
93  return 1;
94  }
95  return 0;
96 }
void mykbd_task ( long  ua,
long  ub,
long  uc,
long  ud,
long  ue,
long  uf 
)
int rec_mode_active ( void  )

Definiert in Zeile 211 der Datei main.c.

211  {
212  return playrec_mode==1;
213 }
static void remount_filesystem ( )
static

Definiert in Zeile 55 der Datei main.c.

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

Definiert in Zeile 38 der Datei main.c.

39 {
40  (void)ua; (void)ub; (void)uc; (void)ud; (void)ue; (void)uf;
41  core_spytask();
42 }
void startup ( )

Definiert in Zeile 136 der Datei main.c.

137 {
138  long *bss = &link_bss_start;
139 
140  // sanity check
141  if ((long)&link_bss_end > (MEMISOSTART + MEMISOSIZE)){
142  started();
143  shutdown();
144  }
145 
146  // initialize .bss senment
147  while (bss<&link_bss_end)
148  *bss++ = 0;
149 
150  // fill memory with this magic value so we could see what
151  // parts of memory were or not used
152 
153  // update:
154  // this seems to be required for unknown reason
155  // or else sryproc startup will fail from
156  // time to time...
157 #if 0
158  long *ptr;
159  for (ptr=(void*)MEMBASEADDR;((long)ptr)<MEMISOSTART;ptr+=4){
160  ptr[0]=0x55555555;
161  ptr[1]=0x55555555;
162  ptr[2]=0x55555555;
163  ptr[3]=0x55555555;
164  }
165 #endif
166 
167  boot();
168 }
static void task_fs ( long  p0,
long  p1,
long  p2,
long  p3,
long  p4,
long  p5,
long  p6,
long  p7,
long  p8,
long  p9 
)
static

Definiert in Zeile 62 der Datei main.c.

65 {
67  taskfsprev(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 );
68 }
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 45 der Datei main.c.

48 {
49  _CreateTask("SpyTask", 0x19, 0x2000, spytask, 0);
50 
51  taskprev(p0, p1, p2, p3, p4, p5, p6, p7, p8, p9 );
52 }

Variablen-Dokumentation

const int fl_tbl[] = {5800, 7109, 8462, 10093, 12120, 14421, 17400}
static

Definiert in Zeile 181 der Datei main.c.

long link_bss_end
long link_bss_start
int stop_hooking
static

Definiert in Zeile 26 der Datei main.c.

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

Definiert in Zeile 32 der Datei main.c.

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

Definiert in Zeile 28 der Datei main.c.

const int zoom_points = NUM_FL

Definiert in Zeile 185 der Datei main.c.