CHDK_DE Vorschauversion  Trunk Rev. 5833
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Aufzählungen Aufzählungswerte Makrodefinitionen
usb_module.c-Dateireferenz
#include "camera_info.h"
#include "clock.h"
#include "shooting.h"
#include "keyboard.h"
#include "conf.h"
#include "action_stack.h"
#include "usb_remote.h"
+ Include-Abhängigkeitsdiagramm für usb_module.c:

gehe zum Quellcode dieser Datei

Funktionen

void debug_error (int)
 
void usb_playback_module ()
 
void usb_shoot_module_normal ()
 
void usb_shoot_module_quick ()
 
void usb_shoot_module_burst ()
 
void usb_zoom_step (int zdirection)
 
void usb_shoot_module_zoom ()
 
void bracketing_step ()
 
void bracketing_reset ()
 
void usb_bracketing_done ()
 
void usb_shoot_module_bracketing ()
 
void usb_video_module_normal ()
 
void usb_null_module (__attribute__((unused)) int i)
 

Variablen

void(* usb_module_play [NUM_USB_MODULES])()
 
void(* usb_module_shoot [NUM_USB_MODULES])()
 
void(* usb_module_video [NUM_USB_MODULES])()
 

Dokumentation der Funktionen

void bracketing_reset ( )

Definiert in Zeile 1622 der Datei shooting.c.

void bracketing_step ( )
void debug_error ( int  )
void usb_bracketing_done ( )

Definiert in Zeile 496 der Datei usb_module.c.

497 {
498  bracketing_reset() ;
499  bracketing_timeout = 0 ;
500 }
void usb_null_module ( __attribute__((unused)) int  i)

Definiert in Zeile 669 der Datei usb_module.c.

669 { } ; // module that does nothing - useful for unused entries in jump table
void usb_playback_module ( )

Definiert in Zeile 43 der Datei usb_module.c.

44  {
45  static int time_stamp = 0 ;
46  static int direction = 0 ; // 0 = left button, 1 = right button
47  int i, current_time ;
48 
49  current_time = get_tick_count();
50 
51  switch( logic_module_state )
52  {
53  case LM_RESET :
55  break ;
56  case LM_RELEASE :
58  switch( i )
59  {
60  case PLAYBACK_REVERSE :
61  direction = direction ? 0 : 1 ; // fall through to next case
62  case PLAYBACK_NEXT :
63  if ( direction ) kbd_key_press(KEY_LEFT);
66  time_stamp = current_time ;
67  break ;
68  case PLAYBACK_LEFT :
69  direction = 0 ;
70  break ;
71  case PLAYBACK_RIGHT :
72  direction = 1 ;
73  break ;
74  default :
75  break ;
76  }
77  break ;
78 
79  case LM_KEY_PRESS :
80  if( (current_time - time_stamp) > REMOTE_CLICK_TIME )
81  {
82  if ( direction ) kbd_key_release(KEY_LEFT);
85  }
86  break ;
87 
88  default :
89  break ;
90  }
91 }
void usb_shoot_module_bracketing ( )

Definiert in Zeile 503 der Datei usb_module.c.

504 {
505  int current_time ;
506 
507  current_time = get_tick_count() ;
508 
509  switch( logic_module_state )
510  {
511  case LM_RESET :
513  break ;
514  case LM_RELEASE :
515  if (( bracketing_timeout ) && ( current_time > bracketing_timeout ) ) usb_bracketing_done() ;
516  switch ( virtual_remote_state )
517  {
518  case REMOTE_RELEASE :
519  break ;
520  case REMOTE_HALF_PRESS :
521  case REMOTE_FULL_PRESS: // Note : need a half-press to setup bracketing step
524  break ;
525  default :
527  break ;
528  }
529  break ;
530  case LM_HALF_PRESS :
531  switch ( virtual_remote_state )
532  {
533  case REMOTE_RELEASE :
537  break ;
538  case REMOTE_HALF_PRESS :
539  break ;
540  case REMOTE_FULL_PRESS:
541  if ( shooting_in_progress() )
542  {
545  bracketing_timeout = current_time + BRACKETING_TIMEOUT ;
546  }
547  break ;
548  default :
550  break ;
551  }
552  break ;
553  case LM_FULL_PRESS :
554  switch ( virtual_remote_state )
555  {
556  case REMOTE_RELEASE :
561  break ;
562  case REMOTE_HALF_PRESS :
566  break ;
567  case REMOTE_FULL_PRESS:
568  break ;
569  default :
571  break ;
572  }
573  break ;
574  default :
576  break ;
577  }
578 
579 }
void usb_shoot_module_burst ( )

Definiert in Zeile 356 der Datei usb_module.c.

