source: trunk/include/platform.h @ 864

Revision 864, 15.5 KB checked in by reyalp, 3 years ago (diff)
  • 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
15/* capture mode constants. These are in their own header for easier sed processing*/
16#include "modelist.h"
17
18// this is nasty, but not as nasty as checking each of the flags all over the place
19#define MODE_IS_VIDEO(m)   (((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STD || \
20                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SPEED ||  \
21                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COMPACT || \
22                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MY_COLORS || \
23                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_ACCENT || \
24                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_COLOR_SWAP || \
25                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_TIME_LAPSE || \
26                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_PORTRAIT || \
27                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_NIGHT || \
28                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_INDOOR || \
29                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_FOLIAGE || \
30                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SNOW  || \
31                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_BEACH || \
32                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_AQUARIUM || \
33                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_SUPER_MACRO || \
34                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_STITCH || \
35                            ((m)&MODE_SHOOTING_MASK)==MODE_VIDEO_MANUAL)
36/* propcase ID constants. These are in their own header files for easier sed processing */
37#if CAM_PROPSET == 2     // most digic3 cameras
38 #include "propset2.h"
39#elif CAM_PROPSET == 1   // most digic2 cameras
40 #include "propset1.h"
41#else
42 #error unknown camera processor
43#endif
44
45
46#define MAX_DIST 65535
47
48//********************
49//char * get_debug();
50//********************
51
52#define MODE_SCREEN_MASK        0x0C00
53#define MODE_SCREEN_OPENED      0x0400
54#define MODE_SCREEN_ROTATED     0x0800
55#define AS_SIZE (sizeof(aperture_sizes_table)/sizeof(aperture_sizes_table[0]))
56#define ASID_MIN (aperture_sizes_table[0].id)
57#define ASID_MAX (aperture_sizes_table[AS_SIZE-1].id)
58
59/* Keyboard repeat and initial delays */
60#define KBD_REPEAT_DELAY  140
61#define KBD_INITIAL_DELAY 300
62
63// Video recording current status constants, see movie_status variable
64#define VIDEO_RECORD_NEVER_STARTED 0 
65#define VIDEO_RECORD_STOPPED 1 
66#define VIDEO_RECORD_IN_PROGRESS 4
67
68//Optical & digital zoom status constants, see zoom_status variable
69#define ZOOM_OPTICAL_MIN         1
70#define ZOOM_OPTICAL_MAX         2
71#define ZOOM_OPTICAL_MEDIUM      3
72#define ZOOM_OPTICAL_IN          4
73#define ZOOM_OPTICAL_OUT         5
74#define ZOOM_OPTICAL_REACHED_MIN 7
75
76#define ZOOM_DIGITAL_MAX         9
77#define ZOOM_DIGITAL_MEDIUM      10
78#define ZOOM_DIGITAL_IN          11
79#define ZOOM_DIGITAL_OUT         12
80#define ZOOM_DIGITAL_REACHED_MAX 13
81
82typedef struct {
83        int hackmode; // platform independent mode values from MODE_xxx enum
84        int canonmode; // PROPCASE_SHOOTING_MODE value
85} CapturemodeMap;
86
87typedef struct {
88    short id; // hacks id
89    short prop_id; // Canons id
90    char name[8];
91    short shutter_dfs_value; // shutter speed to use dark frame substraction
92} ISOTable;
93
94typedef struct {
95    short id; // hacks id
96    short prop_id; // Canons id
97    char name[8];
98    long usec;
99} ShutterSpeed;
100
101typedef struct {
102    short id; // hacks id
103    short prop_id; // Canons id
104    char name[8];
105} ApertureSize;
106
107typedef struct {
108    short av96;
109    short dav96;
110    short av96_step;
111    short tv96;
112    short dtv96;
113    short tv96_step;
114    short sv96;
115    short dsv96;
116    short sv96_step;
117    short iso;
118    short diso;
119    short iso_step;
120    short subj_dist;
121    short dsubj_dist;
122    short subj_dist_step;
123    short shoot_counter;
124    short type;
125} EXPO_BRACKETING_VALUES;
126
127#define SET_NOW      1
128#define SET_LATER    0
129
130#define SHOW_ALWAYS    1
131#define SHOW_HALF      2
132
133
134typedef struct {
135    short av96;
136    short tv96;
137    short sv96;
138    short subj_dist;
139    short nd_filter;
140} PHOTO_PARAM;
141
142typedef struct {
143    int    subject_distance;
144    int     near_limit;
145    int     far_limit;
146    int     hyperfocal_distance;
147    int     depth_of_field;
148    int     lens_to_focal_plane_width;
149} DOF_TYPE;
150
151typedef struct {
152    short av96;
153    short tv96;
154    short sv96;
155    short iso;
156    short sv96_market;
157    short iso_market;
158    short bv96_measured;
159    short bv96_seted;//Ev96_internal-Sv96
160    short ev96_seted; //Tv96+Av96
161    short ev96_measured; //Bv96+Sv96
162    short dev96;// Ev96_external-Ev96_internal
163    short dev96_canon;// Canon OverExposure
164    int b; //average scene luminance
165} EXPO_TYPE;
166
167typedef struct {
168    float value;
169    char fraction[10];
170} shutter_speed;
171
172
173/******************************************************************/
174
175int get_focal_length(int zp);
176int get_effective_focal_length(int zp);
177int get_zoom_x(int zp);
178
179/******************************************************************/
180
181long get_tick_count();
182
183void remount_filesystem();
184void mark_filesystem_bootable();
185
186/******************************************************************/
187
188long get_parameter_data(long id, void *buf, long bufsize);
189long set_parameter_data(long id, void *buf, long bufsize);
190
191long get_property_case(long id, void *buf, long bufsize);
192long set_property_case(long id, void *buf, long bufsize);
193
194long get_file_counter();
195long get_exposure_counter();
196long get_file_next_counter();
197long get_target_dir_num();
198long get_target_file_num();
199
200/******************************************************************/
201
202void kbd_key_press(long key);
203void kbd_key_release(long key);
204void kbd_key_release_all();
205long kbd_is_key_pressed(long key);
206long kbd_is_key_clicked(long key);
207long kbd_get_pressed_key();
208long kbd_get_clicked_key();
209long kbd_get_autoclicked_key();
210void kbd_reset_autoclicked_key();
211long kbd_use_zoom_as_mf();
212long kbd_use_up_down_left_right_as_fast_switch();
213void kbd_set_alt_mode_key_mask(long key);
214int get_usb_power(int edge);
215long get_jogdial_direction(void);
216/******************************************************************/
217
218long vid_is_bitmap_shown();
219void *vid_get_bitmap_fb();
220long vid_get_bitmap_screen_width();
221long vid_get_bitmap_screen_height();
222long vid_get_bitmap_buffer_width();
223long vid_get_bitmap_buffer_height();
224void *vid_get_viewport_fb();
225void *vid_get_viewport_fb_d();
226void *vid_get_viewport_live_fb();
227void vid_bitmap_refresh();
228long vid_get_viewport_height();
229int vid_get_viewport_width();
230void vid_turn_off_updates();
231void vid_turn_on_updates();
232
233/******************************************************************/
234
235void *hook_raw_fptr();
236void *hook_raw_ret_addr();
237char *hook_raw_image_addr();
238long hook_raw_size();
239void hook_raw_install();
240void hook_raw_save_complete();
241
242/******************************************************************/
243
244long lens_get_zoom_pos();
245void lens_set_zoom_pos(long newpos);
246long lens_get_zoom_point();
247void lens_set_zoom_point(long newpt);
248void lens_set_zoom_speed(long newspd); //for S-series
249long lens_get_focus_pos();
250long lens_get_focus_pos_from_lens();
251void lens_set_focus_pos(long newpos);
252long lens_get_target_distance();
253
254/******************************************************************/
255
256int shooting_in_progress();
257int shooting_is_flash();
258int shooting_is_flash_ready();
259short shooting_get_flash_mode();
260
261
262/******************************************************************/
263int shooting_get_user_tv_id();
264char* shooting_get_tv_str();
265short shooting_get_tv96_from_shutter_speed(float t);
266short shooting_get_tv96();
267void shooting_set_tv96(short v, short is_now);
268void shooting_set_tv96_direct(short v, short is_now);
269void shooting_set_shutter_speed_ubasic(int t, short is_now);
270short shooting_get_user_tv96();
271void shooting_set_user_tv96(short v);
272float shooting_get_shutter_speed_from_tv96(short tv);
273float shooting_get_shutter_speed_override_value();
274const char * shooting_get_tv_override_value();
275const char * shooting_get_tv_bracket_value();
276const char * shooting_get_bracket_type();
277void shooting_set_user_tv_by_id(int v);
278void shooting_set_user_tv_by_id_rel(int v);
279const ShutterSpeed *shooting_get_tv_line();
280/******************************************************************/
281short shooting_get_aperture_sizes_table_size();
282short shooting_get_aperture_sizes_table_prop_id(short i);
283short shooting_get_max_aperture_sizes_table_prop_id();
284short shooting_get_aperture_from_av96(short av96);
285int shooting_get_user_av_id();
286char* shooting_get_av_str();
287void shooting_set_user_av_by_id(int v);
288short shooting_get_av96();
289void shooting_set_av96(short v,short is_now);
290void shooting_set_av96_direct(short v, short is_now);
291short shooting_get_user_av96();
292void shooting_set_user_av96(short v);
293void shooting_set_user_av_by_id_rel(int v);
294short shooting_get_real_aperture();
295short shooting_get_min_real_aperture();
296short shooting_get_av96_override_value();
297const char * shooting_get_av_bracket_value();
298void shooting_set_nd_filter_state(short v, short is_now);
299/******************************************************************/
300int shooting_get_day_seconds();
301int shooting_get_tick_count();
302/******************************************************************/
303void shooting_set_prop(int id, int v);
304int shooting_get_prop(int id);
305/******************************************************************/
306extern int circle_of_confusion;
307/******************************************************************/
308extern const int zoom_points;
309int shooting_get_zoom();
310void shooting_set_zoom(int v);
311void shooting_set_zoom_rel(int v);
312void shooting_set_zoom_speed(int v);
313/******************************************************************/
314int shooting_get_focus();
315void shooting_set_focus(int v, short is_now);
316short shooting_get_focus_mode();
317int shooting_get_hyperfocal_distance();
318int shooting_get_hyperfocal_distance_f(int av, int fl);
319int shooting_get_near_limit_of_acceptable_sharpness();
320int shooting_get_far_limit_of_acceptable_sharpness();
321int shooting_get_depth_of_field();
322int shooting_get_subject_distance();
323int shooting_get_subject_distance_override_value();
324int shooting_get_subject_distance_bracket_value();
325int shooting_get_subject_distance_override_koef();
326int shooting_get_lens_to_focal_plane_width();
327short shooting_get_drive_mode();
328short shooting_can_focus();
329short shooting_get_common_focus_mode();
330/******************************************************************/
331int shooting_get_iso_mode();
332void shooting_set_iso_mode(int v);
333short shooting_get_sv96();
334short shooting_get_svm96();
335short shooting_get_iso_market();
336short shooting_get_iso_real();
337void shooting_set_iso_real(short iso, short is_now);
338//void shooting_set_iso_market(short isom);
339//void shooting_set_iso_real_delta_from_base(short diso);
340void shooting_set_sv96(short sv96, short is_now);
341short shooting_get_iso_override_value();
342short shooting_get_iso_bracket_value();
343/******************************************************************/
344short shooting_get_canon_overexposure_value();
345short shooting_get_bv96();
346int shooting_get_luminance();
347//const char* shooting_get_flash_light_value();
348/******************************************************************/
349int shooting_get_canon_subject_distance();
350int shooting_get_exif_subject_dist();
351/******************************************************************/
352void shooting_expo_param_override();
353void shooting_bracketing(void);
354
355void shooting_video_bitrate_change(int v);
356extern int auto_started;
357void shooting_tv_bracketing();
358void shooting_av_bracketing();
359void shooting_iso_bracketing();
360/******************************************************************/
361// capture mode functions
362// return a CHDK mode enum for a PROPCASE_SHOOTING_MODE value, or 0 if not found
363int shooting_mode_canon2chdk(int canonmode);
364// return a PROPCASE_SHOOTING_MODE value for a CHDK mode enum value, or -1 if not found. 0 is a valid mode on some cameras.
365int shooting_mode_chdk2canon(int hackmode);
366// set capture mode from CHDK mode, returns 0 if mode not found or not in rec, otherwise 1
367int shooting_set_mode_chdk(int mode);
368// set capture mode from PROPCASE_SHOOTING_MODE value. return 0 if not in rec or mode is -1, otherwise 1
369int shooting_set_mode_canon(int mode);
370
371// returns 0 if in play, nonzero if rec
372int rec_mode_active(void);
373
374// not used. Right now this is just to preserve code from earlier version of mode_get()
375// in case we want to check play/rec switch state in the future.
376// WARNING: it isn't known if all variants of this check the switch state or some other bit.
377// should return 0 is switch is in play position, non-zero otherwise
378//int rec_switch_state(void);
379
380// swivel screen state.
381#ifdef CAM_SWIVEL_SCREEN
382// 0 not open, non-zero open
383int screen_opened(void);
384// 0 not rotated, non-zero rotated
385int screen_rotated(void);
386#endif
387
388/******************************************************************/
389void clear_values();
390/******************************************************************/
391
392int mode_get();
393
394/******************************************************************/
395
396long stat_get_vbatt();
397int get_ccd_temp();
398int get_optical_temp();
399int get_battery_temp();
400long get_vbatt_min();
401long get_vbatt_max();
402void play_sound(unsigned sound);
403void ubasic_camera_set_raw(int mode);
404void ubasic_camera_set_nr(int mode);
405int ubasic_camera_get_nr();
406int ubasic_camera_script_autostart();
407void ubasic_camera_set_script_autostart();
408void exit_alt();
409void camera_shutdown_in_a_second(void);
410
411void disable_shutdown();
412void enable_shutdown();
413
414void JogDial_CW(void);
415void JogDial_CCW(void);
416void change_video_tables(int a, int b);
417int get_flash_params_count(void);
418
419/******************************************************************/
420void __attribute__((noreturn)) shutdown();
421void ubasic_set_led(int led, int state, int bright);
422void debug_led(int state);
423/****************************************/
424extern int canon_menu_active; 
425extern char canon_shoot_menu_active; 
426extern int recreview_hold;
427
428extern int movie_status;
429unsigned int movie_reset;
430unsigned int GetFreeCardSpaceKb(void);
431unsigned int GetTotalCardSpaceKb(void);
432
433
434
435void swap_partitions(void);
436int get_part_count(void);
437void create_partitions(void);
438extern char * camera_jpeg_count_str();
439
440unsigned int GetJpgCount(void);
441unsigned int GetRawCount(void);
442
443void MakeAFScan(void);
444extern int movie_status;
445extern int zoom_status;
446void EnterToCompensationEVF(void);
447void ExitFromCompensationEVF(void);
448
449void TurnOnBackLight(void);
450void TurnOffBackLight(void);
451
452void wait_until_remote_button_is_released(void);
453short shooting_get_ev_correction1();
454
455//image_quality_override
456void shooting_set_image_quality(int imq);
457
458int get_ev_video_avail(void);
459void set_ev_video_avail(int);
460int get_ev_video(void);
461void set_ev_video(int);
462//dng related
463void reverse_bytes_order(char* start, int count);
464void save_ext_for_dng(void);
465void change_ext_to_dng(void);
466void change_ext_to_default(void);
467
468void DoAFLock(void);
469void UnlockAF(void);
470
471void drv_self_hide(void);
472void drv_self_unhide(void);
473
474void  PostLogicalEventForNotPowerType(unsigned event, unsigned unk);
475void  PostLogicalEventToUI(unsigned event, unsigned unk);
476void  SetLogicalEventActive(unsigned event, unsigned state);
477void SetScriptMode(unsigned mode);
478
479/*
480 call C function with argument list created at runtime.
481 See lib/armutil/callfunc.S for documentation
482*/
483unsigned call_func_ptr(void *func, const unsigned *args, unsigned n_args);
484
485#define started() debug_led(1)
486#define finished() debug_led(0)
487
488#endif
Note: See TracBrowser for help on using the repository browser.