Index: DialysateGenerator.py =================================================================== diff -u -r939a86a215a1a244e493c6455292d921a77698e3 -r76a013b309517d69b64ec4b74778715595a046bc --- DialysateGenerator.py (.../DialysateGenerator.py) (revision 939a86a215a1a244e493c6455292d921a77698e3) +++ DialysateGenerator.py (.../DialysateGenerator.py) (revision 76a013b309517d69b64ec4b74778715595a046bc) @@ -37,6 +37,10 @@ DG_MSG_ID_FILL_COMMAND = 0x2000 DG_MSG_ID_BROADCAST = 0X2100 + MSG_ID_LOAD_CELL_A1_OVERRIDE = 0xA005 + MSG_ID_LOAD_CELL_A2_OVERRIDE = 0xA006 + MSG_ID_LOAD_CELL_B1_OVERRIDE = 0xA007 + MSG_ID_LOAD_CELL_B2_OVERRIDE = 0xA008 def __init__(self, can__interface="can0"): """ @@ -82,7 +86,166 @@ return returnValue + def CmdLoadCellA1Override(self, reset, adc_raw): + """ + Constructs and sends the load cell A1 override command + \param reset: integer - 1 to reset a previous override, 0 to override + \param adc_raw: unsigned int - raw adc value. 0.0894 per gram. 1000 ml = 11,186 + \returns 1 if successful, zero otherwise + + TODO: This is built based on HD but needs more infrastructure made for DG before being operational + """ + + rst = self.outer_instance.integer2ByteArray(reset) + cur = self.outer_instance.float2ByteArray(adc_raw) + payload = rst + cur + + message = DenaliMessage.buildMessage(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=self.MSG_ID_LOAD_CELL_A1_OVERRIDE, + payload=payload) + + print("override load cell A1 raw adc value") + + # Send message + received_message = self.outer_instance.can_interface.send(message) + + # If there is content... + if received_message is not None: + #print(received_message) + if reset == HD.RESET: + str_res = "reset back to normal" + else: + str_res = str(curr) + print("Load cell A1 raw adc (measured) 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: + print("Timeout!!!!") + return False + + +def CmdLoadCellA2Override(self, reset, adc_raw): + """ + Constructs and sends the load cell A2 override command + + \param reset: integer - 1 to reset a previous override, 0 to override + \param adc_raw: unsigned int - raw adc value. 0.0894 per gram. 1000 ml = 11,186 + \returns 1 if successful, zero otherwise + + TODO: This is built based on HD but needs more infrastructure made for DG before being operational + """ + + rst = self.outer_instance.integer2ByteArray(reset) + cur = self.outer_instance.float2ByteArray(adc_raw) + payload = rst + cur + + message = DenaliMessage.buildMessage(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=self.MSG_ID_LOAD_CELL_A2_OVERRIDE, + payload=payload) + + print("override load cell A2 raw adc value") + + # Send message + received_message = self.outer_instance.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == HD.RESET: + str_res = "reset back to normal" + else: + str_res = str(curr) + print("Load cell A2 raw adc (measured) 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: + print("Timeout!!!!") + return False + + +def CmdLoadCellB1Override(self, reset, adc_raw): + """ + Constructs and sends the load cell B1 override command + + \param reset: integer - 1 to reset a previous override, 0 to override + \param adc_raw: unsigned int - raw adc value. 0.0894 per gram. 1000 ml = 11,186 + \returns 1 if successful, zero otherwise + + TODO: This is built based on HD but needs more infrastructure made for DG before being operational + """ + + rst = self.outer_instance.integer2ByteArray(reset) + cur = self.outer_instance.float2ByteArray(adc_raw) + payload = rst + cur + + message = DenaliMessage.buildMessage(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=self.MSG_ID_LOAD_CELL_B1_OVERRIDE, + payload=payload) + + print("override load cell B1 raw adc value") + + # Send message + received_message = self.outer_instance.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == HD.RESET: + str_res = "reset back to normal" + else: + str_res = str(curr) + print("Load cell B1 raw adc (measured) 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: + print("Timeout!!!!") + return False + + +def CmdLoadCellB2Override(self, reset, adc_raw): + """ + Constructs and sends the load cell B2 override command + + \param reset: integer - 1 to reset a previous override, 0 to override + \param adc_raw: unsigned int - raw adc value. 0.0894 per gram. 1000 ml = 11,186 + \returns 1 if successful, zero otherwise + + TODO: This is built based on HD but needs more infrastructure made for DG before being operational + """ + + rst = self.outer_instance.integer2ByteArray(reset) + cur = self.outer_instance.float2ByteArray(adc_raw) + payload = rst + cur + + message = DenaliMessage.buildMessage(channel_id=DenaliChannels.dialin_to_hd_ch_id, + message_id=self.MSG_ID_LOAD_CELL_B2_OVERRIDE, + payload=payload) + + print("override load cell B2 raw adc value") + + # Send message + received_message = self.outer_instance.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == HD.RESET: + str_res = "reset back to normal" + else: + str_res = str(curr) + print("Load cell B2 raw adc (measured) 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: + print("Timeout!!!!") + return False + + def test_dg_start(): dg = DG() sleep(2)