357 {
358  static AS_ID usb_remote_stack_name = 0;
359 
360  switch( logic_module_state )
361  {
362  case LM_RESET :
364  break ;
365  case LM_RELEASE :
366  switch ( virtual_remote_state )
367  {
368  case REMOTE_RELEASE :
369  break ;
370  case REMOTE_HALF_PRESS :
371  case REMOTE_FULL_PRESS:
372  usb_remote_stack_name = action_stack_create(&action_stack_AS_SHOOT);
374  break ;
375  default :
377  break ;
378  }
379  break ;
380  case LM_HALF_PRESS :
381  if( action_stack_is_finished(usb_remote_stack_name) )
382  {
384  }
385  break ;
386  default :
388  break ;
389  }
390 
391 }
void usb_shoot_module_normal ( )

Definiert in Zeile 102 der Datei usb_module.c.

103 {
104  static AS_ID usb_remote_stack_name = 0;
105 
106  if ( conf.synch_enable == 0 ) // handle key presses differently if in sync mode
107  {
108  switch( logic_module_state )
109  {
110  case LM_RESET :
114  break ;
115  case LM_RELEASE :
116  switch ( virtual_remote_state )
117  {
118  case REMOTE_RELEASE :
119  break ;
120  case REMOTE_HALF_PRESS :
123  break ;
124  case REMOTE_FULL_PRESS:
128  break ;
129  default :
131  break ;
132  }
133  break ;
134 
135  case LM_HALF_PRESS :
136  switch ( virtual_remote_state )
137  {
138  case REMOTE_RELEASE :
141  break ;
142  case REMOTE_HALF_PRESS :
143  break ;
144  case REMOTE_FULL_PRESS:
147  break ;
148  default :
150  break ;
151  }
152  break ;
153 
154 
155  case LM_FULL_PRESS :
156  switch ( virtual_remote_state )
157  {
158  case REMOTE_RELEASE :
162  break ;
163  case REMOTE_HALF_PRESS:
166  break ;
167  case REMOTE_FULL_PRESS:
168  break ;
169  default :
171  break ;
172  }
173  break ;
174 
175  default :
177  break ;
178 
179  }
180  }
181  else // syncable remote mode
182  {
183  switch( logic_module_state )
184  {
185  case LM_RESET :
187  break ;
188 
189  case LM_RELEASE :
190  switch ( virtual_remote_state )
191  {
192  case REMOTE_HALF_PRESS :
193  switch ( switch_type)
194  {
195  case SW_ONE_PRESS :
196  usb_remote_stack_name = action_stack_create(&action_stack_AS_SHOOT);
197  usb_sync_wait_flag = 1;
199  break ;
200  case SW_TWO_PRESS :
201  case SW_RICOH_CA1 :
204  break ;
205  default :
206  break ;
207  }
208  break ;
209 
210  case REMOTE_RELEASE :
211  case REMOTE_FULL_PRESS:
212  break ;
213  default :
215  break ;
216  }
217  break ;
218 
219  case LM_HALF_PRESS :
220  switch ( virtual_remote_state )
221  {
222  case REMOTE_FULL_PRESS:
223  switch ( switch_type)
224  {
225  case SW_ONE_PRESS :
227  break ;
228  case SW_TWO_PRESS :
229  case SW_RICOH_CA1 :
230  usb_sync_wait_flag = 1;
233  break ;
234  default :
235  break ;
236  }
237  break ;
238  case REMOTE_RELEASE :
239  switch ( switch_type)
240  {
241  case SW_ONE_PRESS :
242  if( action_stack_is_finished(usb_remote_stack_name) )
243  {
245  }
246  break ;
247  case SW_TWO_PRESS :
248  case SW_RICOH_CA1 :
251  break ;
252  default :
253  break ;
254  }
255  break ;
256  case REMOTE_HALF_PRESS :
257  break ;
258  default :
260  break ;
261  }
262  break ;
263 
264  case LM_FULL_PRESS :
265  switch ( virtual_remote_state )
266  {
267  case REMOTE_RELEASE :
268  switch ( switch_type)
269  {
270  case SW_ONE_PRESS :
271  if( action_stack_is_finished(usb_remote_stack_name) )
272  {
274  }
275  break ;
276  case SW_TWO_PRESS :
277  case SW_RICOH_CA1 :
278  usb_sync_wait_flag = 0;
282  break ;
283  default :
284  break ;
285  }
286  break ;
287  case REMOTE_HALF_PRESS :
288  case REMOTE_FULL_PRESS:
289  break ;
290  default :
292  break ;
293  }
294  break ;
295  default :
297  break ;
298  }
299  }
300 
301 };
void usb_shoot_module_quick ( )

Definiert in Zeile 309 der Datei usb_module.c.

