source: branches/juciphox/include/platform.h @ 497

Revision 497, 17.5 KB checked in by phyrephox, 5 years ago (diff)

+ added dutch language file
+ added ubasic command: get_time. can be fed with 0 (returns seconds), 1 (minute), 2 (hour),3 (day) 4 (month) 5 (year) - command also exists in lua, though must be fed with CHARS
+ added ubasic command: get_mode - returns 0 in record mode, 1 in playback mode, it's that simple. useful for shutting of scripts that are meant to be run in a certain mode (like 99% of all available scripts). - someone needs to port that to lua, as i javent played around with that yet!
+ added ubasic commands: get_quality, get_resolution (return quality and resolution regardless of OS) & set_quality,set_resolution - for possible values see http://chdk.wikia.com/wiki/PropertyCase (basically for quality you can 0-2, 2 being the worst, resolution can be set between 0 and 8, see the wiki) - needs porting to lua as well.

  • changed 2 default settings in the conf: now "Hide OSD in playback" is enabled at default, also "disable saving raw while recording video" is enabled at default(S-eries)
  • fixed some newline related warnings at compile time

Author's comment: Now everything should be at hand to be able to create true universal scripts. i'm thinking for example of fudgeys motion detection one, should run on digic II and III now, also on cams with and without moviebutton - all the commands are there. who is willing to write such a script? also please add the get_mode check in the beginning.

