source: trunk/include/platform.h @ 304

Revision 304, 13.0 KB checked in by Allbest, 5 years ago (diff)

+Added ability to set ND-filter for next set of cameras a560, a570, g7, ixus700_sd500, ixus70_sd1000, ixus800_sd700, a710 (deeply tested for Ixus800_sd700).This ability replaces aperture override menu entry for Ixus and a560 camera set. For all others from above-mentioned cameras it is an experimental feature. New menu entry: "Extra Photo Operations->ND filter state" for this set of cameras
+Added new basic command "set_nd_filter". It can be executed with next set of parameters: 0-> off, 1->ND filter In, 2 -> ND filter Out. This command works for above-mentioned set of cameras
+EWAVR: Added ability to draw grids for histogram with corresponding key (""Histogram->Show Histo Ev Grid")
+Pseudo MF-mode for IXUS and a560 model set (thanks to nirschi!) was improved

To enter to this mode necessary to use KEY_UP key in ALT-mode. Now all changes of focus distance is reflected in misc. values (or in DOF-calculator view)

+It was took into account that IXUS camera set has no aperture (except due to focal length changes)
+Changed hot keys to set focus to infinity and to hyperfocal distance (in aims of optimization for IXUSES pseudo manual focus mode and ability to set raw mode when in ALT mode and MF mode):

Now they are:

ixus700_sd500 ixus800_sd700 a560 ixus850_sd800 ixus70_sd1000:
Alt mode & Manual mode

SHORTCUT_SET_INFINITY KEY_DISPLAY
SHORTCUT_SET_HYPERFOCAL KEY_DOWN

g7
Alt mode & Manual mode

SHORTCUT_SET_INFINITY KEY_UP
SHORTCUT_SET_HYPERFOCAL KEY_DOWN

all others
Alt mode & Manual mode

SHORTCUT_SET_INFINITY KEY_UP
SHORTCUT_SET_HYPERFOCAL KEY_DOWN

+MX3+fudgey: motion detection optimization was implemented: http://chdk.setepontos.com/index.php/topic,405.msg4128.html#msg4128
+Idea of Jucifer: Increased number of used-definable parameters in script to 26
Fixed: I hope that correct value of av will be displayed in miscellaneous values for ixus70_sd1000 ixus700_sd500 now
Fixed: Set to Hyperfocal now works correctly in Av and M modes
Fixed: Basic command get_user_av96 returns correct value now

Line 
1#ifndef PLATFORM_H
2#define PLATFORM_H
3
4#define SSID_INVALID (-32767)
5#define ASID_INVALID (-32767)
6
7#define MODE_MASK               0x0300
8#define MODE_REC                0x0100
9#define MODE_PLAY               0x0200
10
11#define MODE_SHOOTING_MASK      0x00FF
12
13enum {
14MODE_AUTO               =1,
15MODE_P                  ,
16MODE_TV                 ,
17MODE_AV                 ,
18MODE_M                  ,
19MODE_PORTRAIT           ,
20MODE_NIGHT              ,
21MODE_LANDSCAPE          ,
22MODE_VIDEO_STD          ,
23MODE_VIDEO_SPEED        ,
24MODE_VIDEO_COMPACT      ,
25MODE_VIDEO_MY_COLORS    ,
26MODE_VIDEO_COLOR_ACCENT ,
27MODE_STITCH             ,
28MODE_MY_COLORS          ,
29MODE_SCN_WATER          ,
30MODE_SCN_NIGHT          ,
31MODE_SCN_CHILD          ,
32MODE_SCN_PARTY          ,
33MODE_SCN_GRASS          ,
34MODE_SCN_SNOW           ,
35MODE_SCN_BEACH          ,
36MODE_SCN_FIREWORK       ,
37MODE_SCN_COLOR_ACCENT   ,
38MODE_VIDEO_HIRES        ,
39MODE_SCN_AQUARIUM       ,
40MODE_COLOR_ACCENT       ,
41MODE_SCN_NIGHT1         ,
42MODE_SCN_ISO_3200       ,
43MODE_SCN_SPORT          ,
44MODE_SCN_KIDS_PETS      ,
45MODE_INDOOR             ,
46MODE_KIDS_PETS          ,
47MODE_NIGHT_SNAPSHOT     ,
48MODE_DIGITAL_MACRO      ,
49MODE_SCN_FOLIAGE        ,
50MODE_VIDEO_TIME_LAPSE   ,
51MODE_SCN_INDOOR         ,
52};
53
54#if defined(CAMERA_a570) || defined(CAMERA_a560) || defined(CAMERA_a720) || defined(CAMERA_ixus70_sd1000) || defined(CAMERA_a650)
55 #define PROPCASE_DRIVE_MODE                                    102
56 #define PROPCASE_FOCUS_MODE                                    133
57 #define PROPCASE_FLASH_MODE                            143
58 #define PROPCASE_USER_TV                                       264
59 #define PROPCASE_TV                                            262
60 #define PROPCASE_USER_AV                                       26
61 #define PROPCASE_AV                                            23
62 #define PROPCASE_MIN_AV                                        25
63 #define PROPCASE_SV                                            247
64 #define PROPCASE_DELTA_SV                                      79
65 #define PROPCASE_SV_MARKET                                     246
66 #define PROPCASE_BV                                            34
67 #define PROPCASE_SUBJECT_DIST1                                 245
68 #define PROPCASE_SUBJECT_DIST2                                 65
69 #define PROPCASE_ISO_MODE                                      149
70 #define PROPCASE_SHOOTING                                      206
71 #define PROPCASE_IS_FLASH_READY                        208
72 #define PROPCASE_OVEREXPOSURE                                  103
73 #define PROPCASE_SHOOTING_MODE                                 49
74
75#else
76 #define PROPCASE_DRIVE_MODE                                    6
77 #define PROPCASE_FOCUS_MODE                                    12
78 #define PROPCASE_FLASH_MODE                                    16
79 #define PROPCASE_USER_TV                                       40
80 #define PROPCASE_TV                                            69
81 #define PROPCASE_USER_AV                                       39
82 #define PROPCASE_AV                                            68
83 #define PROPCASE_MIN_AV                                        77
84 #define PROPCASE_SV                                            73
85 #define PROPCASE_DELTA_SV                                      70
86 #define PROPCASE_SV_MARKET                                     72
87 #define PROPCASE_BV                                            71
88 #define PROPCASE_ISO_MODE                                      21
89 #define PROPCASE_SUBJECT_DIST1                                 65
90 #define PROPCASE_SUBJECT_DIST2                                 66
91 #define PROPCASE_SHOOTING                                      205
92 #define PROPCASE_IS_FLASH_READY                                221
93 #define PROPCASE_OVEREXPOSURE                                  76
94 #define PROPCASE_SHOOTING_MODE                                 0
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
108#define AS_SIZE (sizeof(aperture_sizes_table)/sizeof(aperture_sizes_table[0]))
109#define ASID_MIN (aperture_sizes_table[0].id)
110#define ASID_MAX (aperture_sizes_table[AS_SIZE-1].id)
111
112#if defined (CAMERA_g7) || defined (CAMERA_a710) || defined (CAMERA_s3is) || defined (CAMERA_a630) || defined (CAMERA_a640)
113#define CAMERA_MULTIPART
114#endif
115
116typedef struct {
117    short id; // hacks id
118    short prop_id; // Canons id
119    char name[8];
120    short shutter_dfs_value; // shutter speed to use dark frame substraction
121} ISOTable;
122
123typedef struct {
124    short id; // hacks id
125    short prop_id; // Canons id
126    char name[8];
127    long usec;
128} ShutterSpeed;
129
130typedef struct {
131    short id; // hacks id
132    short prop_id; // Canons id
133    char name[8];
134} ApertureSize;
135
136typedef struct {
137    short av96;
138    short dav96;
139    short av96_step;
140    short tv96;
141    short dtv96;
142    short tv96_step;
143    short sv96;
144    short dsv96;
145    short sv96_step;
146    short iso;
147    short diso;
148    short iso_step;
149    short subj_dist;
150    short dsubj_dist;
151    short subj_dist_step;
152    short shoot_counter;
153    short type;
154} EXPO_BRACKETING_VALUES;
155
156#define SET_NOW      1
157#define SET_LATER    0
158
159#define SHOW_ALWAYS    1
160#define SHOW_HALF      2
161
162
163typedef struct {
164    short av96;
165    short tv96;
166    short sv96;
167    short subj_dist;
168    short nd_filter;
169} PHOTO_PARAM;
170
171typedef struct {
172    int    subject_distance;
173    int     near_limit;
174    int     far_limit;
175    int     hyperfocal_distance;
176    int     depth_of_field;
177    int     lens_to_focal_plane_width;
178} DOF_TYPE;
179
180typedef struct {
181    short av96;
182    short tv96;
183    short sv96;
184    short iso;
185    short sv96_market;
186    short iso_market;
187    short bv96_measured;
188    short bv96_seted;//Ev96_internal-Sv96
189    short ev96_seted; //Tv96+Av96
190    short ev96_measured; //Bv96+Sv96
191    short dev96;// Ev96_external-Ev96_internal
192    short dev96_canon;// Canon OverExposure
193    short b; //average scene luminance
194} EXPO_TYPE;
195
196typedef struct {
197    float value;
198    char fraction[10];
199} shutter_speed;
200
201
202/******************************************************************/
203
204int get_focal_length(int zp);
205int get_effective_focal_length(int zp);
206int get_zoom_x(int zp);
207
208/******************************************************************/
209
210long get_tick_count();
211
212void remount_filesystem();
213void mark_filesystem_bootable();
214
215/******************************************************************/
216
217long get_parameter_data(long id, void *buf, long bufsize);
218long set_parameter_data(long id, void *buf, long bufsize);
219
220long get_property_case(long id, void *buf, long bufsize);
221long set_property_case(long id, void *buf, long bufsize);
222
223long get_file_counter();
224long get_file_next_counter();
225long get_target_dir_num();
226long get_target_file_num();
227
228/******************************************************************/
229
230void kbd_key_press(long key);
231void kbd_key_release(long key);
232void kbd_key_release_all();
233long kbd_is_key_pressed(long key);
234long kbd_is_key_clicked(long key);
235long kbd_get_pressed_key();
236long kbd_get_clicked_key();
237long kbd_get_autoclicked_key();
238void kbd_reset_autoclicked_key();
239long kbd_use_zoom_as_mf();
240void kbd_set_alt_mode_key_mask(long key);
241int get_usb_power(int edge);
242/******************************************************************/
243
244long vid_is_bitmap_shown();
245void *vid_get_bitmap_fb();
246long vid_get_bitmap_width();
247long vid_get_bitmap_height();
248void *vid_get_viewport_fb();
249void *vid_get_viewport_fb_d();
250void *vid_get_viewport_live_fb();
251void vid_bitmap_refresh();
252long vid_get_viewport_height();
253
254/******************************************************************/
255
256void *hook_raw_fptr();
257void *hook_raw_ret_addr();
258char *hook_raw_image_addr();
259long hook_raw_size();
260void hook_raw_install();
261void hook_raw_save_complete();
262
263/******************************************************************/
264
265long lens_get_zoom_pos();
266void lens_set_zoom_pos(long newpos);
267long lens_get_zoom_point();
268void lens_set_zoom_point(long newpt);
269void lens_set_zoom_speed(long newspd); //for S-series
270long lens_get_focus_pos();
271long lens_get_focus_pos_from_lense();
272void lens_set_focus_pos(long newpos);
273long lens_get_target_distance();
274
275/******************************************************************/
276
277int shooting_in_progress();
278int shooting_is_flash_ready();
279
280/******************************************************************/
281int shooting_get_user_tv_id();
282char* shooting_get_tv_str();
283short shooting_get_tv96_from_shutter_speed(float t);
284short shooting_get_tv96();
285void shooting_set_tv96(short v, short is_now);
286void shooting_set_tv96_direct(short v, short is_now);
287void shooting_set_shutter_speed_ubasic(int t, short is_now);
288short shooting_get_user_tv96();
289void shooting_set_user_tv96(short v);
290float shooting_get_shutter_speed_from_tv96(short tv);
291float shooting_get_shutter_speed_override_value();
292const char * shooting_get_tv_bracket_value();
293const char * shooting_get_bracket_type();
294void shooting_set_user_tv_by_id(int v);
295void shooting_set_user_tv_by_id_rel(int v);
296const ShutterSpeed *shooting_get_tv_line();
297/******************************************************************/
298short shooting_get_aperture_sizes_table_size();
299short shooting_get_aperture_sizes_table_prop_id(short i);
300short shooting_get_max_aperture_sizes_table_prop_id();
301short shooting_get_aperture_from_av96(short av96);
302int shooting_get_user_av_id();
303char* shooting_get_av_str();
304void shooting_set_user_av_by_id(int v);
305short shooting_get_av96();
306void shooting_set_av96(short v,short is_now);
307void shooting_set_av96_direct(short v, short is_now);
308short shooting_get_user_av96();
309void shooting_set_user_av96(short v);
310void shooting_set_user_av_by_id_rel(int v);
311short shooting_get_real_aperture();
312short shooting_get_min_real_aperture();
313short shooting_get_av96_override_value();
314const char * shooting_get_av_bracket_value();
315void shooting_set_nd_filter_state(short v, short is_now);
316/******************************************************************/
317int shooting_get_day_seconds();
318int shooting_get_tick_count();
319/******************************************************************/
320void shooting_set_prop(int id, int v);
321int shooting_get_prop(int id);
322/******************************************************************/
323extern int circle_of_confusion;
324/******************************************************************/
325extern const int zoom_points;
326int shooting_get_zoom();
327void shooting_set_zoom(int v);
328void shooting_set_zoom_rel(int v);
329void shooting_set_zoom_speed(int v);
330/******************************************************************/
331int shooting_get_focus();
332void shooting_set_focus(int v, short is_now);
333short shooting_get_focus_mode();
334int shooting_get_hyperfocal_distance();
335int shooting_get_hyperfocal_distance_f(int av, int fl);
336int shooting_get_near_limit_of_acceptable_sharpness();
337int shooting_get_far_limit_of_acceptable_sharpness();
338int shooting_get_depth_of_field();
339int shooting_get_subject_distance();
340int shooting_get_subject_distance_override_value();
341int shooting_get_subject_distance_bracket_value();
342int shooting_get_subject_distance_override_koef();
343int shooting_get_lens_to_focal_plane_width();
344short shooting_get_drive_mode();
345short shooting_can_focus();
346short shooting_get_common_focus_mode();
347/******************************************************************/
348int shooting_get_iso_mode();
349void shooting_set_iso_mode(int v);
350short shooting_get_sv96();
351short shooting_get_svm96();
352short shooting_get_iso_market();
353short shooting_get_iso_real();
354void shooting_set_iso_real(short iso, short is_now);
355//void shooting_set_iso_market(short isom);
356//void shooting_set_iso_real_delta_from_base(short diso);
357void shooting_set_sv96(short sv96, short is_now);
358short shooting_get_iso_override_value();
359short shooting_get_iso_bracket_value();
360/******************************************************************/
361short shooting_get_canon_overexposure_value();
362short shooting_get_bv96();
363short shooting_get_luminance();
364//const char* shooting_get_flash_light_value();
365/******************************************************************/
366int shooting_get_canon_subject_distance();
367int shooting_get_exif_subject_dist();
368/******************************************************************/
369void shooting_expo_param_override();
370void shooting_bracketing(void);
371
372void shooting_video_bitrate_change(int v);
373extern int auto_started;
374void shooting_tv_bracketing();
375void shooting_av_bracketing();
376void shooting_iso_bracketing();
377/******************************************************************/
378void clear_values();
379/******************************************************************/
380
381
382int mode_get();
383
384/******************************************************************/
385
386long stat_get_vbatt();
387long get_vbatt_min();
388long get_vbatt_max();
389void ubasic_camera_set_raw(int mode);
390void ubasic_camera_set_nr(int mode);
391int ubasic_camera_get_nr();
392int ubasic_camera_script_autostart();
393void ubasic_camera_set_script_autostart();
394void exit_alt();
395void camera_shutdown_in_a_second(void);
396
397void disable_shutdown();
398void enable_shutdown();
399
400void JogDial_CW(void);
401void JogDial_CCW(void);
402void change_video_tables(int a, int b);
403int get_flash_params_count(void);
404
405/******************************************************************/
406void __attribute__((noreturn)) shutdown();
407void ubasic_set_led(int led, int state, int bright);
408void debug_led(int state);
409/****************************************/
410extern int canon_menu_active; 
411extern char canon_shoot_menu_active; 
412extern int recreview_hold;
413
414unsigned int GetFreeCardSpaceKb(void);
415unsigned int GetTotalCardSpaceKb(void);
416
417void swap_partitions(void);
418int get_part_count(void);
419void create_partitions(void);
420
421#define started() debug_led(1)
422#define finished() debug_led(0)
423
424#endif
Note: See TracBrowser for help on using the repository browser.