source: trunk/include/lolevel.h @ 1335

Revision 1335, 11.3 KB checked in by reyalp, 21 months ago (diff)

a410 cosmetic cleanup from srsa_4c in http://chdk.setepontos.com/index.php?topic=650.msg73045#msg73045

  • removes unneeded platform specific ifdefs
  • Property svn:eol-style set to native
Line 
1#ifndef LOLEVEL_H
2#define LOLEVEL_H
3
4#ifndef LOW_LEVEL
5#error File can be included when platform is built only!
6#endif
7
8#ifndef __arm__
9#error File can be included in ARM mode only!
10#endif
11
12/* Canon stuff */
13extern long *_GetSystemTime(long *t);
14extern long _GetZoomLensCurrentPosition();
15extern long _GetZoomLensCurrentPoint();
16extern long _MoveZoomLensWithPoint(short *pos);
17extern long _SetZoomActuatorSpeedPercent(short *perc);
18extern volatile long zoom_busy;
19extern long _GetFocusLensCurrentPosition();
20extern long _GetFocusLensSubjectDistance();
21extern long _GetFocusLensSubjectDistanceFromLens();
22extern void _MoveFocusLensToDistance(short *dist);
23extern void _PutInNdFilter();
24extern void _PutOutNdFilter();
25extern volatile long focus_busy;
26extern long _GetCurrentAvValue();
27extern long _GetCurrentTargetDistance();
28extern long _GetPropertyCase(long opt_id, void *buf, long bufsize);
29extern long _SetPropertyCase(long opt_id, void *buf, long bufsize);
30extern long _IsStrobeChargeCompleted();
31extern long _VbattGet();
32extern int _GetBatteryTemperature();
33extern int _GetCCDTemperature();
34extern int _GetOpticalTemperature();
35extern void _PT_PlaySound(short , void*);
36extern void _RefreshPhysicalScreen(long f);
37extern void _Unmount_FileSystem();
38extern void _Mount_FileSystem();
39extern void _SleepTask(long msec);
40extern int _CreateTask (const char *name, int prio, int stack_size /*?*/,
41                        void *entry, long parm /*?*/);
42extern void _SleepTask(long msec);
43extern void __attribute__((noreturn)) _ExitTask();
44extern int _taskNameToId(char* taskName); // VxWorks only, task's name first letter must be 't', maximum 10 chars total
45extern const char *_taskName(int taskID); // VxWorks only for now
46extern int _taskIdListGet(int *idlist,int max); // VxWorks only for now
47extern void _taskSuspend(int taskId);
48extern void _taskResume(int taskId);
49extern int _errnoOfTaskGet(int tid);
50extern long _IsStrobeChargeCompleted();
51
52long _SetEventFlag(void *flag, long what);
53long _CheckAnyEventFlag(void *flag, long mask, long *res);
54long _GetEventFlagValue(void *flag, long *res);
55
56long _ReceiveMessageQueue(void *msgq, long *dst, long unk1 /* maybe size? */);
57
58/* Canon stuff with nonoriginal naming */
59extern long _GetParameterData(long id, void *buf, long size);
60extern long _SetParameterData(long id, void *buf, long size);
61#ifdef  CAM_DRYOS_2_3_R47
62extern void _MakeSDCardBootable(int driveno);
63#else
64extern void _UpdateMBROnFlash(int driveno, long offset, char *str);
65#endif
66
67/* standart C library */
68//extern int _creat (const char *name, int flags);
69extern int _open (const char *name, int flags, int mode );
70extern int _close (int fd);
71extern int _write (int fd, void *buffer, long nbytes);
72extern int _read (int fd, void *buffer, long nbytes);
73extern int _lseek (int fd, long offset, int whence);
74extern long _mkdir(const char *dirname);
75
76extern int _Open (const char *name, int flags, int mode );
77extern int _Close (int fd);
78extern int _Write (int fd, const void *buffer, long nbytes);
79extern int _Read (int fd, void *buffer, long nbytes);
80extern int _Lseek (int fd, long offset, int whence);
81extern int _Remove(const char *name);
82
83extern long _Fopen_Fut(const char *filename, const char *mode);
84extern long _Fclose_Fut(long file);
85extern long _Fread_Fut(void *buf, long elsize, long count, long f);
86extern long _Fwrite_Fut(const void *buf, long elsize, long count, long f);
87extern long _Fseek_Fut(long file, long offset, long whence);
88extern long _Fflush_Fut(long file);
89extern long _Feof_Fut(long file);
90extern long _Fflush_Fut(long file);
91extern char *_Fgets_Fut(char *buf, int n, long f);
92extern long _RenameFile_Fut(const char *oldname, const char *newname);
93extern long _DeleteFile_Fut(const char *name);
94extern long _MakeDirectory_Fut(const char *name,int unk);
95
96extern int _rename(const char *oldname, const char *newname);
97
98extern int _isdigit(int c);
99extern int _isspace(int c);
100extern int _isalpha(int c);
101extern int _isupper(int c);
102extern int _islower(int c);
103extern int _ispunct(int c);
104extern int _isxdigit(int c);
105
106extern long _strlen(const char *s);
107extern int _strcmp(const char *s1, const char *s2);
108extern int _strncmp(const char *s1, const char *s2, long n);
109extern char *_strchr(const char *s, int c);
110extern char *_strcpy(char *dest, const char *src);
111extern char *_strncpy(char *dest, const char *src, long n);
112extern char *_strcat(char *dest, const char *app);
113extern char *_strrchr(const char *s, int c);
114extern char *_strpbrk(const char *s, const char *accept);
115
116extern long _strtol(const char *nptr, char **endptr, int base);
117extern unsigned long _strtoul(const char *nptr, char **endptr, int base);
118// DRYOS: this function is called by strtol (mode=1) and strtoul (mode=0)
119// easier to match with sig finder
120extern long _strtolx(const char *nptr, char **endptr, int base, int mode);
121
122extern int _tolower(int c);
123extern int _toupper(int c);
124
125extern int _vsprintf(char *buf, const char *fmt, __builtin_va_list va_list);
126
127extern void *_malloc(long size);
128extern void _free(void *p);
129extern void *_AllocateUncacheableMemory(long size);
130extern void _FreeUncacheableMemory(void *p);
131
132extern void *_memchr(const void *s, int c, int n);
133extern void *_memcpy(void *dest, const void *src, long n);
134extern void *_memset(void *s, int c, int n);
135extern int _memcmp(const void *s1, const void *s2, long n);
136
137extern void _qsort (void *__base, int __nelem, int __size, int (*__cmp)(const void *__e1, const void *__e2));
138
139/* VxWorks */
140extern long _taskLock();
141extern long _taskUnlock();
142extern int _taskCreateHookAdd (void *createHook);
143extern int _taskDeleteHookAdd (void *deleteHook);
144extern long _iosDevAdd(void*,void*,int);
145extern long _iosDevDelete(void*);
146extern long _iosDrvInstall(void*,void*,void*,void*,void*,void*,void*);
147extern void _GiveSemaphore(int sem);
148
149/* misc */
150extern const char aPhysw;
151extern long physw_run;
152extern long _kbd_p1_f();
153extern void _kbd_p2_f();
154extern void _kbd_pwr_on();
155extern void _kbd_pwr_off();
156extern void _kbd_read_keys_r2(void*p);
157extern long physw_status[3], physw_copy[3];
158
159void __attribute__((naked,noinline)) mykbd_task();
160extern void capt_seq_task();
161extern void movie_record_task();
162extern void init_file_modules_task();
163extern void exp_drv_task();
164
165void kbd_fetch_data(long *dst);
166
167/*used to detect play or record mode without relying on physical switch positions
168 values on most cameras:
169  0 = startup in play
170  1 = unknown, appears to happen in first play<->rec transition
171  2 = record mode
172  4 = canon menu in record mode
173  3 = play after being in record mode at least once
174  5 = transitioning between some record modes, such as movie
175 values on very old vxworks cameras (ixus50_sd400, ixus700_sd500, s2is)
176  0 = startup in play
177  1 = rec
178  2 = play
179  3 = maybe transition ?
180 address in all cases can be found with strings "MenuIn", "MenuOut"
181*/
182extern long playrec_mode;
183
184extern void *led_table;
185extern void _UniqueLedOn(void *addr, long brightness);
186extern void _UniqueLedOff(void *addr);
187struct led_control {int led_num; int action; int brightness; int blink_count;};
188extern int _PostLEDMessage(struct led_control *);
189int _LEDDrive(int led, int action);
190
191extern long _LockMainPower();
192extern long _UnlockMainPower();
193extern void _SetAutoShutdownTime(int t);
194
195/*
196The following two functions post an event such as button press, switch change, cable connection change.
197event:
198  A number identifying the event. This number may vary between camera models.
199  See levent.c and levent.h for methods to identify events by name.
200unk:
201  Unknown value, usually 0 in canon code. For jogdial messages, this is number of clicks.
202return value:
203  Unknown, possibly void.
204*/
205extern int  _PostLogicalEventForNotPowerType(int event, int unk);
206extern int  _PostLogicalEventToUI(int event, int unk);
207/*
208Used in the canon code to modify the generation or delivery of events. For example, Canon
209mode override code sets 1 on the desired dial position, and zero on all others.
210event: as described above for PostLogicalEvent*
211state: if 1, the event will be generated/delivered as normal. If 0, the event is disabled/blocked.
212*/
213extern void _SetLogicalEventActive(unsigned event, unsigned state);
214/* Somehow related to the above. Normally 0, set to 1 for script mode */
215extern void _SetScriptMode(unsigned mode);
216
217/* math */
218extern int _rand(void);
219extern void* _srand(unsigned int seed);
220
221extern double __log(double x);
222extern double __log10(double x);
223extern double __pow(double x, double y);
224extern double __sqrt(double x);
225
226/* time */
227extern int _utime(const char *file, void *newTimes);
228extern unsigned long _time(unsigned long *timer);
229extern void *_localtime(const unsigned long *_tod);
230extern void *_LocalTime(const unsigned long *_tod, void * t_m); // DRYOS
231extern long _strftime(char *s, unsigned long maxsize, const char *format, const /*struct tm*/ void *timp);
232extern /*time_t*/ long _mktime(/*struct tm*/ void *timp); // VXWORKS
233extern /*time_t*/ long _mktime_ext(void *tim_extp); // DRYOS, doesn't take a struct tm *
234
235#ifdef CAM_DRYOS_2_3_R39
236int _SetFileTimeStamp(const char *file_path, int time1, int time2);
237#else
238extern int _SetFileTimeStamp(int fd, int time1, int time2);
239#endif
240
241/* file */
242extern void *_opendir(const char* name);
243extern void *_readdir(void *d);
244extern int _ReadFastDir(void *d, void* dd); // DRYOS
245extern int   _closedir(void *d);
246extern void  _rewinddir(void *d);
247extern int   _stat(const char *name, void *pStat);
248extern unsigned long _GetDrive_ClusterSize(int drive);
249extern unsigned long _GetDrive_TotalClusters(int drive);
250extern unsigned long _GetDrive_FreeClusters(int drive);
251extern int _WriteSDCard(unsigned int drive, unsigned int start_sect, unsigned int num_sect, void *buf);
252extern void _UnsetZoomForMovie(void);
253void _TurnOffMic(void);
254void _TurnOnMic(void);
255
256extern void _MakeAFScan(int*, int);
257extern void _ExpCtrlTool_StartContiAE(int, int);
258extern void _ExpCtrlTool_StopContiAE(int, int);
259
260extern int some_flag_for_af_scan;
261extern int parameter_for_af_scan;
262extern void _SetAE_ShutterSpeed(short* tv);
263
264extern void _EnterToCompensationEVF(void);
265extern void _ExitFromCompensationEVF(void);
266
267extern void _TurnOnBackLight(void);
268extern void _TurnOffBackLight(void);
269
270// reyalp used to calculate size of loaded CHDK
271// these are linker symbols, with no actual data attached!
272extern const char _start,_end;
273
274extern void _DoAFLock(void);
275extern void _UnlockAF(void);
276
277extern int _apex2us(int);
278
279extern void _ScreenLock();
280extern void _SetCurrentCaptureModeType();
281extern unsigned _ExecuteEventProcedure(const char *name,...);
282// known in CHDK as _RefreshPhysicalScreen
283//extern void _ScreenUnLock();
284
285// 7 calls functions and sets some MMIOs, but doesn't disable caches and actually restart
286// 3 skips one function call on some cameras, but does restart
287void _Restart(unsigned option);
288
289// boot an fir/fi2 file
290void _reboot_fw_update(const char* bootfile);
291#ifdef CAM_CHDK_PTP
292extern int _add_ptp_handler(int, void*, int);
293extern void _set_control_event(int);
294extern void _PB2Rec();
295extern void _Rec2PB();
296#endif
297
298#ifdef OPT_EXMEM_MALLOC
299// dryos + some vxworks only takes 3 params in reality
300// on some vxworks the function that is easy to match with sig finder takes an additional param,
301// set to zero in the real AllocateExMem
302// versions that don't expect a 4th param will just ignore it
303extern void *_exmem_alloc(int pool_id,int size,int unk,int unk2);
304#endif
305
306// vxworks only
307// used on a few cameras that don't have memPartInfoGet, see CAM_NO_MEMPARTINFO
308extern int _memPartFindMax(int mempart_id);
309extern int _memPartInfoGet(int mempart_id,int *info);
310
311#endif
Note: See TracBrowser for help on using the repository browser.