source: trunk/include/lolevel.h @ 942

Revision 942, 11.0 KB checked in by rudi_de, 16 months ago (diff)

Wiederangleichen von CHDK und CHDK-DE (Teil 1)
http://chdk.setepontos.com/index.php?topic=7601

Betrifft alle Kameras

  • USB Mode-Umschaltung an CHDK angeglichen
  • 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);
95extern long _DeleteDirectory_Fut(const char *name);
96
97extern int _rename(const char *oldname, const char *newname);
98
99extern int _isdigit(int c);
100extern int _isspace(int c);
101extern int _isalpha(int c);
102extern int _isupper(int c);
103extern int _islower(int c);
104extern int _ispunct(int c);
105extern int _isxdigit(int c);
106
107extern long _strlen(const char *s);
108extern int _strcmp(const char *s1, const char *s2);
109extern int _strncmp(const char *s1, const char *s2, long n);
110extern char *_strchr(const char *s, int c);
111extern char *_strcpy(char *dest, const char *src);
112extern char *_strncpy(char *dest, const char *src, long n);
113extern char *_strcat(char *dest, const char *app);
114extern char *_strrchr(const char *s, int c);
115extern char *_strpbrk(const char *s, const char *accept);
116
117extern long _strtol(const char *nptr, char **endptr, int base);
118extern unsigned long _strtoul(const char *nptr, char **endptr, int base);
119// DRYOS: this function is called by strtol (mode=1) and strtoul (mode=0)
120// easier to match with sig finder
121extern long _strtolx(const char *nptr, char **endptr, int base, int mode);
122
123extern int _tolower(int c);
124extern int _toupper(int c);
125
126extern int _vsprintf(char *buf, const char *fmt, __builtin_va_list va_list);
127
128extern void *_malloc(long size);
129extern void _free(void *p);
130extern void *_AllocateUncacheableMemory(long size);
131extern void _FreeUncacheableMemory(void *p);
132
133extern void *_memchr(const void *s, int c, int n);
134extern void *_memcpy(void *dest, const void *src, long n);
135extern void *_memset(void *s, int c, int n);
136extern int _memcmp(const void *s1, const void *s2, long n);
137
138extern void _qsort (void *__base, int __nelem, int __size, int (*__cmp)(const void *__e1, const void *__e2));
139
140/* VxWorks */
141extern long _taskLock();
142extern long _taskUnlock();
143extern int _taskCreateHookAdd (void *createHook);
144extern int _taskDeleteHookAdd (void *deleteHook);
145extern long _iosDevAdd(void*,void*,int);
146extern long _iosDevDelete(void*);
147extern long _iosDrvInstall(void*,void*,void*,void*,void*,void*,void*);
148extern void _GiveSemaphore(int sem);
149
150/* misc */
151extern const char aPhysw;
152extern long physw_run;
153extern long _kbd_p1_f();
154extern void _kbd_p2_f();
155extern void _kbd_pwr_on();
156extern void _kbd_pwr_off();
157extern void _kbd_read_keys_r2(void*p);
158extern long physw_status[3], physw_copy[3];
159
160void __attribute__((naked,noinline)) mykbd_task();
161extern void capt_seq_task();
162extern void movie_record_task();
163extern void init_file_modules_task();
164extern void exp_drv_task();
165
166void kbd_fetch_data(long *dst);
167
168/*used to detect play or record mode without relying on physical switch positions
169 values on most cameras:
170  0 = startup in play
171  1 = unknown, appears to happen in first play<->rec transition
172  2 = record mode
173  4 = canon menu in record mode
174  3 = play after being in record mode at least once
175  5 = transitioning between some record modes, such as movie
176 values on very old vxworks cameras (ixus50_sd400, ixus700_sd500, s2is)
177  0 = startup in play
178  1 = rec
179  2 = play
180  3 = maybe transition ?
181 address in all cases can be found with strings "MenuIn", "MenuOut"
182*/
183extern long playrec_mode;
184
185extern void *led_table;
186extern void _UniqueLedOn(void *addr, long brightness);
187extern void _UniqueLedOff(void *addr);
188struct led_control {int led_num; int action; int brightness; int blink_count;};
189extern int _PostLEDMessage(struct led_control *);
190int _LEDDrive(int led, int action);
191
192
193extern long _LockMainPower();
194extern long _UnlockMainPower();
195extern void _SetAutoShutdownTime(int t);
196
197/*
198The following two functions post an event such as button press, switch change, cable connection change.
199event:
200  A number identifying the event. This number may vary between camera models.
201  See levent.c and levent.h for methods to identify events by name.
202unk:
203  Unknown value, usually 0 in canon code. For jogdial messages, this is number of clicks.
204return value:
205  Unknown, possibly void.
206*/
207extern int  _PostLogicalEventForNotPowerType(int event, int unk);
208extern int  _PostLogicalEventToUI(int event, int unk);
209/*
210Used in the canon code to modify the generation or delivery of events. For example, Canon
211mode override code sets 1 on the desired dial position, and zero on all others.
212event: as described above for PostLogicalEvent*
213state: if 1, the event will be generated/delivered as normal. If 0, the event is disabled/blocked.
214*/
215extern void _SetLogicalEventActive(unsigned event, unsigned state);
216/* Somehow related to the above. Normally 0, set to 1 for script mode */
217extern void _SetScriptMode(unsigned mode);
218
219
220/* math */
221extern int _rand(void);
222extern void* _srand(unsigned int seed);
223
224extern double __log(double x);
225extern double __log10(double x);
226extern double __pow(double x, double y);
227extern double __sqrt(double x);
228
229/* time */
230extern int _utime(const char *file, void *newTimes);
231extern unsigned long _time(unsigned long *timer);
232extern void *_localtime(const unsigned long *_tod);
233extern void *_LocalTime(const unsigned long *_tod, void * t_m); // DRYOS
234extern long _strftime(char *s, unsigned long maxsize, const char *format, const /*struct tm*/ void *timp);
235extern /*time_t*/ long _mktime(/*struct tm*/ void *timp); // VXWORKS
236extern /*time_t*/ long _mktime_ext(void *tim_extp); // DRYOS, doesn't take a struct tm *
237#ifdef CAM_DRYOS_2_3_R39
238int _SetFileTimeStamp(const char *file_path, int time1, int time2);
239#else
240extern int _SetFileTimeStamp(int fd, int time1, int time2);
241#endif
242
243/* file */
244extern void *_opendir(const char* name);
245extern void *_readdir(void *d);
246extern int _ReadFastDir(void *d, void* dd); // DRYOS
247extern int   _closedir(void *d);
248extern void  _rewinddir(void *d);
249extern int   _stat(const char *name, void *pStat);
250extern unsigned long _GetDrive_ClusterSize(int drive);
251extern unsigned long _GetDrive_TotalClusters(int drive);
252extern unsigned long _GetDrive_FreeClusters(int drive);
253extern int _WriteSDCard(unsigned int drive, unsigned int start_sect, unsigned int num_sect, void *buf);
254extern void _UnsetZoomForMovie(void);
255void _TurnOffMic(void);
256void _TurnOnMic(void);
257
258extern void _MakeAFScan(int*, int);
259extern void _ExpCtrlTool_StartContiAE(int, int);
260extern void _ExpCtrlTool_StopContiAE(int, int);
261
262extern int some_flag_for_af_scan;
263extern int parameter_for_af_scan;
264extern short _SetAE_ShutterSpeed(short* tv);
265
266extern void _EnterToCompensationEVF(void);
267extern void _ExitFromCompensationEVF(void);
268
269extern void _TurnOnBackLight(void);
270extern void _TurnOffBackLight(void);
271
272// reyalp used to calculate size of loaded CHDK
273// these are linker symbols, with no actual data attached!
274extern const char _start,_end;
275
276extern void _DoAFLock(void);
277extern void _UnlockAF(void);
278
279extern int _apex2us(int);
280
281extern void _ScreenLock();
282extern void _SetCurrentCaptureModeType();
283extern unsigned _ExecuteEventProcedure(const char *name, ...);
284// known in CHDK as _RefreshPhysicalScreen
285//extern void _ScreenUnLock();
286
287// 7 calls functions and sets some MMIOs, but doesn't disable caches and actually restart
288// 3 skips one function call on some cameras, but does restart
289void _Restart(unsigned option);
290
291// boot an fir/fi2 file
292void _reboot_fw_update(const char* bootfile);
293#ifdef CAM_CHDK_PTP
294extern int _add_ptp_handler(int, void*, int);
295extern void _set_control_event(int);
296extern void _PB2Rec();
297extern void _Rec2PB();
298#endif
299
300#ifdef OPT_EXMEM_MALLOC
301extern void *_exmem_alloc(int pool_id,int size,int unk);
302#endif
303
304extern void _SetFileAttributes(int fd, int attr);
305
306#ifdef CAM_HAS_GPS
307extern void _GPS_UpdateData();
308#endif
309
310#endif
Note: See TracBrowser for help on using the repository browser.