Index: dialin/dg/dialysate_generator.py =================================================================== diff -u -r42feb8ffe3a0d7ab3a4de04ad0d58456afe2333b -rd24761670b6f557bf44ff5bb762c119a2e7cc889 --- dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision 42feb8ffe3a0d7ab3a4de04ad0d58456afe2333b) +++ dialin/dg/dialysate_generator.py (.../dialysate_generator.py) (revision d24761670b6f557bf44ff5bb762c119a2e7cc889) @@ -38,6 +38,8 @@ MSG_ID_DG_OPERATION_MODE_BROADCAST = 0x0027 MSG_ID_LOGIN_TO_DG = 0xA000 MSG_ID_DG_MSG = 0xA001 + MSG_ID_DG_REQUEST_DG_VERSION = 0xA002 + MSG_ID_DG_DG_VERSION_RESPONSE = 0xA003 # HD login password DG_LOGIN_PASSWORD = '123' @@ -46,6 +48,14 @@ START_POS_DG_OP_MODE = DenaliMessage.PAYLOAD_START_INDEX END_POS_DG_OP_MODE = START_POS_DG_OP_MODE + 4 + # DG version message field positions + START_POS_MAJOR = DenaliMessage.PAYLOAD_START_INDEX + END_POS_MAJOR = START_POS_MAJOR + 1 + START_POS_MINOR = END_POS_MAJOR + END_POS_MINOR = START_POS_MINOR + 1 + START_POS_BUILD = END_POS_MINOR + END_POS_BUILD = START_POS_BUILD + 2 + # DG operation modes DG_OP_MODE_FAULT = 0 DG_OP_MODE_SERVICE = 1 @@ -82,7 +92,11 @@ msg_id = self.MSG_ID_DG_OPERATION_MODE_BROADCAST self.can_interface.register_receiving_publication_function(channel_id, msg_id, self.handler_dg_op_mode_sync) + self.can_interface.register_receiving_publication_function(DenaliChannels.dg_to_dialin_ch_id, self.MSG_ID_DG_DG_VERSION_RESPONSE, + self.handler_dg_version) + # initialize variables that will be populated by DG version response + self.dg_version = '' # create properties self.dg_operation_mode = self.DG_OP_MODE_INIT_POST @@ -94,6 +108,26 @@ self.ro_pump = DGROPump(self.can_interface) self.drain_pump = DGDrainPump(self.can_interface) + def handler_dg_version(self, message): + """ + Handler for response from DG regarding its version. + + \param message: response message from HD regarding valid treatment parameter ranges.\n + U08 Major \n + U08 Minor \n + U16 Build \n + + \returns none + """ + major = struct.unpack('B', bytearray( + message['message'][self.START_POS_MAJOR:self.END_POS_MAJOR])) + minor = struct.unpack('B', bytearray( + message['message'][self.START_POS_MINOR:self.END_POS_MINOR])) + build = struct.unpack('H', bytearray( + message['message'][self.START_POS_BUILD:self.END_POS_BUILD])) + + self.dg_version = 'v' + str(major) + '.' + str(minor) + '.' + str(build) + def handler_dg_op_mode_sync(self, message): """ Handles published DG operation mode messages. Current DG operation mode @@ -163,6 +197,19 @@ print("Timeout!!!!") return False + def cmd_ui_request_dg_version(self): + """ + Constructs and sends the ui request for version message + + """ + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_REQUEST_DG_VERSION) + + print("Sending Dialin request for version to DG") + + self.can_interface.send(message, 0) + if __name__ == "__main__": # create an DG object called dg dg = DG() Index: dialin/dg/hd_proxy.py =================================================================== diff -u -r42feb8ffe3a0d7ab3a4de04ad0d58456afe2333b -rd24761670b6f557bf44ff5bb762c119a2e7cc889 --- dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision 42feb8ffe3a0d7ab3a4de04ad0d58456afe2333b) +++ dialin/dg/hd_proxy.py (.../hd_proxy.py) (revision d24761670b6f557bf44ff5bb762c119a2e7cc889) @@ -24,7 +24,6 @@ \brief Dialysate Generator (DG) Dialin API sub-class for HD proxy commands. """ - # Pressure/Occlusion message IDs MSG_ID_HD_SWITCH_RESERVOIRS_CMD = 0x0021 MSG_ID_HD_FILL_CMD = 0x0022 Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r089bdbd0666ffeef307621beb61d8a2e429b1a30 -rd24761670b6f557bf44ff5bb762c119a2e7cc889 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 089bdbd0666ffeef307621beb61d8a2e429b1a30) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision d24761670b6f557bf44ff5bb762c119a2e7cc889) @@ -331,7 +331,6 @@ """ Constructs and sends the ui request for version message - \returns 0 """ message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_hd_ch_id, @@ -341,8 +340,6 @@ self.can_interface.send(message, 0) - return 0 - def cmd_ui_uf_pause_resume(self, cmd=UF_CMD_PAUSE): """ Constructs and sends a ui UF command message