def __init__(self): self.__sensor = None self.__sensor_factory = SensorFactory() self.__output = None self.__menu = None Control.__init__(self)
class Sensor(Control, ISensor): def __init__(self): self.__sensor = None self.__sensor_factory = SensorFactory() self.__output = None self.__menu = None Control.__init__(self) # # Loads the given sensor with arguments. # def __set_sensor(self, value): module, args = value sensor = self.__sensor_factory.create_sensor(module, args) if sensor: sensor.add_observer(self.__on_observe_sensor) else: raise RuntimeError("Could not load sensor") self.__sensor = sensor # # Sends an action to the sensor. # def __set_action(self, value): callname, path, allargs = value self.__sensor.send_action(callname, path, allargs) def __set_config_id(self, value): self.__sensor.set_config_id(value) def __set_stop(self, value): self.__sensor.stop() def __get_output(self): return self.__output def __get_menu(self): return self.__menu def __get_configurator(self): return self.__sensor.get_configurator() # # Observer for the sensor. # def __on_observe_sensor(self, src, cmd, data): # propagate the incoming sensor output if cmd == src.OBS_OUTPUT: self.__output = data self._update("output") elif cmd == src.OBS_CMD_MENU: self.__menu = data self._update("menu") sensor = property(None, __set_sensor, doc="the sensor") action = property(None, __set_action, doc="the action to perform") config_id = property(None, __set_config_id, doc="the config ID") stop = property(None, __set_stop, doc="stops the sensor") output = property(__get_output, None, doc="the output data of the sensor") menu = property(__get_menu, None, doc="the menu data of the sensor") configurator = property(__get_configurator, None, doc="the configurator of the sensor")