Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -r7bc77fbed67b88c023d9b659dc7b7b27ec9b8741 -rb3774ad1df35c613de1c09bef40a55eb0ce4af36 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 7bc77fbed67b88c023d9b659dc7b7b27ec9b8741) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision b3774ad1df35c613de1c09bef40a55eb0ce4af36) @@ -21,10 +21,16 @@ from .modules.blood_flow import TDBloodFlow from .modules.bubble_detector import TDBubbleDectector from .modules.buttons import TDButtons +from .modules.constants import NO_RESET, RESET +from .modules.ejector import TDEjector from .modules.pressure_sensors import TDPressureSensors from .modules.switches import TDSwitches +from .modules.treatment import TDTreatment from .modules.valves import TDValves from .modules.voltages import TDVoltages + +from .proxies.dd_proxy import DDProxy + from ..common.msg_defs import MsgIds, MsgFieldPositions from ..common.td_defs import TDOpModes from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels @@ -117,11 +123,15 @@ self.blood_flow = TDBloodFlow(self.can_interface, self.logger) self.bubbles = TDBubbleDectector(self.can_interface, self.logger) self.buttons = TDButtons(self.can_interface, self.logger) + self.ejector = TDEjector(self.can_interface, self.logger) self.pressure_sensors = TDPressureSensors(self.can_interface, self.logger) self.switches = TDSwitches(self.can_interface, self.logger) + self.treatment = TDTreatment(self.can_interface, self.logger) self.valves = TDValves(self.can_interface, self.logger) self.voltages = TDVoltages(self.can_interface, self.logger) + self.dd_proxy = DDProxy(self.can_interface, self.logger) + @publish(["td_debug_events_timestamp","td_debug_events"]) def _handler_td_debug_event_sync(self, message, timestamp = 0.0): @@ -216,7 +226,7 @@ """ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, - message_id=MsgIds.MSG_ID_TESTER_LOGIN_REQUEST.value, + message_id=MsgIds.MSG_ID_TD_TESTER_LOGIN_REQUEST.value, payload=list(map(int, map(ord, self.TD_LOGIN_PASSWORD)))) self.logger.debug("Logging in...") @@ -228,8 +238,8 @@ if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: self.logger.debug("Success: Logged In") self.td_set_logged_in_status(True) -# self._send_td_checkin_message() # Timer starts interval first -# self.can_interface.transmit_interval_dictionary[self.callback_id].start() + #self._send_td_checkin_message() # Timer starts interval first + #self.can_interface.transmit_interval_dictionary[self.callback_id].start() else: self.logger.debug("Failure: Log In Failed.") return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] @@ -262,7 +272,7 @@ payload = integer_to_bytearray(new_mode) message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_td_ch_id, - message_id=MsgIds.MSG_ID_TD_SET_OP_MODE_REQUEST.value, + message_id=MsgIds.MSG_ID_TD_OP_MODE_OVERRIDE_REQUEST.value, payload=payload) self.logger.debug("Requesting TD mode change to " + str(new_mode)) @@ -307,11 +317,54 @@ @return: none """ - message = DenaliMessage.build_message(channel_id=DenaliChannels.TD_to_ui_ch_id, + message = DenaliMessage.build_message(channel_id=DenaliChannels.td_to_ui_ch_id, message_id=MsgIds.MSG_ID_TD_UI_VERSION_INFO_REQUEST.value) self.logger.debug("Sending an UI version request to the TD.") self.can_interface.send(message, 0) + def cmd_op_mode_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: + """ + Constructs and sends the measured op mode 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_OP_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST.value, + payload=payload) + + self.logger.debug("override op mode broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # self.logger.debug(received_message) + if reset == RESET: + str_res = "reset back to normal: " + else: + str_res = str(ms) + " ms: " + self.logger.debug("Blood flow 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 + + +