Line 
1#ifndef PLATFORM_H
2#define PLATFORM_H
3
4#include "camera.h"
5
6#define SSID_INVALID (-32767)
7#define ASID_INVALID (-32767)
8
9#define MODE_MASK               0x0300
10#define MODE_REC                0x0100
11#define MODE_PLAY               0x0200
12
13#define MODE_SHOOTING_MASK      0x00FF
14
15enum {
16MODE_AUTO               =1,
17MODE_P                  ,
18MODE_TV                 ,
19MODE_AV                 ,
20MODE_M                  ,
21MODE_PORTRAIT           ,
22MODE_NIGHT              ,
23MODE_LANDSCAPE          ,
24MODE_VIDEO_STD          ,
25MODE_VIDEO_SPEED        ,
26MODE_VIDEO_COMPACT      ,
27MODE_VIDEO_MY_COLORS    ,
28MODE_VIDEO_COLOR_ACCENT ,
29MODE_VIDEO_COLOR_SWAP   ,
30MODE_STITCH             ,
31MODE_MY_COLORS          ,
32MODE_SCN_WATER          ,
33MODE_SCN_NIGHT          ,
34MODE_SCN_CHILD          ,
35MODE_SCN_PARTY          ,
36MODE_SCN_GRASS          ,
37MODE_SCN_SNOW           ,
38MODE_SCN_BEACH          ,
39MODE_SCN_FIREWORK       ,
40MODE_SCN_COLOR_ACCENT   ,
41MODE_SCN_COLOR_SWAP     ,
42MODE_VIDEO_HIRES        ,
43MODE_SCN_AQUARIUM       ,
44MODE_COLOR_ACCENT       ,
45MODE_SCN_NIGHT1         ,
46MODE_SCN_ISO_3200       ,
47MODE_SCN_SPORT          ,
48MODE_SCN_KIDS_PETS      ,
49MODE_INDOOR             ,
50MODE_KIDS_PETS          ,
51MODE_NIGHT_SNAPSHOT     ,
52MODE_DIGITAL_MACRO      ,
53MODE_SCN_FOLIAGE        ,
54MODE_VIDEO_TIME_LAPSE   ,
55MODE_SCN_INDOOR         ,
56MODE_SCN_PORTRAIT       ,
57MODE_SUPER_MACRO        ,
58MODE_VIDEO_PORTRAIT     ,
59MODE_VIDEO_NIGHT        ,
60MODE_VIDEO_INDOOR       ,
61MODE_VIDEO_FOLIAGE      ,
62MODE_VIDEO_SNOW         ,
63MODE_VIDEO_BEACH        ,
64MODE_VIDEO_AQUARIUM     ,
65MODE_VIDEO_SUPER_MACRO  ,
66MODE_VIDEO_STITCH       ,
67MODE_VIDEO_MANUAL       ,
68MODE_SPORTS                         ,
69};
70
71// this is nasty, but not as nasty as checking each of the flags all over the place
72#define MODE_IS_VIDEO(m)   (((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || \
73                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED ||  \
74                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT || \
75                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || \
76                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT || \
77                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_SWAP || \
78                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_TIME_LAPSE || \
79                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_PORTRAIT || \
80                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_NIGHT || \
81                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_INDOOR || \
82                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_FOLIAGE || \
83                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SNOW  || \
84                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_BEACH || \
85                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_AQUARIUM || \
86                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SUPER_MACRO || \
87                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STITCH || \
88                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MANUAL)
89#if CAM_PROPSET == 2     // most digic3 cameras
90 #define PROPCASE_DRIVE_MODE                                    102
91 #define PROPCASE_FOCUS_MODE                                    133
92 #define PROPCASE_FLASH_MODE                            143
93 #define PROPCASE_USER_TV                                       264
94 #define PROPCASE_TV                                            262
95 #define PROPCASE_USER_AV                                       26
96 #define PROPCASE_AV                                            23
97 #define PROPCASE_MIN_AV                                        25
98 #define PROPCASE_SV                                            247
99 #define PROPCASE_DELTA_SV                                      79
100 #define PROPCASE_SV_MARKET                                     246
101 #define PROPCASE_BV                                            34
102 #define PROPCASE_SUBJECT_DIST1                                 245
103 #define PROPCASE_SUBJECT_DIST2                                 65
104 #define PROPCASE_ISO_MODE                                      149
105 #define PROPCASE_SHOOTING                                      206
106 #define PROPCASE_IS_FLASH_READY                        208
107 #define PROPCASE_OVEREXPOSURE                                  103
108 #define PROPCASE_SHOOTING_MODE                                 49
109 #define PROPCASE_IS_MODE                                           145
110 #define PROPCASE_QUALITY                                       57
111 #define PROPCASE_RESOLUTION                                    218
112 #define PROPCASE_EV_CORRECTION_1                               107
113 #define PROPCASE_EV_CORRECTION_2                               207
114 #define PROPCASE_ORIENTATION_SENSOR                    219
115 #define PROPCASE_DIGITAL_ZOOM_STATE                            94
116 #define PROPCASE_DIGITAL_ZOOM_POSITION                         95
117 #define PROPCASE_DISPLAY_MODE                         105
118 #define PROPCASE_BRACKET_MODE                         278 //fictional value! need to find out!
119#elif CAM_PROPSET == 1   // most digic2 cameras
120 #define PROPCASE_DRIVE_MODE                                    6
121 #define PROPCASE_FOCUS_MODE                                    12
122 #define PROPCASE_FLASH_MODE                                    16
123// need corresponding values for propset2!!!
124// #define PROPCASE_FLASH_ADJUST_MODE           15
125// #define PROPCASE_FLASH_CORRECTION               28     
126// #define PROPCASE_FLASH_MANUAL_OUTPUT    29
127//  #define PROPCASE_FOCUS_OK           67
128 #define PROPCASE_USER_TV                                       40
129 #define PROPCASE_TV                                            69
130 #define PROPCASE_USER_AV                                       39
131 #define PROPCASE_AV                                            68
132 #define PROPCASE_MIN_AV                                        77
133 #define PROPCASE_SV                                            73
134 #define PROPCASE_DELTA_SV                                      70
135 #define PROPCASE_SV_MARKET                                     72
136 #define PROPCASE_BV                                            71
137 #define PROPCASE_ISO_MODE                                      21
138 #define PROPCASE_SUBJECT_DIST1                                 65
139 #define PROPCASE_SUBJECT_DIST2                                 66
140 #define PROPCASE_SHOOTING                                      205
141 #define PROPCASE_IS_FLASH_READY                                221
142 #define PROPCASE_OVEREXPOSURE                                  76
143 #define PROPCASE_SHOOTING_MODE                                 0
144 #define PROPCASE_IS_MODE                                       229
145 #define PROPCASE_QUALITY                                       23
146 #define PROPCASE_RESOLUTION                                    24
147 #define PROPCASE_EV_CORRECTION_1                               25
148 #define PROPCASE_EV_CORRECTION_2                               26
149 #define PROPCASE_ORIENTATION_SENSOR                    37
150 #define PROPCASE_DIGITAL_ZOOM_STATE                            58
151 #define PROPCASE_DIGITAL_ZOOM_POSITION                         57
152 #define PROPCASE_DISPLAY_MODE                         181
153 #define PROPCASE_BRACKET_MODE                         36 //missing for dryos!
154#else
155 #error unknown camera processor
156#endif
157
158
159#define MAX_DIST 65535
160
161//********************
162//char * get_debug();
163//********************
164
165#define MODE_SCREEN_MASK        0x0C00
166#define MODE_SCREEN_OPENED      0x0400
167#define MODE_SCREEN_ROTATED     0x0800
168#define AS_SIZE (sizeof(aperture_sizes_table)/sizeof(aperture_sizes_table[0]))
169#define ASID_MIN (aperture_sizes_table[0].id)
170#define ASID_MAX (aperture_sizes_table[AS_SIZE-1].id)
171
172/* Keyboard repeat and initial delays */
173#define KBD_REPEAT_DELAY  140
174#define KBD_INITIAL_DELAY 300
175
176// Video recording current status constants, see movie_status variable
177#define VIDEO_RECORD_NEVER_STARTED 0 
178#define VIDEO_RECORD_STOPPED 1 
179#define VIDEO_RECORD_IN_PROGRESS 4
180
181//Optical & digital zoom status constants, see zoom_status variable
182#define ZOOM_OPTICAL_MIN         1
183#define ZOOM_OPTICAL_MAX         2
184#define ZOOM_OPTICAL_MEDIUM      3
185#define ZOOM_OPTICAL_IN          4
186#define ZOOM_OPTICAL_OUT         5
187#define ZOOM_OPTICAL_REACHED_MIN 7
188
189#define ZOOM_DIGITAL_MAX         9
190#define ZOOM_DIGITAL_MEDIUM      10
191#define ZOOM_DIGITAL_IN          11
192#define ZOOM_DIGITAL_OUT         12
193#define ZOOM_DIGITAL_REACHED_MAX 13
194
195typedef struct {
196    short id; // hacks id
197    short prop_id; // Canons id
198    char name[8];
199    short shutter_dfs_value; // shutter speed to use dark frame substraction
200} ISOTable;
201
202typedef struct {
203    short id; // hacks id
204    short prop_id; // Canons id
205    char name[8];
206    long usec;
207} ShutterSpeed;
208
209typedef struct {
210    short id; // hacks id
211    short prop_id; // Canons id
212    char name[8];
213} ApertureSize;
214
215typedef struct {
216    short av96;
217    short dav96;
218    short av96_step;
219    short tv96;
220    short dtv96;
221    short tv96_step;
222    short sv96;
223    short dsv96;
224    short sv96_step;
225    short iso;
226    short diso;
227    short iso_step;
228    short subj_dist;
229    short dsubj_dist;
230    short subj_dist_step;
231    short shoot_counter;
232    short type;
233} EXPO_BRACKETING_VALUES;
234
235#define SET_NOW      1
236#define SET_LATER    0
237
238#define SHOW_ALWAYS    1
239#define SHOW_HALF      2
240
241
242typedef struct {
243    short av96;
244    short tv96;
245    short sv96;
246    short subj_dist;
247    short nd_filter;
248} PHOTO_PARAM;
249
250typedef struct {
251    int    subject_distance;
252    int     near_limit;
253    int     far_limit;
254    int     hyperfocal_distance;
255    int     depth_of_field;
256    int     lens_to_focal_plane_width;
257} DOF_TYPE;
258
259typedef struct {
260    short av96;
261    short tv96;
262    short sv96;
263    short iso;
264    short sv96_market;
265    short iso_market;
266    short bv96_measured;
267    short bv96_seted;//Ev96_internal-Sv96
268    short ev96_seted; //Tv96+Av96
269    short ev96_measured; //Bv96+Sv96
270    short dev96;// Ev96_external-Ev96_internal
271    short dev96_canon;// Canon OverExposure
272    int b; //average scene luminance
273} EXPO_TYPE;
274
275typedef struct {
276    float value;
277    char fraction[10];
278} shutter_speed;
279
280
281/******************************************************************/
282
283int get_focal_length(int zp);
284int get_effective_focal_length(int zp);
285int get_zoom_x(int zp);
286
287/******************************************************************/
288
289long get_tick_count();
290
291void remount_filesystem();
292void mark_filesystem_bootable();
293
294/******************************************************************/
295
296long get_parameter_data(long id, void *buf, long bufsize);
297long set_parameter_data(long id, void *buf, long bufsize);
298
299long get_property_case(long id, void *buf, long bufsize);
300long set_property_case(long id, void *buf, long bufsize);
301
302long get_file_counter();
303long get_exposure_counter();
304long get_file_next_counter();
305long get_target_dir_num();
306long get_target_file_num();
307
308/******************************************************************/
309
310void kbd_key_press(long key);
311void kbd_key_release(long key);
312void kbd_key_release_all();
313long kbd_is_key_pressed(long key);
314long kbd_is_key_clicked(long key);
315long kbd_get_pressed_key();
316long kbd_get_clicked_key();
317long kbd_get_autoclicked_key();
318void kbd_reset_autoclicked_key();
319long kbd_use_zoom_as_mf();
320long kbd_use_up_down_left_right_as_fast_switch();
321void kbd_set_alt_mode_key_mask(long key);
322int get_usb_power(int edge);
323/******************************************************************/
324
325long vid_is_bitmap_shown();
326void *vid_get_bitmap_fb();
327long vid_get_bitmap_screen_width();
328long vid_get_bitmap_screen_height();
329long vid_get_bitmap_buffer_width();
330long vid_get_bitmap_buffer_height();
331void *vid_get_viewport_fb();
332void *vid_get_viewport_fb_d();
333void *vid_get_viewport_live_fb();
334void vid_bitmap_refresh();
335long vid_get_viewport_height();
336
337/******************************************************************/
338
339void *hook_raw_fptr();
340void *hook_raw_ret_addr();
341char *hook_raw_image_addr();
342long hook_raw_size();
343void hook_raw_install();
344void hook_raw_save_complete();
345
346/******************************************************************/
347
348long lens_get_zoom_pos();
349void lens_set_zoom_pos(long newpos);
350long lens_get_zoom_point();
351void lens_set_zoom_point(long newpt);
352void lens_set_zoom_speed(long newspd); //for S-series
353long lens_get_focus_pos();
354long lens_get_focus_pos_from_lense();
355void lens_set_focus_pos(long newpos);
356long lens_get_target_distance();
357
358/******************************************************************/
359
360int shooting_in_progress();
361int shooting_is_flash();
362int shooting_is_flash_ready();
363short shooting_get_flash_mode();
364
365
366/******************************************************************/
367int shooting_get_user_tv_id();
368char* shooting_get_tv_str();
369short shooting_get_tv96_from_shutter_speed(float t);
370short shooting_get_tv96();
371void shooting_set_tv96(short v, short is_now);
372void shooting_set_tv96_direct(short v, short is_now);
373void shooting_set_shutter_speed_ubasic(int t, short is_now);
374short shooting_get_user_tv96();
375void shooting_set_user_tv96(short v);
376float shooting_get_shutter_speed_from_tv96(short tv);
377float shooting_get_shutter_speed_override_value();
378const char * shooting_get_tv_override_value();
379const char * shooting_get_tv_bracket_value();
380const char * shooting_get_bracket_type();
381void shooting_set_user_tv_by_id(int v);
382void shooting_set_user_tv_by_id_rel(int v);
383const ShutterSpeed *shooting_get_tv_line();
384/******************************************************************/
385short shooting_get_aperture_sizes_table_size();
386short shooting_get_aperture_sizes_table_prop_id(short i);
387short shooting_get_max_aperture_sizes_table_prop_id();
388short shooting_get_aperture_from_av96(short av96);
389int shooting_get_user_av_id();
390char* shooting_get_av_str();
391void shooting_set_user_av_by_id(int v);
392short shooting_get_av96();
393void shooting_set_av96(short v,short is_now);
394void shooting_set_av96_direct(short v, short is_now);
395short shooting_get_user_av96();
396void shooting_set_user_av96(short v);
397void shooting_set_user_av_by_id_rel(int v);
398short shooting_get_real_aperture();
399short shooting_get_min_real_aperture();
400short shooting_get_av96_override_value();
401const char * shooting_get_av_bracket_value();
402void shooting_set_nd_filter_state(short v, short is_now);
403/******************************************************************/
404int shooting_get_day_seconds();
405int shooting_get_tick_count();
406/******************************************************************/
407void shooting_set_prop(int id, int v);
408int shooting_get_prop(int id);
409/******************************************************************/
410extern int circle_of_confusion;
411/******************************************************************/
412extern const int zoom_points;
413int shooting_get_zoom();
414void shooting_set_zoom(int v);
415void shooting_set_zoom_rel(int v);
416void shooting_set_zoom_speed(int v);
417/******************************************************************/
418int shooting_get_focus();
419void shooting_set_focus(int v, short is_now);
420short shooting_get_focus_mode();
421int shooting_get_hyperfocal_distance();
422int shooting_get_hyperfocal_distance_f(int av, int fl);
423int shooting_get_near_limit_of_acceptable_sharpness();
424int shooting_get_far_limit_of_acceptable_sharpness();
425int shooting_get_depth_of_field();
426int shooting_get_subject_distance();
427int shooting_get_subject_distance_override_value();
428int shooting_get_subject_distance_bracket_value();
429int shooting_get_subject_distance_override_koef();
430int shooting_get_lens_to_focal_plane_width();
431short shooting_get_drive_mode();
432short shooting_can_focus();
433short shooting_get_common_focus_mode();
434/******************************************************************/
435int shooting_get_iso_mode();
436void shooting_set_iso_mode(int v);
437short shooting_get_sv96();
438short shooting_get_svm96();
439short shooting_get_iso_market();
440short shooting_get_iso_real();
441void shooting_set_iso_real(short iso, short is_now);
442//void shooting_set_iso_market(short isom);
443//void shooting_set_iso_real_delta_from_base(short diso);
444void shooting_set_sv96(short sv96, short is_now);
445short shooting_get_iso_override_value();
446short shooting_get_iso_bracket_value();
447/******************************************************************/
448short shooting_get_canon_overexposure_value();
449short shooting_get_bv96();
450int shooting_get_luminance();
451//const char* shooting_get_flash_light_value();
452/******************************************************************/
453int shooting_get_canon_subject_distance();
454int shooting_get_exif_subject_dist();
455/******************************************************************/
456void shooting_expo_param_override();
457void shooting_bracketing(void);
458
459void shooting_video_bitrate_change(int v);
460extern int auto_started;
461void shooting_tv_bracketing();
462void shooting_av_bracketing();
463void shooting_iso_bracketing();
464/******************************************************************/
465void clear_values();
466/******************************************************************/
467
468
469int mode_get();
470
471/******************************************************************/
472
473long stat_get_vbatt();
474int get_ccd_temp();
475int get_optical_temp();
476int get_battery_temp();
477long get_vbatt_min();
478long get_vbatt_max();
479void play_sound(unsigned sound);
480void ubasic_camera_set_raw(int mode);
481void ubasic_camera_set_nr(int mode);
482int ubasic_camera_get_nr();
483int ubasic_camera_script_autostart();
484void ubasic_camera_set_script_autostart();
485void exit_alt();
486void camera_shutdown_in_a_second(void);
487
488extern int shot_histogram_enabled;
489
490void disable_shutdown();
491void enable_shutdown();
492
493void JogDial_CW(void);
494void JogDial_CCW(void);
495void change_video_tables(int a, int b);
496int get_flash_params_count(void);
497
498/******************************************************************/
499void __attribute__((noreturn)) shutdown();
500void ubasic_set_led(int led, int state, int bright);
501void debug_led(int state);
502/****************************************/
503extern int canon_menu_active; 
504extern char canon_shoot_menu_active; 
505extern int recreview_hold;
506
507extern int movie_status;
508unsigned int movie_reset;
509unsigned int GetFreeCardSpaceKb(void);
510unsigned int GetTotalCardSpaceKb(void);
511
512
513
514void swap_partitions(void);
515int get_part_count(void);
516void create_partitions(void);
517extern char * camera_jpeg_count_str();
518
519unsigned int GetJpgCount(void);
520unsigned int GetRawCount(void);
521
522void MakeAFScan(void);
523extern int movie_status;
524extern int zoom_status;
525void EnterToCompensationEVF(void);
526void ExitFromCompensationEVF(void);
527
528void wait_until_remote_button_is_released(void);
529short shooting_get_ev_correction1();
530
531#define started() debug_led(1)
532#define finished() debug_led(0)
533
534#endif
Note: See TracBrowser for help on using the repository browser.