Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -rf1ac0e8ba99d1ddb0138918e408dffc0f5eba3c5 -r52a4421a9b93a31a6484ec78ef61e58ac910c03c --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision f1ac0e8ba99d1ddb0138918e408dffc0f5eba3c5) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 52a4421a9b93a31a6484ec78ef61e58ac910c03c) @@ -21,6 +21,7 @@ from .reservoirs import DGReservoirs from .valves import DGValves from .ro_pump import DGROPump +from .heaters import Heaters from ..protocols.CAN import (DenaliCanMessenger, DenaliMessage, DenaliChannels) @@ -114,6 +115,7 @@ self.valves = DGValves(self.can_interface) self.ro_pump = DGROPump(self.can_interface) self.drain_pump = DGDrainPump(self.can_interface) + self.heaters = Heaters(self.can_interface) def handler_dg_version(self, message): """ Index: dialin/dg/heaters.py =================================================================== diff -u --- dialin/dg/heaters.py (revision 0) +++ dialin/dg/heaters.py (revision 52a4421a9b93a31a6484ec78ef61e58ac910c03c) @@ -0,0 +1,49 @@ +########################################################################### +# +# Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +# +# THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN +# WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. +# +# @file heaters.py +# +# @date 28-May-2020 +# @author dnavaei +# +# @brief +# +# +############################################################################ + + + +import struct +#from ..utils.conversions import integer_to_bytearray +from .constants import NO_RESET +from ..protocols.CAN import (DenaliMessage, DenaliChannels) + +class Heaters: + + MSG_ID_DG_HEATERS_DATA = 0x2C + + START_POS_HEATER_STATES = DenaliMessage.PAYLOAD_START_INDEX + END_POS_HEATER_STATES = START_POS_HEATER_STATES + 2 #3 duty cycles are published each are 32bits so 12 bytes + + def __init__(self, can_interface=None): + + self.can_interface = can_interface + + self.heatersData = 0.0 + + if self.can_interface is not None: + channel_id = DenaliChannels.dg_sync_broadcast_ch_id + msg_id = self.MSG_ID_DG_HEATERS_DATA + self.can_interface.register_receiving_publication_function(channel_id, msg_id, self.handler_heaters_sync) + + def handler_heaters_sync(self, message): + + heatersData = struct.unpack('H', bytearray(message['message'][self.START_POS_HEATER_STATES:self.END_POS_HEATER_STATES])) + self.heatersData = heatersData[0] + print(heatersData[0]) + +