Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r47bd564b9d75b50c51ceadc1184ce65610c55614 -re5c5e1a8c10903e8caa793694b8f309125b2f6d8 --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 47bd564b9d75b50c51ceadc1184ce65610c55614) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision e5c5e1a8c10903e8caa793694b8f309125b2f6d8) @@ -155,6 +155,8 @@ MSG_ID_TD_OP_MODE_OVERRIDE_REQUEST = 0x8031 MSG_ID_TD_EJECTOR_MOTOR_SET_SPEED_REQUEST = 0x8032 MSG_ID_TD_EJECTOR_COMMAND = 0x8033 + MSG_ID_TD_EJECTOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0x8034 + MSG_ID_TD_SET_AIR_TRAP_CONTROL = 0x8035 MSG_ID_DD_TESTER_LOGIN_REQUEST = 0xA000 MSG_ID_DD_SOFTWARE_RESET_REQUEST = 0xA001 Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -r0b843faddee1416bfddb6f2589aedecf950c6df8 -re5c5e1a8c10903e8caa793694b8f309125b2f6d8 --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 0b843faddee1416bfddb6f2589aedecf950c6df8) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision e5c5e1a8c10903e8caa793694b8f309125b2f6d8) @@ -249,3 +249,28 @@ else: self.logger.debug("timeout!!") return False + + def cmd_set_td_air_trap_control(self, control: int = 0) -> int: + """ + Constructs and sends a set control command to the TD air trap. + + @param valve: start/stop for air trap control + @returns 1 if successful, zero otherwise + """ + + ctl = integer_to_bytearray(control) + payload = ctl + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_SET_AIR_TRAP_CONTROL.value, + payload=payload) + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + self.logger.debug("timeout!!") + return False \ No newline at end of file Index: leahi_dialin/td/modules/ejector.py =================================================================== diff -u -r16ea7b6081102316002e7ea5191ea89501de6037 -re5c5e1a8c10903e8caa793694b8f309125b2f6d8 --- leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision 16ea7b6081102316002e7ea5191ea89501de6037) +++ leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision e5c5e1a8c10903e8caa793694b8f309125b2f6d8) @@ -65,8 +65,50 @@ self.h5_set_speed = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.td_air_pump_timestamp = timestamp + self.td_ejector_timestamp = timestamp + def cmd_ejector_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends the ejector motor data broadcast interval 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 ms: integer - interval (in ms) to override with + @param reset: integer - 1 to reset a previous override, 0 to override + @return: 1 if successful, zero otherwise + """ + + if not check_broadcast_interval_override_ms(ms): + return False + + rst = integer_to_bytearray(reset) + mis = integer_to_bytearray(ms) + payload = rst + mis + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, + message_id=MsgIds.MSG_ID_TD_EJECTOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("override TD ejector data broadcast interval") + + # 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(ms) + " ms: " + self.logger.debug("ejector data broadcast interval 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_ejector_request_command(self, cmd: int) -> int: """ Constructs and sends the ejector request command.