void usb_shoot_module_zoom() { static long usb_remote_stack_name = -1; switch( logic_module_state ) { case LM_RESET : logic_module_state = LM_RELEASE ; break ; case LM_RELEASE : switch( get_usb_power(LM_PULSE_COUNT) ) { case ZOOM_STEP_OUT : shooting_set_zoom_rel(1) ; break ; case ZOOM_STEP_IN : shooting_set_zoom_rel(-1) ; break ; case ZOOM_SHOOT : logic_module_state = LM_FULL_PRESS ; usb_remote_stack_name = action_stack_create(&action_stack_standard,AS_SHOOT); break ; case ZOOM_FULL_OUT : shooting_set_zoom(zoom_points) ; break ; case ZOOM_FULL_IN : shooting_set_zoom(0) ; break ; default : break ; } break ; case LM_FULL_PRESS : if( action_stack_is_finished(usb_remote_stack_name) ) { logic_module_state = LM_RELEASE ; } break ; default : break ; } };
void usb_shoot_module_burst() { static long usb_remote_stack_name = -1; switch( logic_module_state ) { case LM_RESET : logic_module_state = LM_RELEASE ; break ; case LM_RELEASE : switch ( virtual_remote_state ) { case REMOTE_RELEASE : break ; case REMOTE_HALF_PRESS : case REMOTE_FULL_PRESS: usb_remote_stack_name = action_stack_create(&action_stack_standard,AS_SHOOT); logic_module_state = LM_HALF_PRESS ; break ; default : debug_error(INVALID_STATE) ; break ; } break ; case LM_HALF_PRESS : if( action_stack_is_finished(usb_remote_stack_name) ) { logic_module_state = LM_RELEASE ; } break ; default : debug_error(INVALID_STATE) ; break ; } }
int script_is_running() { return !action_stack_is_finished(running_script_stack_name); }
void usb_shoot_module_normal() { static long usb_remote_stack_name = -1; if ( conf.synch_enable == 0 ) // handle key presses differently if in sync mode { switch( logic_module_state ) { case LM_RESET : kbd_key_release(KEY_SHOOT_FULL); kbd_key_release(KEY_SHOOT_HALF); logic_module_state = LM_RELEASE ; break ; case LM_RELEASE : switch ( virtual_remote_state ) { case REMOTE_RELEASE : break ; case REMOTE_HALF_PRESS : kbd_key_press(KEY_SHOOT_HALF); logic_module_state = LM_HALF_PRESS ; break ; case REMOTE_FULL_PRESS: kbd_key_press(KEY_SHOOT_HALF); kbd_key_press(KEY_SHOOT_FULL); logic_module_state = LM_FULL_PRESS ; break ; default : debug_error(INVALID_STATE) ; break ; } break ; case LM_HALF_PRESS : switch ( virtual_remote_state ) { case REMOTE_RELEASE : kbd_key_release(KEY_SHOOT_HALF); logic_module_state = LM_RELEASE ; break ; case REMOTE_HALF_PRESS : break ; case REMOTE_FULL_PRESS: kbd_key_press(KEY_SHOOT_FULL); logic_module_state = LM_FULL_PRESS ; break ; default : debug_error(INVALID_STATE) ; break ; } break ; case LM_FULL_PRESS : switch ( virtual_remote_state ) { case REMOTE_RELEASE : kbd_key_release(KEY_SHOOT_FULL); kbd_key_release(KEY_SHOOT_HALF); logic_module_state = LM_RELEASE ; break ; case REMOTE_HALF_PRESS: kbd_key_release(KEY_SHOOT_FULL); logic_module_state = LM_HALF_PRESS ; break ; case REMOTE_FULL_PRESS: break ; default : debug_error(INVALID_STATE) ; break ; } break ; default : debug_error(INVALID_STATE) ; break ; } } else // syncable remote mode { switch( logic_module_state ) { case LM_RESET : logic_module_state = LM_RELEASE ; break ; case LM_RELEASE : switch ( virtual_remote_state ) { case REMOTE_HALF_PRESS : switch ( switch_type) { case SW_ONE_PRESS : usb_remote_stack_name = action_stack_create(&action_stack_standard,AS_SHOOT); usb_sync_wait = 1; logic_module_state = LM_HALF_PRESS ; break ; case SW_TWO_PRESS : case SW_RICOH_CA1 : kbd_key_press(KEY_SHOOT_HALF); logic_module_state = LM_HALF_PRESS ; break ; default : break ; } break ; case REMOTE_RELEASE : case REMOTE_FULL_PRESS: break ; default : debug_error(INVALID_STATE) ; break ; } break ; case LM_HALF_PRESS : switch ( virtual_remote_state ) { case REMOTE_FULL_PRESS: switch ( switch_type) { case SW_ONE_PRESS : logic_module_state = LM_FULL_PRESS ; break ; case SW_TWO_PRESS : case SW_RICOH_CA1 : usb_sync_wait = 1; kbd_key_press(KEY_SHOOT_FULL); logic_module_state = LM_FULL_PRESS ; break ; default : break ; } break ; case REMOTE_RELEASE : switch ( switch_type) { case SW_ONE_PRESS : if( action_stack_is_finished(usb_remote_stack_name) ) { logic_module_state = LM_RELEASE ; } break ; case SW_TWO_PRESS : case SW_RICOH_CA1 : kbd_key_release(KEY_SHOOT_HALF); logic_module_state = LM_RELEASE ; break ; default : break ; } break ; case REMOTE_HALF_PRESS : break ; default : debug_error(INVALID_STATE) ; break ; } break ; case LM_FULL_PRESS : switch ( virtual_remote_state ) { case REMOTE_RELEASE : switch ( switch_type) { case SW_ONE_PRESS : if( action_stack_is_finished(usb_remote_stack_name) ) { logic_module_state = LM_RELEASE ; } break ; case SW_TWO_PRESS : case SW_RICOH_CA1 : usb_sync_wait = 0; logic_module_state = LM_RELEASE ; kbd_key_release(KEY_SHOOT_FULL); kbd_key_release(KEY_SHOOT_HALF); break ; default : break ; } break ; case REMOTE_HALF_PRESS : case REMOTE_FULL_PRESS: break ; default : debug_error(INVALID_STATE) ; break ; } break ; default : debug_error(INVALID_STATE) ; break ; } } };