source: trunk/include/lolevel.h @ 864

Revision 864, 9.9 KB checked in by reyalp, 3 years ago (diff)
  • 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);
61extern void _UpdateMBROnFlash(int driveno, long offset, char *str);
62
63/* standart C library */
64//extern int _creat (const char *name, int flags);
65extern int _open (const char *name, int flags, int mode );
66extern int _close (int fd);
67extern int _write (int fd, void *buffer, long nbytes);
68extern int _read (int fd, void *buffer, long nbytes);
69extern int _lseek (int fd, long offset, int whence);
70extern long _mkdir(const char *dirname);
71
72extern int _Open (const char *name, int flags, int mode );
73extern int _Close (int fd);
74extern int _Write (int fd, void *buffer, long nbytes);
75extern int _Read (int fd, void *buffer, long nbytes);
76extern int _Lseek (int fd, long offset, int whence);
77extern int _Remove(const char *name);
78
79extern long _Fopen_Fut(const char *filename, const char *mode);
80extern long _Fclose_Fut(long file);
81extern long _Fread_Fut(void *buf, long elsize, long count, long f);
82extern long _Fwrite_Fut(const void *buf, long elsize, long count, long f);
83extern long _Fseek_Fut(long file, long offset, long whence);
84extern long _Fflush_Fut(long file);
85extern long _Feof_Fut(long file);
86extern long _Fflush_Fut(long file);
87extern char *_Fgets_Fut(char *buf, int n, long f);
88extern long _RenameFile_Fut(const char *oldname, const char *newname);
89extern long _DeleteFile_Fut(const char *name);
90extern long _MakeDirectory_Fut(const char *name,int unk);
91
92extern int _rename(const char *oldname, const char *newname);
93
94extern int _isdigit(int c);
95extern int _isspace(int c);
96extern int _isalpha(int c);
97extern int _isupper(int c);
98extern int _islower(int c);
99extern int _ispunct(int c);
100extern int _isxdigit(int c);
101
102extern long _strlen(const char *s);
103extern int _strcmp(const char *s1, const char *s2);
104extern int _strncmp(const char *s1, const char *s2, long n);
105extern char *_strchr(const char *s, int c);
106extern char *_strcpy(char *dest, const char *src);
107extern char *_strncpy(char *dest, const char *src, long n);
108extern char *_strcat(char *dest, const char *app);
109extern char *_strrchr(const char *s, int c);
110extern char *_strpbrk(const char *s, const char *accept);
111
112extern long _strtol(const char *nptr, char **endptr, int base);
113
114extern int _tolower(int c);
115extern int _toupper(int c);
116
117extern int _vsprintf(char *buf, const char *fmt, __builtin_va_list va_list);
118
119extern void *_malloc(long size);
120extern void _free(void *p);
121extern void *_AllocateUncacheableMemory(long size);
122extern void _FreeUncacheableMemory(void *p);
123
124extern void *_memchr(const void *s, int c, int n);
125extern void *_memcpy(void *dest, const void *src, long n);
126extern void *_memset(void *s, int c, int n);
127extern int _memcmp(const void *s1, const void *s2, long n);
128
129extern void _qsort (void *__base, int __nelem, int __size, int (*__cmp)(const void *__e1, const void *__e2));
130
131/* VxWorks */
132extern long _taskLock();
133extern long _taskUnlock();
134extern int _taskCreateHookAdd (void *createHook);
135extern int _taskDeleteHookAdd (void *deleteHook);
136extern long _iosDevAdd(void*,void*,int);
137extern long _iosDevDelete(void*);
138extern long _iosDrvInstall(void*,void*,void*,void*,void*,void*,void*);
139extern void _GiveSemaphore(int sem);
140
141/* misc */
142extern const char aPhysw;
143extern long physw_run;
144extern long _kbd_p1_f();
145extern void _kbd_p2_f();
146extern void _kbd_pwr_on();
147extern void _kbd_pwr_off();
148extern void _kbd_read_keys_r2(void*p);
149extern long physw_status[3], physw_copy[3];
150
151void __attribute__((naked,noinline)) mykbd_task();
152extern void capt_seq_task();
153extern void movie_record_task();
154extern void init_file_modules_task();
155extern void exp_drv_task();
156
157void kbd_fetch_data(long *dst);
158
159/*used to detect play or record mode without relying on physical switch positions
160 values on most cameras:
161  0 = startup in play
162  1 = unknown, appears to happen in first play<->rec transition
163  2 = record mode
164  4 = canon menu in record mode
165  3 = play after being in record mode at least once
166  5 = transitioning between some record modes, such as movie
167 values on very old vxworks cameras (ixus50_sd400, ixus700_sd500, s2is)
168  0 = startup in play
169  1 = rec
170  2 = play
171  3 = maybe transition ?
172 address in all cases can be found with strings "MenuIn", "MenuOut"
173*/
174extern long playrec_mode;
175
176extern void *led_table;
177extern void _UniqueLedOn(void *addr, long brightness);
178extern void _UniqueLedOff(void *addr);
179struct led_control {int led_num; int action; int brightness; int blink_count;};
180extern int _PostLEDMessage(struct led_control *);
181int _LEDDrive(int led, int action);
182
183
184extern long _LockMainPower();
185extern long _UnlockMainPower();
186extern void _SetAutoShutdownTime(int t);
187
188/*
189The following two functions post an event such as button press, switch change, cable connection change.
190event:
191  A number identifying the event. This number may vary between camera models.
192  See levent.c and levent.h for methods to identify events by name.
193unk:
194  Unknown value, usually 0 in canon code. For jogdial messages, this is number of clicks.
195return value:
196  Unknown, possibly void.
197*/
198extern int  _PostLogicalEventForNotPowerType(int event, int unk);
199extern int  _PostLogicalEventToUI(int event, int unk);
200/*
201Used in the canon code to modify the generation or delivery of events. For example, Canon
202mode override code sets 1 on the desired dial position, and zero on all others.
203event: as described above for PostLogicalEvent*
204state: if 1, the event will be generated/delivered as normal. If 0, the event is disabled/blocked.
205*/
206extern void _SetLogicalEventActive(unsigned event, unsigned state);
207/* Somehow related to the above. Normally 0, set to 1 for script mode */
208extern void _SetScriptMode(unsigned mode);
209
210
211/* math */
212extern int _rand(void);
213extern void* _srand(unsigned int seed);
214
215extern double __log(double x);
216extern double __log10(double x);
217extern double __pow(double x, double y);
218extern double __sqrt(double x);
219
220/* time */
221extern int _utime(char *file, void *newTimes);
222extern unsigned long _time(unsigned long *timer);
223extern void *_localtime(const unsigned long *_tod);
224extern void *_LocalTime(const unsigned long *_tod, void * t_m); // DRYOS
225extern long _strftime(char *s, unsigned long maxsize, const char *format, const /*struct tm*/ void *timp);
226extern /*time_t*/ long _mktime(/*struct tm*/ void *timp); // VXWORKS
227extern /*time_t*/ long _mktime_ext(void *tim_extp); // DRYOS, doesn't take a struct tm *
228extern int _SetFileTimeStamp(int fd, int time1, int time2);
229
230/* file */
231extern void *_opendir(const char* name);
232extern void *_readdir(void *d);
233extern int _ReadFastDir(void *d, void* dd); // DRYOS
234extern int   _closedir(void *d);
235extern void  _rewinddir(void *d);
236extern int   _stat(char *name, void *pStat);
237extern unsigned long _GetDrive_ClusterSize(int drive);
238extern unsigned long _GetDrive_TotalClusters(int drive);
239extern unsigned long _GetDrive_FreeClusters(int drive);
240extern int _WriteSDCard(unsigned int drive, unsigned int start_sect, unsigned int num_sect, void *buf);
241extern void _UnsetZoomForMovie(void);
242void _TurnOffMic(void);
243void _TurnOnMic(void);
244
245extern void _MakeAFScan(int*, int);
246extern void _ExpCtrlTool_StartContiAE(int, int);
247extern void _ExpCtrlTool_StopContiAE(int, int);
248
249extern int some_flag_for_af_scan;
250extern int parameter_for_af_scan;
251extern void _SetAE_ShutterSpeed(short* tv);
252
253extern void _EnterToCompensationEVF(void);
254extern void _ExitFromCompensationEVF(void);
255
256extern void _TurnOnBackLight(void);
257extern void _TurnOffBackLight(void);
258
259// reyalp used to calculate size of loaded CHDK
260// these are linker symbols, with no actual data attached!
261extern const char _start,_end;
262
263extern void _DoAFLock(void);
264extern void _UnlockAF(void);
265
266extern int _apex2us(int);
267
268extern void _ScreenLock();
269extern void _SetCurrentCaptureModeType();
270extern unsigned _ExecuteEventProcedure(const char *name,...);
271// known in CHDK as _RefreshPhysicalScreen
272//extern void _ScreenUnLock();
273#endif
Note: See TracBrowser for help on using the repository browser.