Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -r4e696543dce83e9ac7d469197b25dbf080e22e26 -r1695d3e7019ee94bb9072d08fc191b5b7e127992 --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 4e696543dce83e9ac7d469197b25dbf080e22e26) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 1695d3e7019ee94bb9072d08fc191b5b7e127992) @@ -140,6 +140,7 @@ self.can_interface = DenaliCanMessenger(can_interface=can_interface, logger=self.logger) self.can_interface.start() + self.callback_id = None # register handler for HD operation mode broadcast messages if self.can_interface is not None: @@ -151,7 +152,7 @@ MsgIds.MSG_ID_DG_VERSION.value, self._handler_dg_version) - self.can_interface.register_transmitting_interval_message(INTERVAL_10s, + self.callback_id = self.can_interface.register_transmitting_interval_message(INTERVAL_10s, self._send_dg_checkin_message) # initialize variables that will be populated by DG version response @@ -206,6 +207,9 @@ self.usage_record = DGUsageNVRecord(self.can_interface, self.logger) self.test_configs = DGTestConfig(self.can_interface, self.logger) + def __del__(self): + self.can_interface.transmit_interval_dictionary[self.callback_id].stop() + def get_version(self): """ Gets the DG version. Assumes DG version has already been requested. @@ -340,6 +344,8 @@ if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: self.logger.info("Successfully logged in to the DG.") self.dg_set_logged_in_status(True) + self._send_dg_checkin_message() # Timer starts interval first + self.can_interface.transmit_interval_dictionary[self.callback_id].start() else: self.logger.error("Log In Failed.") return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] @@ -554,4 +560,4 @@ """ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, message_id=MsgIds.MSG_ID_DG_DIALIN_CHECK_IN.value) - self.can_interface.send(message, 0) \ No newline at end of file + self.can_interface.send(message) \ No newline at end of file Index: dialin/hd/hemodialysis_device.py =================================================================== diff -u -r4e696543dce83e9ac7d469197b25dbf080e22e26 -r1695d3e7019ee94bb9072d08fc191b5b7e127992 --- dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 4e696543dce83e9ac7d469197b25dbf080e22e26) +++ dialin/hd/hemodialysis_device.py (.../hemodialysis_device.py) (revision 1695d3e7019ee94bb9072d08fc191b5b7e127992) @@ -105,7 +105,7 @@ self.can_interface = DenaliCanMessenger(can_interface=can_interface, logger=self.logger) self.can_interface.start() - + self.callback_id = None # register handler for HD operation mode broadcast messages if self.can_interface is not None: channel_id = DenaliChannels.hd_sync_broadcast_ch_id @@ -121,8 +121,8 @@ MsgIds.MSG_ID_HD_UI_VERSION_INFO_RESPONSE.value, self._handler_ui_version_response_sync) - self.can_interface.register_transmitting_interval_message(INTERVAL_10s, - self._send_hd_checkin_message) + self.callback_id = self.can_interface.register_transmitting_interval_message(INTERVAL_10s, + self._send_hd_checkin_message) # create properties self.hd_op_mode_timestamp = 0.0 @@ -178,6 +178,9 @@ self.usage_record = HDUsageNVRecord(self.can_interface, self.logger) self.test_configs = HDTestConfig(self.can_interface, self.logger) + def __del__(self): + self.can_interface.transmit_interval_dictionary[self.callback_id].stop() + def get_operation_mode(self): """ Gets the HD operation mode @@ -316,6 +319,8 @@ if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: self.logger.debug("Success: Logged In") self.hd_set_logged_in_status(True) + self._send_hd_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] @@ -743,4 +748,4 @@ """ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, message_id=MsgIds.MSG_ID_HD_DIALIN_CHECK_IN.value) - self.can_interface.send(message, 0) + self.can_interface.send(message) Index: dialin/protocols/CAN.py =================================================================== diff -u -r4e696543dce83e9ac7d469197b25dbf080e22e26 -r1695d3e7019ee94bb9072d08fc191b5b7e127992 --- dialin/protocols/CAN.py (.../CAN.py) (revision 4e696543dce83e9ac7d469197b25dbf080e22e26) +++ dialin/protocols/CAN.py (.../CAN.py) (revision 1695d3e7019ee94bb9072d08fc191b5b7e127992) @@ -881,3 +881,5 @@ self.transmit_interval_dictionary[function_id].start() else: self.transmit_interval_dictionary[function_id] = IntervalTimer(interval, function) + + return function_id Index: dialin/utils/base.py =================================================================== diff -u -r4e696543dce83e9ac7d469197b25dbf080e22e26 -r1695d3e7019ee94bb9072d08fc191b5b7e127992 --- dialin/utils/base.py (.../base.py) (revision 4e696543dce83e9ac7d469197b25dbf080e22e26) +++ dialin/utils/base.py (.../base.py) (revision 1695d3e7019ee94bb9072d08fc191b5b7e127992) @@ -305,7 +305,6 @@ self.args = args self.kwargs = kwargs self.is_running = False - self.start() def _run(self): self.is_running = False @@ -320,3 +319,4 @@ def stop(self): self._timer.cancel() + self.is_running = False