def testFullUpdate(self): ad = ActuatorData() ad2 = self._createTestActuatorData() ad.updateData(ad2) self.assertEquals(ad.getCommand(), ActuatorData.COMMAND_ON) self.assertEquals(ad.getStateData(), self.DEFAULT_STATE_DATA) self.assertEquals(ad.getValue(), self.DEFAULT_VALUE)
class BaseActuatorSimTask(): """ Base class for ActuatorSimTask """ def __init__(self, actuatorType: int = ActuatorData.DEFAULT_ACTUATOR_TYPE, simpleName: str = ConfigConst.NOT_SET): """ Init BaseActuatorSimTask with default values :param actuatorType: Type of actuator :param simpleName: Name of actuator """ self.actuatorType = actuatorType self.simpleName = simpleName self.latestActuatorData = ActuatorData(self.actuatorType, self.simpleName) pass def activateActuator(self, val: float) -> bool: """ Turn actuator on with given target value As a sim actuator, there is no real action :param val: Given target actuator value :return: If succeed to activate Actuator, always True as a sim actuator """ logging.info("\n======\nSim %s actuator ON, with value = %d.\n======" % (self.getSimpleName(), val)) self.latestActuatorData.setCommand(ActuatorData.COMMAND_ON) self.latestActuatorData.setValue(val) return True pass def deactivateActuator(self) -> bool: """ Turn actuator off with given target value As a sim actuator, there is no real action :return: If succeed to deactivate Actuator, always True as a sim actuator """ logging.info("\n======\nSim %s actuator OFF.\n======" % self.getSimpleName()) self.latestActuatorData.setCommand(ActuatorData.COMMAND_OFF) return True pass def getLatestActuatorResponse(self) -> ActuatorData: """ Get latest actuator data :return: Latest ActuatorData """ return self.latestActuatorData pass def getSimpleName(self) -> str: """ Get name of the sim actuator :return: Name string """ return self.simpleName pass def updateActuator(self, data: ActuatorData) -> bool: """ Use ActuatorData as command: Update current maintained latest ActuatorData Use given ActuatorData to execute command :param data: Given ActuatorData :return: If succeed to update and execute """ if data is None: logging.error("Got an invalid ActuatorData, which is None!") return False if not isinstance(data, ActuatorData): logging.error( "Got an invalid ActuatorData, which type is not ActuatorData!") return False if data.getCommand( ) is not ActuatorData.COMMAND_ON and data.getCommand( ) is not ActuatorData.COMMAND_OFF: logging.error( "Got an invalid ActuatorData, whose command is invalid!") return False ret = False if data.getCommand() is ActuatorData.COMMAND_ON: ret = self.activateActuator(data.getValue()) else: ret = self.deactivateActuator() self.latestActuatorData.updateData(data) self.latestActuatorData.setName(self.simpleName) self.latestActuatorData.setStatusCode(int(ret)) self.latestActuatorData.setAsResponse() return ret pass