source: trunk/include/platform.h @ 590

Revision 590, 14.5 KB checked in by EWAVR, 4 years ago (diff)

+ added initial DNG support
+ added rear curtain flash sync for a570 & sx100is

  • Property svn:eol-style set to native
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 #include "propset2.h"
91#elif CAM_PROPSET == 1   // most digic2 cameras
92 #include "propset1.h"
93#else
94 #error unknown camera processor
95#endif
96
97
98#define MAX_DIST 65535
99
100//********************
101//char * get_debug();
102//********************
103
104#define MODE_SCREEN_MASK        0x0C00
105#define MODE_SCREEN_OPENED      0x0400
106#define MODE_SCREEN_ROTATED     0x0800
107#define AS_SIZE (sizeof(aperture_sizes_table)/sizeof(aperture_sizes_table[0]))
108#define ASID_MIN (aperture_sizes_table[0].id)
109#define ASID_MAX (aperture_sizes_table[AS_SIZE-1].id)
110
111/* Keyboard repeat and initial delays */
112#define KBD_REPEAT_DELAY  140
113#define KBD_INITIAL_DELAY 300
114
115// Video recording current status constants, see movie_status variable
116#define VIDEO_RECORD_NEVER_STARTED 0 
117#define VIDEO_RECORD_STOPPED 1 
118#define VIDEO_RECORD_IN_PROGRESS 4
119
120//Optical & digital zoom status constants, see zoom_status variable
121#define ZOOM_OPTICAL_MIN         1
122#define ZOOM_OPTICAL_MAX         2
123#define ZOOM_OPTICAL_MEDIUM      3
124#define ZOOM_OPTICAL_IN          4
125#define ZOOM_OPTICAL_OUT         5
126#define ZOOM_OPTICAL_REACHED_MIN 7
127
128#define ZOOM_DIGITAL_MAX         9
129#define ZOOM_DIGITAL_MEDIUM      10
130#define ZOOM_DIGITAL_IN          11
131#define ZOOM_DIGITAL_OUT         12
132#define ZOOM_DIGITAL_REACHED_MAX 13
133
134typedef struct {
135    short id; // hacks id
136    short prop_id; // Canons id
137    char name[8];
138    short shutter_dfs_value; // shutter speed to use dark frame substraction
139} ISOTable;
140
141typedef struct {
142    short id; // hacks id
143    short prop_id; // Canons id
144    char name[8];
145    long usec;
146} ShutterSpeed;
147
148typedef struct {
149    short id; // hacks id
150    short prop_id; // Canons id
151    char name[8];
152} ApertureSize;
153
154typedef struct {
155    short av96;
156    short dav96;
157    short av96_step;
158    short tv96;
159    short dtv96;
160    short tv96_step;
161    short sv96;
162    short dsv96;
163    short sv96_step;
164    short iso;
165    short diso;
166    short iso_step;
167    short subj_dist;
168    short dsubj_dist;
169    short subj_dist_step;
170    short shoot_counter;
171    short type;
172} EXPO_BRACKETING_VALUES;
173
174#define SET_NOW      1
175#define SET_LATER    0
176
177#define SHOW_ALWAYS    1
178#define SHOW_HALF      2
179
180
181typedef struct {
182    short av96;
183    short tv96;
184    short sv96;
185    short subj_dist;
186    short nd_filter;
187} PHOTO_PARAM;
188
189typedef struct {
190    int    subject_distance;
191    int     near_limit;
192    int     far_limit;
193    int     hyperfocal_distance;
194    int     depth_of_field;
195    int     lens_to_focal_plane_width;
196} DOF_TYPE;
197
198typedef struct {
199    short av96;
200    short tv96;
201    short sv96;
202    short iso;
203    short sv96_market;
204    short iso_market;
205    short bv96_measured;
206    short bv96_seted;//Ev96_internal-Sv96
207    short ev96_seted; //Tv96+Av96
208    short ev96_measured; //Bv96+Sv96
209    short dev96;// Ev96_external-Ev96_internal
210    short dev96_canon;// Canon OverExposure
211    int b; //average scene luminance
212} EXPO_TYPE;
213
214typedef struct {
215    float value;
216    char fraction[10];
217} shutter_speed;
218
219
220/******************************************************************/
221
222int get_focal_length(int zp);
223int get_effective_focal_length(int zp);
224int get_zoom_x(int zp);
225
226/******************************************************************/
227
228long get_tick_count();
229
230void remount_filesystem();
231void mark_filesystem_bootable();
232
233/******************************************************************/
234
235long get_parameter_data(long id, void *buf, long bufsize);
236long set_parameter_data(long id, void *buf, long bufsize);
237
238long get_property_case(long id, void *buf, long bufsize);
239long set_property_case(long id, void *buf, long bufsize);
240
241long get_file_counter();
242long get_exposure_counter();
243long get_file_next_counter();
244long get_target_dir_num();
245long get_target_file_num();
246
247/******************************************************************/
248
249void kbd_key_press(long key);
250void kbd_key_release(long key);
251void kbd_key_release_all();
252long kbd_is_key_pressed(long key);
253long kbd_is_key_clicked(long key);
254long kbd_get_pressed_key();
255long kbd_get_clicked_key();
256long kbd_get_autoclicked_key();
257void kbd_reset_autoclicked_key();
258long kbd_use_zoom_as_mf();
259long kbd_use_up_down_left_right_as_fast_switch();
260void kbd_set_alt_mode_key_mask(long key);
261int get_usb_power(int edge);
262long get_jogdial_direction(void);
263/******************************************************************/
264
265long vid_is_bitmap_shown();
266void *vid_get_bitmap_fb();
267long vid_get_bitmap_screen_width();
268long vid_get_bitmap_screen_height();
269long vid_get_bitmap_buffer_width();
270long vid_get_bitmap_buffer_height();
271void *vid_get_viewport_fb();
272void *vid_get_viewport_fb_d();
273void *vid_get_viewport_live_fb();
274void vid_bitmap_refresh();
275long vid_get_viewport_height();
276
277/******************************************************************/
278
279void *hook_raw_fptr();
280void *hook_raw_ret_addr();
281char *hook_raw_image_addr();
282long hook_raw_size();
283void hook_raw_install();
284void hook_raw_save_complete();
285
286/******************************************************************/
287
288long lens_get_zoom_pos();
289void lens_set_zoom_pos(long newpos);
290long lens_get_zoom_point();
291void lens_set_zoom_point(long newpt);
292void lens_set_zoom_speed(long newspd); //for S-series
293long lens_get_focus_pos();
294long lens_get_focus_pos_from_lense();
295void lens_set_focus_pos(long newpos);
296long lens_get_target_distance();
297
298/******************************************************************/
299
300int shooting_in_progress();
301int shooting_is_flash();
302int shooting_is_flash_ready();
303short shooting_get_flash_mode();
304
305
306/******************************************************************/
307int shooting_get_user_tv_id();
308char* shooting_get_tv_str();
309short shooting_get_tv96_from_shutter_speed(float t);
310short shooting_get_tv96();
311void shooting_set_tv96(short v, short is_now);
312void shooting_set_tv96_direct(short v, short is_now);
313void shooting_set_shutter_speed_ubasic(int t, short is_now);
314short shooting_get_user_tv96();
315void shooting_set_user_tv96(short v);
316float shooting_get_shutter_speed_from_tv96(short tv);
317float shooting_get_shutter_speed_override_value();
318const char * shooting_get_tv_override_value();
319const char * shooting_get_tv_bracket_value();
320const char * shooting_get_bracket_type();
321void shooting_set_user_tv_by_id(int v);
322void shooting_set_user_tv_by_id_rel(int v);
323const ShutterSpeed *shooting_get_tv_line();
324/******************************************************************/
325short shooting_get_aperture_sizes_table_size();
326short shooting_get_aperture_sizes_table_prop_id(short i);
327short shooting_get_max_aperture_sizes_table_prop_id();
328short shooting_get_aperture_from_av96(short av96);
329int shooting_get_user_av_id();
330char* shooting_get_av_str();
331void shooting_set_user_av_by_id(int v);
332short shooting_get_av96();
333void shooting_set_av96(short v,short is_now);
334void shooting_set_av96_direct(short v, short is_now);
335short shooting_get_user_av96();
336void shooting_set_user_av96(short v);
337void shooting_set_user_av_by_id_rel(int v);
338short shooting_get_real_aperture();
339short shooting_get_min_real_aperture();
340short shooting_get_av96_override_value();
341const char * shooting_get_av_bracket_value();
342void shooting_set_nd_filter_state(short v, short is_now);
343/******************************************************************/
344int shooting_get_day_seconds();
345int shooting_get_tick_count();
346/******************************************************************/
347void shooting_set_prop(int id, int v);
348int shooting_get_prop(int id);
349/******************************************************************/
350extern int circle_of_confusion;
351/******************************************************************/
352extern const int zoom_points;
353int shooting_get_zoom();
354void shooting_set_zoom(int v);
355void shooting_set_zoom_rel(int v);
356void shooting_set_zoom_speed(int v);
357/******************************************************************/
358int shooting_get_focus();
359void shooting_set_focus(int v, short is_now);
360short shooting_get_focus_mode();
361int shooting_get_hyperfocal_distance();
362int shooting_get_hyperfocal_distance_f(int av, int fl);
363int shooting_get_near_limit_of_acceptable_sharpness();
364int shooting_get_far_limit_of_acceptable_sharpness();
365int shooting_get_depth_of_field();
366int shooting_get_subject_distance();
367int shooting_get_subject_distance_override_value();
368int shooting_get_subject_distance_bracket_value();
369int shooting_get_subject_distance_override_koef();
370int shooting_get_lens_to_focal_plane_width();
371short shooting_get_drive_mode();
372short shooting_can_focus();
373short shooting_get_common_focus_mode();
374/******************************************************************/
375int shooting_get_iso_mode();
376void shooting_set_iso_mode(int v);
377short shooting_get_sv96();
378short shooting_get_svm96();
379short shooting_get_iso_market();
380short shooting_get_iso_real();
381void shooting_set_iso_real(short iso, short is_now);
382//void shooting_set_iso_market(short isom);
383//void shooting_set_iso_real_delta_from_base(short diso);
384void shooting_set_sv96(short sv96, short is_now);
385short shooting_get_iso_override_value();
386short shooting_get_iso_bracket_value();
387/******************************************************************/
388short shooting_get_canon_overexposure_value();
389short shooting_get_bv96();
390int shooting_get_luminance();
391//const char* shooting_get_flash_light_value();
392/******************************************************************/
393int shooting_get_canon_subject_distance();
394int shooting_get_exif_subject_dist();
395/******************************************************************/
396void shooting_expo_param_override();
397void shooting_bracketing(void);
398
399void shooting_video_bitrate_change(int v);
400extern int auto_started;
401void shooting_tv_bracketing();
402void shooting_av_bracketing();
403void shooting_iso_bracketing();
404/******************************************************************/
405void clear_values();
406/******************************************************************/
407
408
409int mode_get();
410
411/******************************************************************/
412
413long stat_get_vbatt();
414int get_ccd_temp();
415int get_optical_temp();
416int get_battery_temp();
417long get_vbatt_min();
418long get_vbatt_max();
419void play_sound(unsigned sound);
420void ubasic_camera_set_raw(int mode);
421void ubasic_camera_set_nr(int mode);
422int ubasic_camera_get_nr();
423int ubasic_camera_script_autostart();
424void ubasic_camera_set_script_autostart();
425void exit_alt();
426void camera_shutdown_in_a_second(void);
427
428extern int shot_histogram_enabled;
429
430void disable_shutdown();
431void enable_shutdown();
432
433void JogDial_CW(void);
434void JogDial_CCW(void);
435void change_video_tables(int a, int b);
436int get_flash_params_count(void);
437
438/******************************************************************/
439void __attribute__((noreturn)) shutdown();
440void ubasic_set_led(int led, int state, int bright);
441void debug_led(int state);
442/****************************************/
443extern int canon_menu_active; 
444extern char canon_shoot_menu_active; 
445extern int recreview_hold;
446
447extern int movie_status;
448unsigned int movie_reset;
449unsigned int GetFreeCardSpaceKb(void);
450unsigned int GetTotalCardSpaceKb(void);
451
452
453
454void swap_partitions(void);
455int get_part_count(void);
456void create_partitions(void);
457extern char * camera_jpeg_count_str();
458
459unsigned int GetJpgCount(void);
460unsigned int GetRawCount(void);
461
462void MakeAFScan(void);
463extern int movie_status;
464extern int zoom_status;
465void EnterToCompensationEVF(void);
466void ExitFromCompensationEVF(void);
467
468void wait_until_remote_button_is_released(void);
469short shooting_get_ev_correction1();
470
471
472int get_ev_video_avail(void);
473void set_ev_video_avail(int);
474int get_ev_video(void);
475void set_ev_video(int);
476
477void reverse_bytes_order(char* start, int count);
478
479#define started() debug_led(1)
480#define finished() debug_led(0)
481
482#endif
Note: See TracBrowser for help on using the repository browser.