Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -rba2793fd2b970fc89af085f1dfe4e8b6fe408353 -r648db1c6ddd297bb1dcb04a4fec37dc4dee7656c --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision ba2793fd2b970fc89af085f1dfe4e8b6fe408353) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 648db1c6ddd297bb1dcb04a4fec37dc4dee7656c) @@ -182,6 +182,8 @@ MSG_ID_TD_SET_TEST_CONFIGURATION = 0x803A MSG_ID_TD_GET_TEST_CONFIGURATION = 0x803B MSG_ID_TD_RESET_ALL_TEST_CONFIGURATIONS = 0x803C + MSG_ID_TD_AIR_PUMP_POWER_RAISE_OVERRIDE_REQUEST = 0x803D + MSG_ID_TD_AIR_PUMP_POWER_LOWER_OVERRIDE_REQUEST = 0x803E MSG_ID_DD_TESTER_LOGIN_REQUEST = 0xA000 MSG_ID_DD_SOFTWARE_RESET_REQUEST = 0xA001 Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -r52aa7af16b98730ba59fc2577dbe8f73b5959775 -r648db1c6ddd297bb1dcb04a4fec37dc4dee7656c --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 52aa7af16b98730ba59fc2577dbe8f73b5959775) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 648db1c6ddd297bb1dcb04a4fec37dc4dee7656c) @@ -271,4 +271,78 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("timeout!!") - return False \ No newline at end of file + return False + + def cmd_air_trap_air_pump_power_raise_override(self, power: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends the air trap air pump power raise override command + Constraints: + Must be logged into TD. + Given interval must be non-zero and a multiple of the TD general task interval (50 ms). + + @param power: integer - power to override the level raise to it + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + rst = integer_to_bytearray(reset) + pwr = integer_to_bytearray(power) + payload = rst + pwr + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_AIR_PUMP_POWER_RAISE_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("Override TD air trap air pump raise power level") + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + if reset == RESET: + str_res = "reset back to normal: " + else: + str_res = str(power) + self.logger.debug("Air trap air pump power raise overridden to " + str_res + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False + + def cmd_air_trap_air_pump_power_lower_override(self, power: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends the air trap air pump power lower override command + Constraints: + Must be logged into TD. + Given interval must be non-zero and a multiple of the TD general task interval (50 ms). + + @param power: integer - power to override the level lower to it + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + rst = integer_to_bytearray(reset) + pwr = integer_to_bytearray(power) + payload = rst + pwr + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_AIR_PUMP_POWER_LOWER_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("Override TD air trap air pump lower power level") + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + if reset == RESET: + str_res = "reset back to normal: " + else: + str_res = str(power) + self.logger.debug("Air trap air pump power lower overridden to " + str_res + + str(received_message['message'][DenaliMessage.PAYLOAD_START_INDEX])) + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("Timeout!!!!") + return False