Index: dialin/common/msg_ids.py =================================================================== diff -u -r535bf5f030deddfd0d99edce1d8d011b7797e1e2 -r1477cb1e79e0487bf1313730875529a162d542e5 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 535bf5f030deddfd0d99edce1d8d011b7797e1e2) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 1477cb1e79e0487bf1313730875529a162d542e5) @@ -225,6 +225,7 @@ MSG_ID_DG_RO_PERMEATE_SAMPLE_DATA = 0xCA MSG_ID_HD_SEND_RO_PERMEATE_SAMPLE_DISPENSE_REQUEST_TO_DG = 0xCB MSG_ID_DG_SEND_RO_PERMEATE_SAMPLE_DISPENSE_READY_TO_HD = 0xCD + MSG_ID_DG_DRAIN_MODE_DATA = 0xCE MSG_ID_CAN_ERROR_COUNT = 0x999 @@ -491,6 +492,7 @@ MSG_ID_DG_SEND_LOAD_CELLS_TARE_VALUES_TO_DIALIN = 0xA06D MSG_ID_DG_SET_COND_SENSOR_CAL_TABLE = 0xA06E MSG_ID_DG_SIGNAL_RECOVER_FROM_FAULT_MODE = 0xA06F + MSG_ID_DG_DRAIN_MODE_BROADCAST_INTERVAL_OVERRIDE = 0xA070 MSG_ID_HD_DEBUG_EVENT = 0xFFF1 MSG_ID_DG_DEBUG_EVENT = 0xFFF2 Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -r881c190c1e90f09fa5584231a3e93a09bfb955c8 -r1477cb1e79e0487bf1313730875529a162d542e5 --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 881c190c1e90f09fa5584231a3e93a09bfb955c8) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 1477cb1e79e0487bf1313730875529a162d542e5) @@ -54,6 +54,7 @@ from .usage_info_record import DGUsageNVRecord from .dg_test_configs import DGTestConfig from .ro_permeate_sample import ROPermeateSample +from .drain import DGDrain from ..common.msg_defs import MsgIds, MsgFieldPositions from enum import unique from .constants import NO_RESET @@ -208,6 +209,7 @@ self.usage_record = DGUsageNVRecord(self.can_interface, self.logger) self.test_configs = DGTestConfig(self.can_interface, self.logger) self.ro_permeate_sample = ROPermeateSample(self.can_interface, self.logger) + self.drain = DGDrain(self.can_interface, self.logger) def __del__(self): self.can_interface.transmit_interval_dictionary[self.callback_id].stop() Index: dialin/dg/drain.py =================================================================== diff -u -r5d78d2fee0667e97de44ea986b7353452e8c2230 -r1477cb1e79e0487bf1313730875529a162d542e5 --- dialin/dg/drain.py (.../drain.py) (revision 5d78d2fee0667e97de44ea986b7353452e8c2230) +++ dialin/dg/drain.py (.../drain.py) (revision 1477cb1e79e0487bf1313730875529a162d542e5) @@ -24,7 +24,7 @@ from ..utils.conversions import integer_to_bytearray -class Drain(AbstractSubSystem): +class DGDrain(AbstractSubSystem): """ Dialysate Generation (DG) interface for drain op mode related commands. """ @@ -40,16 +40,16 @@ self.can_interface = can_interface self.logger = logger - # The current bad fill sub-state self.bad_fill_state = 0 self.bad_fill_signal = 0 self.drain_mode_state = 0 + self.dg_drain_mode_timestamp = 0.0 if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id - msg_id = MsgIds.MSG_ID_DG_GEN_IDLE_DATA.value + msg_id = MsgIds.MSG_ID_DG_DRAIN_MODE_DATA.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, - self._handler_gen_idle_sync) + self._handler_drain_sync) def get_bad_fill_sub_state(self): """ @@ -60,54 +60,44 @@ """ return self.bad_fill_state - def get_gen_idle_sub_state(self): + def get_drain_bad_fill_signal(self): """ Gets current gen idle sub-state @param: none @return: The current gen idle sub state """ - return self.gen_idle_state + return self.bad_fill_signal - def get_gen_idle_target_fill(self): + def get_drain_mode_state(self): """ - Gets current gen idle target fill + Gets current drain mode state @param: none - @return: The current bad fill sub-state + @return: The current drain mode state """ - return self.target_fill_volume_ml + return self.drain_mode_state - def get_bad_fill_signal(self): - """ - Gets current bad fill signal - @param: none - @return: The current bad fill signal + @publish(["dg_drain_mode_timestamp","drain_mode_state", "bad_fill_signal", "bad_fill_state"]) + def _handler_drain_sync(self, message, timestamp=0.0): """ - return self.bad_fill_signal - - @publish(["dg_gen_idle_data_timestamp","gen_idle_state", "target_fill_volume_ml", "bad_fill_signal", "bad_fill_state"]) - def _handler_gen_idle_sync(self, message, timestamp=0.0): - """ Handles published gen idle sub-states message. @param message: published gen idle sub-states message @return: none """ - self.gen_idle_state = struct.unpack(' int: + def cmd_drain_mode_data_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the fill mode data broadcast interval override command Constraints: @@ -127,10 +117,10 @@ payload = reset_byte_array + ms_byte_array message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, - message_id=MsgIds.MSG_ID_DG_GEN_IDLE_PUBLISH_INTERVAL_OVERRIDE.value, + message_id=MsgIds.MSG_ID_DG_DRAIN_MODE_BROADCAST_INTERVAL_OVERRIDE.value, payload=payload) - self.logger.debug("override gen idle sub-states data broadcast interval") + self.logger.debug("override drain mode sub-states data broadcast interval") # Send message received_message = self.can_interface.send(message)