source: trunk/include/platform.h @ 514

Revision 514, 17.6 KB checked in by reyalp, 5 years ago (diff)

merged old-trunk 491:502. russian.lng not updated, since it is very out of date in this tree already.

RevLine 
[304]1#ifndef PLATFORM_H
2#define PLATFORM_H
3
[324]4#include "camera.h"
5
[304]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 ,
[474]29MODE_VIDEO_COLOR_SWAP   ,
[304]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   ,
[474]41MODE_SCN_COLOR_SWAP     ,
[304]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         ,
[388]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       ,
[479]68MODE_SPORTS                         ,
[304]69};
70
[479]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)
[434]89#if CAM_PROPSET == 2     // most digic3 cameras
[304]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
[350]109 #define PROPCASE_IS_MODE                                           145
[497]110 #define PROPCASE_QUALITY                                       57
111 #define PROPCASE_RESOLUTION                                    218
[416]112 #define PROPCASE_EV_CORRECTION_1                               107
113 #define PROPCASE_EV_CORRECTION_2                               207
114 #define PROPCASE_ORIENTATION_SENSOR                    219
[434]115 #define PROPCASE_DIGITAL_ZOOM_STATE                            94
116 #define PROPCASE_DIGITAL_ZOOM_POSITION                         95
[437]117 #define PROPCASE_DISPLAY_MODE                         105
118 #define PROPCASE_BRACKET_MODE                         278 //fictional value! need to find out!
[434]119#elif CAM_PROPSET == 1   // most digic2 cameras
[304]120 #define PROPCASE_DRIVE_MODE                                    6
121 #define PROPCASE_FOCUS_MODE                                    12
122 #define PROPCASE_FLASH_MODE                                    16
[416]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
[304]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
[349]144 #define PROPCASE_IS_MODE                                       229
[497]145 #define PROPCASE_QUALITY                                       23
146 #define PROPCASE_RESOLUTION                                    24
[416]147 #define PROPCASE_EV_CORRECTION_1                               25
148 #define PROPCASE_EV_CORRECTION_2                               26
149 #define PROPCASE_ORIENTATION_SENSOR                    37
[434]150 #define PROPCASE_DIGITAL_ZOOM_STATE                            58
151 #define PROPCASE_DIGITAL_ZOOM_POSITION                         57
[437]152 #define PROPCASE_DISPLAY_MODE                         181
153 #define PROPCASE_BRACKET_MODE                         36 //missing for dryos!
[324]154#else
155 #error unknown camera processor
[304]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
[316]172/* Keyboard repeat and initial delays */
173#define KBD_REPEAT_DELAY  140
174#define KBD_INITIAL_DELAY 300
175
[434]176// Video recording current status constants, see movie_status variable
[427]177#define VIDEO_RECORD_NEVER_STARTED 0 
178#define VIDEO_RECORD_STOPPED 1 
179#define VIDEO_RECORD_IN_PROGRESS 4
180
[434]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
[304]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
[349]272    int b; //average scene luminance
[304]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();
[416]303long get_exposure_counter();
[304]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();
[453]320long kbd_use_up_down_left_right_as_fast_switch();
[304]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();
[388]327long vid_get_bitmap_screen_width();
328long vid_get_bitmap_screen_height();
329long vid_get_bitmap_buffer_width();
330long vid_get_bitmap_buffer_height();
[304]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();
[349]361int shooting_is_flash();
[304]362int shooting_is_flash_ready();
[353]363short shooting_get_flash_mode();
[304]364
[349]365
[304]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();
[307]378const char * shooting_get_tv_override_value();
[304]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();
[349]450int shooting_get_luminance();
[304]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();
[461]474int get_ccd_temp();
475int get_optical_temp();
476int get_battery_temp();
[304]477long get_vbatt_min();
478long get_vbatt_max();
[479]479void play_sound(unsigned sound);
[304]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();
[303]486void camera_shutdown_in_a_second(void);
[304]487
[416]488extern int shot_histogram_enabled;
489
[304]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
[427]507extern int movie_status;
[457]508unsigned int movie_reset;
[304]509unsigned int GetFreeCardSpaceKb(void);
510unsigned int GetTotalCardSpaceKb(void);
511
[473]512
513
[304]514void swap_partitions(void);
515int get_part_count(void);
516void create_partitions(void);
[307]517extern char * camera_jpeg_count_str();
[304]518
[331]519unsigned int GetJpgCount(void);
520unsigned int GetRawCount(void);
521
[427]522void MakeAFScan(void);
523extern int movie_status;
[434]524extern int zoom_status;
[473]525void EnterToCompensationEVF(void);
526void ExitFromCompensationEVF(void);
[427]527
[416]528void wait_until_remote_button_is_released(void);
[447]529short shooting_get_ev_correction1();
[331]530
[514]531
532int get_ev_video_avail(void);
533void set_ev_video_avail(int);
534int get_ev_video(void);
535void set_ev_video(int);
536
[304]537#define started() debug_led(1)
538#define finished() debug_led(0)
539
540#endif
Note: See TracBrowser for help on using the repository browser.