Index: dialin/dg/drain_pump.py =================================================================== diff -u -r9d9105c7dc3379c2e14996522291b23a19e7ba46 -r7b2d65304d1cc925e5000d9621fa195ce6a08cf1 --- dialin/dg/drain_pump.py (.../drain_pump.py) (revision 9d9105c7dc3379c2e14996522291b23a19e7ba46) +++ dialin/dg/drain_pump.py (.../drain_pump.py) (revision 7b2d65304d1cc925e5000d9621fa195ce6a08cf1) @@ -30,7 +30,8 @@ # Drain pump message IDs MSG_ID_DG_DRAIN_PUMP_PUBLISHED_DATA = 0x0024 - MSG_ID_DG_DRAIN_PUMP_SET_SPEED_OVERRIDE = 0xA008 + MSG_ID_DG_DRAIN_PUMP_SET_SPEED_OVERRIDE = 0xA00B + MSG_ID_DG_DRAIN_PUMP_BROADAST_INTERVAL_OVERRIDE = 0xA00C, # Drain pump broadcast message field positions START_POS_SET_SPD = DenaliMessage.PAYLOAD_START_INDEX @@ -109,3 +110,41 @@ else: print("Timeout!!!!") return False + + def cmd_drain_pump_data_broadcast_interval_override(self, ms, reset=NO_RESET): + """ + Constructs and sends the drain pump speed set point override command + + \param ms: integer - interval (in ms) to override with + \param reset: integer - 1 to reset a previous override, 0 to override + \returns 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + mis = integer_to_bytearray(ms) + payload = rst + mis + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_DRAIN_PUMP_BROADAST_INTERVAL_OVERRIDE, + payload=payload) + + print("override drain pump data broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == RESET: + str_res = "reset back to normal" + else: + str_res = str(mis) + print( + "Drain pump data broadcast interval overridden to " + str_res + " ms: " + + 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 Index: dialin/dg/load_cells.py =================================================================== diff -u -r9d9105c7dc3379c2e14996522291b23a19e7ba46 -r7b2d65304d1cc925e5000d9621fa195ce6a08cf1 --- dialin/dg/load_cells.py (.../load_cells.py) (revision 9d9105c7dc3379c2e14996522291b23a19e7ba46) +++ dialin/dg/load_cells.py (.../load_cells.py) (revision 7b2d65304d1cc925e5000d9621fa195ce6a08cf1) @@ -15,8 +15,8 @@ # ############################################################################ import struct -from ..utils.conversions import integer_to_bytearray -from .constants import NO_RESET +from ..utils.conversions import integer_to_bytearray, float_to_bytearray +from .constants import RESET,NO_RESET from ..protocols.CAN import (DenaliMessage, DenaliChannels) @@ -30,6 +30,7 @@ # Pressure/Occlusion message IDs MSG_ID_DG_LOAD_CELL_DATA = 0x000C MSG_ID_DG_LOAD_CELL_OVERRIDE = 0xA005 + MSG_ID_DG_LOAD_CELL_DATA_BROADCAST_INTERVAL_OVERRIDE = 0xA00D # Load cell broadcast message field positions START_POS_LC_A1 = DenaliMessage.PAYLOAD_START_INDEX @@ -91,11 +92,11 @@ self.load_cell_B1 = b1[0] self.load_cell_B2 = b2[0] - def cmd_load_cell_override(self, adc_raw, sensor, reset=NO_RESET): + def cmd_load_cell_override(self, grams, sensor, reset=NO_RESET): """ Constructs and sends the load cell override command - \param adc_raw: unsigned int - raw adc value. 0.0894 per gram. 1000 ml = 11,186 + \param grams: float - weight (in grams) to override sensor with \param sensor: unsigned int - sensor ID \param reset: integer - 1 to reset a previous override, 0 to override \returns 1 if successful, zero otherwise @@ -108,15 +109,15 @@ """ rst = integer_to_bytearray(reset) - adc = integer_to_bytearray(adc_raw) + grm = float_to_bytearray(grams) idx = integer_to_bytearray(sensor) - payload = rst + adc + idx + payload = rst + grm + idx message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, message_id=self.MSG_ID_DG_LOAD_CELL_OVERRIDE, payload=payload) - print("override load cell raw adc value") + print("override load cell weight value for sensor " + str(sensor)) # Send message received_message = self.can_interface.send(message) @@ -129,3 +130,39 @@ print("Timeout!!!!") return False + def cmd_load_cell_data_broadcast_interval_override(self, ms, reset=NO_RESET): + """ + Constructs and sends the load cell data broadcast interval override command + + \param ms: integer - interval (in ms) to override with + \param reset: integer - 1 to reset a previous override, 0 to override + \returns 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + mis = integer_to_bytearray(ms) + payload = rst + mis + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_LOAD_CELL_DATA_BROADCAST_INTERVAL_OVERRIDE, + payload=payload) + + print("override DG load cell broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + if reset == RESET: + str_res = "reset back to normal: " + else: + str_res = str(ms) + " ms: " + print("Load cell data broadcast interval 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 + Index: dialin/dg/pressures.py =================================================================== diff -u -r9d9105c7dc3379c2e14996522291b23a19e7ba46 -r7b2d65304d1cc925e5000d9621fa195ce6a08cf1 --- dialin/dg/pressures.py (.../pressures.py) (revision 9d9105c7dc3379c2e14996522291b23a19e7ba46) +++ dialin/dg/pressures.py (.../pressures.py) (revision 7b2d65304d1cc925e5000d9621fa195ce6a08cf1) @@ -30,6 +30,7 @@ # Pressure message IDs MSG_ID_DG_PRESSURES_DATA = 0x0020 MSG_ID_DG_PRESSURE_OVERRIDE = 0xA006 + MSG_ID_DG_PRESSURE_DATA_BROADCAST_INTERVAL_OVERRIDE = 0xA007 # Pressure broadcast message field positions START_POS_RO_INLET_PRES = DenaliMessage.PAYLOAD_START_INDEX @@ -129,3 +130,34 @@ print("Timeout!!!!") return False + def cmd_pressure_broadcast_interval_override(self, ms, reset=NO_RESET): + """ + Constructs and sends the pressure override command + + \param ms: unsigned int - broadcast interval (in ms) + \param reset: integer - 1 to reset a previous override, 0 to override + \returns 1 if successful, zero otherwise + + """ + + rst = integer_to_bytearray(reset) + ivl = integer_to_bytearray(ms) + payload = rst + ivl + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_PRESSURE_DATA_BROADCAST_INTERVAL_OVERRIDE, + payload=payload) + + print("override pressure data broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # response payload is OK or not OK + return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] + else: + print("Timeout!!!!") + return False + Index: dialin/dg/ro_pump.py =================================================================== diff -u -r9d9105c7dc3379c2e14996522291b23a19e7ba46 -r7b2d65304d1cc925e5000d9621fa195ce6a08cf1 --- dialin/dg/ro_pump.py (.../ro_pump.py) (revision 9d9105c7dc3379c2e14996522291b23a19e7ba46) +++ dialin/dg/ro_pump.py (.../ro_pump.py) (revision 7b2d65304d1cc925e5000d9621fa195ce6a08cf1) @@ -15,7 +15,7 @@ # ############################################################################ import struct -from ..utils.conversions import integer_to_bytearray +from ..utils.conversions import integer_to_bytearray, float_to_bytearray from .constants import RESET, NO_RESET from ..protocols.CAN import (DenaliMessage, DenaliChannels) @@ -30,7 +30,9 @@ # RO pump message IDs MSG_ID_DG_RO_PUMP_PUBLISHED_DATA = 0x001F - MSG_ID_DG_RO_PUMP_PRESSURE_SET_PT_OVERRIDE = 0xA007 + MSG_ID_DG_RO_PUMP_PRESSURE_SET_PT_OVERRIDE = 0xA008 + MSG_ID_DG_RO_FLOW_RATE_OVERRIDE = 0xA009, + MSG_ID_DG_RO_PUMP_BROADCAST_INTERVAL_OVERRIDE = 0xA00A, # RO pump broadcast message field positions START_POS_PRES_SET_PT = DenaliMessage.PAYLOAD_START_INDEX @@ -116,3 +118,79 @@ print("Timeout!!!!") return False + def cmd_ro_flow_rate_override(self, flow, reset=NO_RESET): + """ + Constructs and sends the RO rate override command + + \param flow: float - flow rate (in mL/min) to override with + \param reset: integer - 1 to reset a previous override, 0 to override + \returns 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + flo = float_to_bytearray(flow) + payload = rst + flo + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_RO_FLOW_RATE_OVERRIDE, + payload=payload) + + print("override RO pump pressure set point") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == RESET: + str_res = "reset back to normal" + else: + str_res = str(flo) + print( + "RO flow rate overridden to " + str_res + " mL/min: " + + 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 cmd_ro_pump_data_broadcast_interval_override(self, ms, reset=NO_RESET): + """ + Constructs and sends the RO pump set point override command + + \param ms: integer - time interval (in ms) to broadcast RO pump data + \param reset: integer - 1 to reset a previous override, 0 to override + \returns 1 if successful, zero otherwise + """ + + rst = integer_to_bytearray(reset) + mis = integer_to_bytearray(ms) + payload = rst + mis + + message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_dg_ch_id, + message_id=self.MSG_ID_DG_RO_PUMP_BROADCAST_INTERVAL_OVERRIDE, + payload=payload) + + print("override RO pump data broadcast interval") + + # Send message + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # print(received_message) + if reset == RESET: + str_res = "reset back to normal" + else: + str_res = str(mis) + print( + "RO pump data broadcast interval overridden to " + str_res + " ms: " + + 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 +