310 {
311  static AS_ID usb_remote_stack_name = 0;
312 
313  switch( logic_module_state )
314  {
315  case LM_RESET :
317  break ;
318  case LM_RELEASE :
319  switch ( virtual_remote_state )
320  {
321  case REMOTE_RELEASE :
322  break ;
323  case REMOTE_HALF_PRESS :
324  case REMOTE_FULL_PRESS:
325  usb_remote_stack_name = action_stack_create(&action_stack_AS_SHOOT);
327  break ;
328  default :
330  break ;
331  }
332  break ;
333 
334  case LM_FULL_PRESS :
335  if (( virtual_remote_state == REMOTE_RELEASE ) && action_stack_is_finished(usb_remote_stack_name) )
336  {
338  }
339  break ;
340 
341  default :
343  break ;
344 
345  }
346 
347 }
void usb_shoot_module_zoom ( )

Definiert in Zeile 444 der Datei usb_module.c.

445 {
446  static AS_ID usb_remote_stack_name = 0;
447 
448  switch( logic_module_state )
449  {
450  case LM_RESET :
452  break ;
453  case LM_RELEASE :
454  switch( get_usb_power(LM_PULSE_COUNT) )
455  {
456  case ZOOM_STEP_OUT :
457  usb_zoom_step(1) ;
458  break ;
459  case ZOOM_STEP_IN :
460  usb_zoom_step(-1);
461  break ;
462  case ZOOM_SHOOT :
464  usb_remote_stack_name = action_stack_create(&action_stack_AS_SHOOT);
465  break ;
466  case ZOOM_FULL_OUT :
468  break ;
469  case ZOOM_FULL_IN :
470  shooting_set_zoom(0) ;
471  break ;
472  default :
473  break ;
474  }
475  break ;
476  case LM_FULL_PRESS :
477  if( action_stack_is_finished(usb_remote_stack_name) )
478  {
480  }
481  break ;
482  default :
483  break ;
484  }
485 };
void usb_video_module_normal ( )

Definiert in Zeile 586 der Datei usb_module.c.

587 {
588  int usb_video_button = (camera_info.cam_has_video_button) ? KEY_VIDEO : KEY_SHOOT_FULL;
589 
590  switch( logic_module_state )
591  {
592  case LM_RESET :
594  break ;
595  case LM_RELEASE :
596  switch ( virtual_remote_state )
597  {
598  case REMOTE_RELEASE :
599  break ;
600  case REMOTE_HALF_PRESS :
601  case REMOTE_FULL_PRESS:
602  kbd_key_press(usb_video_button);
604  break ;
605  default :
607  break ;
608  }
609  break ;
610  case LM_START_RECORD:
611  switch ( virtual_remote_state )
612  {
613  case REMOTE_RELEASE :
615  kbd_key_release(usb_video_button);
616  break ;
617  case REMOTE_HALF_PRESS :
618  case REMOTE_FULL_PRESS:
619  break ;
620  default :
622  break ;
623  }
624  break;
625  case LM_RECORDING :
626  switch ( virtual_remote_state )
627  {
628  case REMOTE_RELEASE :
629  break ;
630  case REMOTE_HALF_PRESS :
631  case REMOTE_FULL_PRESS:
632  kbd_key_press(usb_video_button);
634  break ;
635  default :
637  break ;
638  }
639  break;
640  case LM_STOP_RECORDING :
641  switch ( virtual_remote_state )
642  {
643  case REMOTE_RELEASE :
645  kbd_key_release(usb_video_button);
646  break ;
647  case REMOTE_HALF_PRESS :
648  case REMOTE_FULL_PRESS:
649  break ;
650  default :
652  break ;
653  }
654  break;
655  default :
657  break ;
658  }
659 
660 };
void usb_zoom_step ( int  zdirection)

Definiert in Zeile 404 der Datei usb_module.c.

405 {
406  int zpos, zstep, newzpos ;
408  {
409  // currently used zoom_points values are 6 7 8 10 12 14 15 23 64 101 121 126 127 128 129 201
410  if (zoom_points <= 16 ) zstep = 1 ;
411  else if (zoom_points <= 32 ) zstep = 2 ;
412  else if (zoom_points <= 64 ) zstep = 6 ;
413  else if (zoom_points <= 110) zstep = 10 ;
414  else if (zoom_points <= 128) zstep = 12 ;
415  else zstep = 20 ;
416  zpos = shooting_get_zoom();
417  // if new pos less than half a step from end of range, go to end
418  if(zdirection>0)
419  {
420  if(zpos+zstep+zstep/2<zoom_points)
421  {
422  newzpos = zpos+zstep;
423  }
424  else
425  {
426  newzpos = zoom_points;
427  }
428  }
429  else
430  {
431  if(zpos-zstep-zstep/2>0)
432  {
433  newzpos = zpos-zstep;
434  }
435  else
436  {
437  newzpos = 0;
438  }
439  }
440  shooting_set_zoom(newzpos);
441  }
442 }

Variablen-Dokumentation

void(* usb_module_video[NUM_USB_MODULES])()