def __init__(self, channel, params, evt_callback=None): """ @param channel identifies the particular protocol instance. @param params the particular parameters for this channel. """ InstrumentProtocol.__init__(self, evt_callback) self._channel = channel # initialize values for the params: MyProtocol.next_base_value += 1000 next_value = MyProtocol.next_base_value self._values = {} for param in params: next_value += 1 self._values[param] = next_value
def __init__(self, channel, params, evt_callback=None): """ @param channel identifies the particular protocol instance. @param params the particular parameters for this channel. """ InstrumentProtocol.__init__(self, evt_callback) self._channel = channel # initialize values for the params: MyProtocol.next_base_value += 1000 next_value = MyProtocol.next_base_value self._values = {} for param in params: next_value += 1 self._values[param] = next_value
def __init__(self, driver_event): """ Protocol constructor. @param driver_event Driver process event callback. """ # Construct protocol superclass. InstrumentProtocol.__init__(self, driver_event) # Build protocol state machine. self._protocol_fsm = ThreadSafeFSM(ProtocolState, ProtocolEvent, ProtocolEvent.ENTER, ProtocolEvent.EXIT) # Add event handlers for protocol state machine. handlers = { ProtocolState.UNKNOWN: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.DISCOVER, self._handler_unknown_discover), ], ProtocolState.COMMAND: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.START_DIRECT, self._handler_command_start_direct), (ProtocolEvent.GET, self._handler_command_get), (ProtocolEvent.SET, self._handler_command_set), (ProtocolEvent.START_AUTOSAMPLE, self._handler_command_start_autosample), (ProtocolEvent.ACQUIRE_SAMPLE, self._handler_command_start_poll), (ProtocolEvent.CALIBRATE, self._handler_command_start_calibrate), (ProtocolEvent.START_NAFION, self._handler_command_start_nafion_regen), (ProtocolEvent.START_ION, self._handler_command_start_ion_regen), (ProtocolEvent.ERROR, self._handler_error), (ProtocolEvent.POWEROFF, self._handler_command_poweroff), (ProtocolEvent.START_MANUAL, self._handler_command_start_manual), ], ProtocolState.AUTOSAMPLE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.ACQUIRE_SAMPLE, self._handler_autosample_acquire_sample), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.STOP_AUTOSAMPLE, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.POLL: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.ERROR: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.CLEAR, self._handler_error_clear), ], ProtocolState.CALIBRATE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.REGEN: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP_REGEN, self._handler_stop_regen), (ProtocolEvent.REGEN_COMPLETE, self._handler_regen_complete), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.DIRECT_ACCESS: [ (ProtocolEvent.ENTER, self._handler_direct_access_enter), (ProtocolEvent.EXIT, self._handler_direct_access_exit), (ProtocolEvent.STOP_DIRECT, self._handler_direct_access_stop_direct), (ProtocolEvent.EXECUTE_DIRECT, self._handler_direct_access_execute_direct), ], ProtocolState.MANUAL_OVERRIDE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP_MANUAL, self._handler_manual_override_stop), (ProtocolEvent.GET_SLAVE_STATES, self._handler_manual_get_slave_states), ], } for state in handlers: for event, handler in handlers[state]: self._protocol_fsm.add_handler(state, event, handler) # Construct the parameter dictionary containing device parameters, # current parameter values, and set formatting functions. self._build_param_dict() self._build_command_dict() self._build_driver_dict() # State state machine in UNKNOWN state. self._protocol_fsm.start(ProtocolState.UNKNOWN) # commands sent sent to device to be filtered in responses for telnet DA self._sent_cmds = [] self._slave_protocols = {} self.initialize_scheduler()
def __init__(self, driver_event): """ Protocol constructor. @param driver_event Driver process event callback. """ # Construct protocol superclass. InstrumentProtocol.__init__(self, driver_event) # Build protocol state machine. self._protocol_fsm = ThreadSafeFSM(ProtocolState, ProtocolEvent, ProtocolEvent.ENTER, ProtocolEvent.EXIT) # Add event handlers for protocol state machine. handlers = { ProtocolState.UNKNOWN: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.DISCOVER, self._handler_unknown_discover), ], ProtocolState.COMMAND: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.START_DIRECT, self._handler_command_start_direct), (ProtocolEvent.GET, self._handler_command_get), (ProtocolEvent.SET, self._handler_command_set), (ProtocolEvent.START_AUTOSAMPLE, self._handler_command_start_autosample), (ProtocolEvent.ACQUIRE_SAMPLE, self._handler_command_start_poll), (ProtocolEvent.CALIBRATE, self._handler_command_start_calibrate), (ProtocolEvent.START_NAFION, self._handler_command_start_nafion_regen), (ProtocolEvent.START_ION, self._handler_command_start_ion_regen), (ProtocolEvent.ERROR, self._handler_error), (ProtocolEvent.POWEROFF, self._handler_command_poweroff), (ProtocolEvent.START_MANUAL, self._handler_command_start_manual), ], ProtocolState.AUTOSAMPLE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.ACQUIRE_SAMPLE, self._handler_autosample_acquire_sample), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.STOP_AUTOSAMPLE, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.POLL: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.ERROR: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.CLEAR, self._handler_error_clear), ], ProtocolState.CALIBRATE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP, self._handler_stop_generic), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.REGEN: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP_REGEN, self._handler_stop_regen), (ProtocolEvent.REGEN_COMPLETE, self._handler_regen_complete), (ProtocolEvent.ERROR, self._handler_error), ], ProtocolState.DIRECT_ACCESS: [ (ProtocolEvent.ENTER, self._handler_direct_access_enter), (ProtocolEvent.EXIT, self._handler_direct_access_exit), (ProtocolEvent.STOP_DIRECT, self._handler_direct_access_stop_direct), (ProtocolEvent.EXECUTE_DIRECT, self._handler_direct_access_execute_direct), ], ProtocolState.MANUAL_OVERRIDE: [ (ProtocolEvent.ENTER, self._handler_generic_enter), (ProtocolEvent.EXIT, self._handler_generic_exit), (ProtocolEvent.STOP_MANUAL, self._handler_manual_override_stop), (ProtocolEvent.GET_SLAVE_STATES, self._handler_manual_get_slave_states), ], } for state in handlers: for event, handler in handlers[state]: self._protocol_fsm.add_handler(state, event, handler) # Construct the parameter dictionary containing device parameters, # current parameter values, and set formatting functions. self._build_param_dict() self._build_command_dict() self._build_driver_dict() # State state machine in UNKNOWN state. self._protocol_fsm.start(ProtocolState.UNKNOWN) # commands sent sent to device to be filtered in responses for telnet DA self._sent_cmds = [] self._slave_protocols = {} self.initialize_scheduler()