Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r95af7422ee77c978beddb9fce98d7ba0f16e12f5 -r82673b44f61604336cf70c0e72db0e332325c8af --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 95af7422ee77c978beddb9fce98d7ba0f16e12f5) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 82673b44f61604336cf70c0e72db0e332325c8af) @@ -34,8 +34,8 @@ MSG_ID_UI_SET_ALARM_AUDIO_VOLUME_LEVEL_CMD_REQUEST = 0xB MSG_ID_TD_ALARM_AUDIO_VOLUME_SET_RESPONSE = 0xC MSG_ID_FW_VERSIONS_REQUEST = 0xD - MSG_ID_TD_VERSION_REPONSE = 0xE - MSG_ID_DD_VERSION_REPONSE = 0xF + MSG_ID_TD_VERSION_RESPONSE = 0xE + MSG_ID_DD_VERSION_RESPONSE = 0xF MSG_ID_UI_CHECK_IN = 0x10 MSG_ID_TD_BLOOD_PUMP_DATA = 0x11 MSG_ID_TD_OP_MODE_DATA = 0x12 @@ -64,21 +64,21 @@ MSG_ID_DD_LEVEL_DATA = 0x29 MSG_ID_TD_AIR_TRAP_DATA = 0x2A MSG_ID_TD_VALVES_DATA = 0x2B - MSG_ID_RO_EVENT = 0x2C - MSG_ID_RO_ALARM_INFO_DATA= 0x2D + MSG_ID_FP_EVENT = 0x2C + MSG_ID_FP_ALARM_INFO_DATA= 0x2D MSG_ID_DD_BAL_CHAMBER_DATA = 0x2E MSG_ID_DD_GEN_DIALYSATE_MODE_DATA = 0x2F MSG_ID_DD_GEN_DIALYSATE_REQUEST_DATA = 0x30 - MSG_ID_RO_VALVES_STATES_DATA = 0x31 - MSG_ID_RO_PUMP_DATA = 0x32 - MSG_ID_RO_OP_MODE_DATA = 0x33 - MSG_ID_RO_PRESSURES_DATA = 0x34 - MSG_ID_RO_LEVEL_DATA = 0x35 - MSG_ID_RO_FLOW_DATA = 0x36 - MSG_ID_RO_CONDUCTIVITY_DATA = 0x37 - MSG_ID_DD_RO_START_STOP_CMD_REQUEST = 0x38 - MSG_ID_RO_TEMPERATURE_DATA = 0x39 - MSG_ID_RO_HEATER_DATA = 0x3A + MSG_ID_FP_VALVES_STATES_DATA = 0x31 + MSG_ID_FP_RO_PUMP_DATA = 0x32 + MSG_ID_FP_OP_MODE_DATA = 0x33 + MSG_ID_FP_PRESSURES_DATA = 0x34 + MSG_ID_FP_LEVEL_DATA = 0x35 + MSG_ID_FP_FLOW_DATA = 0x36 + MSG_ID_FP_CONDUCTIVITY_DATA = 0x37 + MSG_ID_DD_FP_START_STOP_CMD_REQUEST = 0x38 + MSG_ID_FP_TEMPERATURE_DATA = 0x39 + MSG_ID_FP_HEATER_DATA = 0x3A MSG_ID_TD_TREATMENT_TIME_DATA = 0x3B MSG_ID_TD_TREATMENT_STATE_DATA = 0x3C MSG_ID_TD_SALINE_BOLUS_DATA = 0x3D @@ -93,18 +93,26 @@ MSG_ID_TD_RESP_INITIATE_TREATMENT_WORKFLOW = 0x46 MSG_ID_UI_UF_PAUSE_RESUME_REQUEST = 0x47 MSG_ID_TD_UF_PAUSE_RESUME_RESPONSE = 0x48 - MSG_ID_RO_GEN_PERMEATE_MODE_DATA = 0x49 + MSG_ID_FP_GEN_PERMEATE_MODE_DATA = 0x49 MSG_ID_DD_PRE_GEN_DIALYSATE_STATE_DATA = 0x4A MSG_ID_DD_POST_GEN_DIALYSATE_STATE_DATA = 0x4B MSG_ID_DD_PRE_GEN_DIALYSATE_REQUEST_DATA = 0x4C - MSG_ID_RO_PRE_GEN_WATER_MODE_DATA = 0x4D + MSG_ID_FP_PRE_GEN_WATER_MODE_DATA = 0x4D MSG_ID_TD_EJECTOR_DATA = 0x4E MSG_ID_TD_TREATMENT_SET_POINTS = 0x4F - MSG_ID_RO_BOOST_PUMP_DATA = 0x50 + MSG_ID_FP_BOOST_PUMP_DATA = 0x50 MSG_ID_TD_SERIAL_RESPONSE = 0x51 MSG_ID_DD_SERIAL_RESPONSE = 0x52 MSG_ID_TD_TEMPERATURE_DATA = 0x53 MSG_ID_TD_BATTERY_DATA = 0x54 + MSG_ID_DD_UF_DATA = 0x55 + MSG_ID_FP_PERMEATE_FLUSH_DATA = 0x56 + MSG_ID_FP_CONCENTRATE_FLUSH_DATA = 0x57 + MSG_ID_FP_GENP_DEF_DATA = 0x58 + MSG_ID_FP_PRE_GEN_DEF_DATA = 0x59 + MSG_ID_FP_VERSION_RESPONSE = 0x5A + MSG_ID_TD_TREATMENT_PAUSED_TIMER_DATA = 0x5B + MSG_ID_FP_PERMEATE_TANK_DATA = 0x5C MSG_ID_DD_BLOOD_LEAK_DATA = 0x60 MSG_ID_DD_PISTON_PUMP_CONTROL_DATA = 0xF0 @@ -165,6 +173,9 @@ MSG_ID_TD_EJECTOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0x8034 MSG_ID_TD_SET_AIR_TRAP_CONTROL = 0x8035 MSG_ID_TD_HOME_BLOOD_PUMP_REQUEST = 0x8036 + MSG_ID_TD_BLOOD_FLOW_ALPHA_Y_INTERCEPT_OVERRIDE_REQUEST = 0x8037 + MSG_ID_TD_BLOOD_FLOW_WEAR_A_TERM_OVERRIDE_REQUEST = 0x8038 + MSG_ID_TD_BLOOD_FLOW_WEAR_B_TERM_OVERRIDE_REQUEST = 0x8039 MSG_ID_DD_TESTER_LOGIN_REQUEST = 0xA000 MSG_ID_DD_SOFTWARE_RESET_REQUEST = 0xA001 @@ -208,13 +219,13 @@ MSD_ID_DD_TD_COMMUNICATION_STATUS_OVERRIDE_REQUEST = 0xA027 MSG_ID_DD_OP_MODE_STATUS_OVERRIDE_REQUEST = 0xA028 MSG_ID_DD_SET_OPERATION_MODE_OVERRIDE_REQUEST = 0xA029 - MSG_ID_DD_START_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST = 0xA02A + MSG_ID_DD_UF_DATA_PUBLISH_OVERRIDE_REQUEST = 0xA02A MSG_ID_DD_DIALYSATE_PUMPS_START_STOP_OVERRIDE_REQUEST = 0xA02B MSG_ID_DD_GEND_MODE_DATA_PUBLISH_OVERRIDE_REQUEST = 0xA02C MSG_ID_DD_CONCENTRATE_PUMPS_START_STOP_OVERRIDE_REQUEST = 0xA02D MSG_ID_DD_HEATERS_START_STOP_OVERRIDE_REQUEST = 0xA02E MSG_ID_DD_VALVES_OPEN_CLOSE_STATE_OVERRIDE_REQUEST = 0xA02F - MSD_ID_DD_RO_COMMUNICATION_STATUS_OVERRIDE_REQUEST = 0xA030 + MSD_ID_DD_FP_COMMUNICATION_STATUS_OVERRIDE_REQUEST = 0xA030 MSG_ID_DD_BAL_CHAMBER_DATA_PUBLISH_OVERRIDE_REQUEST = 0xA031 MSG_ID_DD_BAL_CHAMBER_SWITCH_FREQ_OVERRIDE_REQUEST = 0xA032 MSG_ID_DD_DIAL_DELIVERY_IN_PROGRESS_OVERRIDE_REQUEST = 0xA033 @@ -232,47 +243,62 @@ MSG_ID_DD_START_PRE_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST = 0xA03F MSG_ID_DD_STOP_PRE_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST = 0xA040 MSG_ID_DD_STOP_GEN_DIALYSATE_MODE_OVERRIDE_REQUEST = 0xA041 + MSG_ID_DD_SAFETY_SHUTDOWN_OVERRIDE_REQUEST = 0xA042 + MSG_ID_DD_ALARM_STATE_OVERRIDE_REQUEST = 0xA043 MSG_ID_DD_PISTON_PUMP_DATA_PUBLISH_OVERRIDE_REQUEST = 0xAF00 MSG_ID_DD_PISTON_PUMP_START_STOP_OVERRIDE_REQUEST = 0xAF01 MSG_ID_DD_PISTON_PUMP_FILL_AFTER_DISPENSE_OVERRIDE_REQUEST = 0xAF02 - MSG_ID_RO_TESTER_LOGIN_REQUEST = 0xB000 - MSG_ID_RO_SOFTWARE_RESET_REQUEST = 0xB001 - MSG_ID_RO_SEND_TEST_CONFIGURATION = 0xB002 - MSG_ID_RO_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB003 - MSG_ID_RO_VALVE_CMD_STATE_OVERRIDE_REQUEST = 0xB004 - MSG_ID_RO_VALVE_SENSED_STATE_OVERRIDE_REQUEST = 0xB005 - MSG_ID_RO_BOOST_PUMP_SET_PWM_REQUEST = 0xB006 - MSG_ID_RO_BOOST_PUMP_READ_PWM_OVERRIDE_REQUEST = 0xB007 - MSG_ID_RO_BOOST_PUMP_SPEED_OVERRIDE_REQUEST = 0xB008 - MSG_ID_RO_BOOST_PUMPS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB009 - MSG_ID_RO_PRESSURE_OVERRIDE_REQUEST = 0xB00A - MSG_ID_RO_PRESSURE_TEMP_OVERRIDE_REQUEST = 0xB00B - MSG_ID_RO_PRESSURE_READ_COUNT_OVERRIDE_REQUEST = 0xB00C - MSG_ID_RO_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST = 0xB00D - MSG_ID_RO_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00E - MSG_ID_RO_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00F - MSG_ID_RO_LEVEL_OVERRIDE_REQUEST = 0xB010 - MSG_ID_RO_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB011 - MSG_ID_RO_FLOW_RATE_OVERRIDE_REQUEST = 0xB012 - MSG_ID_RO_FLOW_TEMP_OVERRIDE_REQUEST = 0xB013 - MSG_ID_RO_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB014 - MSG_ID_RO_CONDUCTIVITY_OVERRIDE_REQUEST = 0xB015 - MSG_ID_RO_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST = 0xB016 - MSG_ID_RO_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST = 0xB017 - MSG_ID_RO_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST = 0xB018 - MSG_ID_RO_TEMPERATURE_OVERRIDE_REQUEST = 0xB019 - MSG_ID_RO_FILTERED_FLOW_RATE_OVERRIDE_REQUEST = 0xB01A - MSG_ID_RO_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST = 0xB01B - MSG_ID_RO_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01C - MSG_ID_RO_SET_OP_MODE_REQUEST = 0xB01D - MSG_ID_RO_OPERATION_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01E - MSG_ID_RO_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01F + MSG_ID_FP_TESTER_LOGIN_REQUEST = 0xB000 + MSG_ID_FP_SOFTWARE_RESET_REQUEST = 0xB001 + MSG_ID_FP_SEND_TEST_CONFIGURATION = 0xB002 + MSG_ID_FP_VALVE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB003 + MSG_ID_FP_VALVE_CMD_STATE_OVERRIDE_REQUEST = 0xB004 + MSG_ID_FP_VALVE_SENSED_STATE_OVERRIDE_REQUEST = 0xB005 + MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST = 0xB006 + MSG_ID_FP_FLUID_PUMP_READ_PWM_OVERRIDE_REQUEST = 0xB007 + MSG_ID_FP_FLUID_PUMP_SPEED_OVERRIDE_REQUEST = 0xB008 + MSG_ID_FP_RO_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB009 + MSG_ID_FP_PRESSURE_OVERRIDE_REQUEST = 0xB00A + MSG_ID_FP_PRESSURE_TEMP_OVERRIDE_REQUEST = 0xB00B + MSG_ID_FP_PRESSURE_READ_COUNT_OVERRIDE_REQUEST = 0xB00C + MSG_ID_FP_PRESSURE_ERROR_COUNT_OVERRIDE_REQUEST = 0xB00D + MSG_ID_FP_PRESSURE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00E + MSG_ID_FP_LEVEL_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB00F + MSG_ID_FP_LEVEL_OVERRIDE_REQUEST = 0xB010 + MSG_ID_FP_FLOWS_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB011 + MSG_ID_FP_FLOW_RATE_OVERRIDE_REQUEST = 0xB012 + MSG_ID_FP_FLOW_TEMP_OVERRIDE_REQUEST = 0xB013 + MSG_ID_FP_CONDUCTIVITY_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB014 + MSG_ID_FP_CONDUCTIVITY_OVERRIDE_REQUEST = 0xB015 + MSG_ID_FP_CONDUCTIVITY_TEMP_OVERRIDE_REQUEST = 0xB016 + MSG_ID_FP_CONDUCTIVITY_READ_COUNT_OVERRIDE_REQUEST = 0xB017 + MSG_ID_FP_CONDUCTIVITY_ERROR_COUNT_OVERRIDE_REQUEST = 0xB018 + MSG_ID_FP_TEMPERATURE_OVERRIDE_REQUEST = 0xB019 + MSG_ID_FP_FILTERED_FLOW_RATE_OVERRIDE_REQUEST = 0xB01A + MSG_ID_FP_FILTERED_FLOW_TEMP_OVERRIDE_REQUEST = 0xB01B + MSG_ID_FP_PRE_GEN_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01C + MSG_ID_FP_SET_OP_MODE_REQUEST = 0xB01D + MSG_ID_FP_OPERATION_MODE_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01E + MSG_ID_FP_TEMPERATURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB01F + MSG_ID_FP_RO_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST = 0xB020 + MSG_ID_FP_RO_PUMP_TARGET_FLOW_OVERRIDE_REQUEST = 0xB021 + MSG_ID_FP_RO_PUMP_TARGET_PWM_OVERRIDE_REQUEST = 0xB022 + MSG_ID_FP_BOOST_PUMP_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB023 + MSG_ID_FP_BOOST_PUMP_TARGET_PRESSURE_OVERRIDE_REQUEST = 0xB024 + MSG_ID_FP_BOOST_PUMP_TARGET_FLOW_OVERRIDE_REQUEST = 0xB025 + MSG_ID_FP_BOOST_PUMP_TARGET_PWM_OVERRIDE_REQUEST = 0xB026 + MSG_ID_FP_BOOST_PUMP_STOP_REQUEST = 0xB027 + MSG_ID_FP_RO_PUMP_STOP_REQUEST = 0xB028 + MSG_ID_FP_SAFETY_SHUTDOWN_OVERRIDE_REQUEST = 0xB029 + MSG_ID_FP_PERMEATE_TANK_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB02A + MSG_ID_FP_ALARM_STATE_OVERRIDE_REQUEST = 0xB02B + MSG_ID_FP_ALARM_CLEAR_ALL_ALARMS_REQUEST = 0xB02C MSG_ID_TD_DEBUG_EVENT = 0xFFF1 MSG_ID_DD_DEBUG_EVENT = 0xFFF2 - MSG_ID_RO_DEBUG_EVENT = 0xFFF3 + MSG_ID_FP_DEBUG_EVENT = 0xFFF3 MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK = 0xFFFF \ No newline at end of file Index: leahi_dialin/ui/dd_messaging.py =================================================================== diff -u -rc587268b85d4b16b4102869d2841be84f3a2a23f -r82673b44f61604336cf70c0e72db0e332325c8af --- leahi_dialin/ui/dd_messaging.py (.../dd_messaging.py) (revision c587268b85d4b16b4102869d2841be84f3a2a23f) +++ leahi_dialin/ui/dd_messaging.py (.../dd_messaging.py) (revision 82673b44f61604336cf70c0e72db0e332325c8af) @@ -37,12 +37,13 @@ D43: float, D74: float): """ - Broadcasts DD generate conductivity data - @param D17 (float): Bicarb only conductivity sensor 1 - @param D27 (float): Acid and Bicarb mix conductivity sensor 1 - @param D29 (float): Acid and Bicarb mix conductivity sensor 2 - @param D43 (float): Spent dialysate conductivity sensor - @param D74 (float): Bicarb only conductivity sensor 2 + Broadcasts DD generate conductivity data (Msg ID: 0x1F, 31) + Args: + @param D17 (float): Bicarb only conductivity sensor 1 + @param D27 (float): Acid and Bicarb mix conductivity sensor 1 + @param D29 (float): Acid and Bicarb mix conductivity sensor 2 + @param D43 (float): Spent dialysate conductivity sensor + @param D74 (float): Bicarb only conductivity sensor 2 @return: None """ payload = conversions.float_to_bytearray(D17 ) @@ -69,16 +70,17 @@ D51_spend_pressure : float , is_dial_good : int ): """ - Broadcasts DD generate dialysate data - @param gen_dialysate_exec (int ): Generate dialysate execution state - @param dd_in_progress (int ): Dialysate Delivery in Progress Bool - @param D6_floater_level_1 (int ): Floater level (low, medium and high) - @param D63_bicarb_level (int ): BiCarb Chamber level - @param D46_spent_level (int ): Spent dialysate chamber level - @param D9_hyd_negative_press (float): Hydraulics chamber negative pressure - @param D18_hyd_positive_press (float): Hydraulics chamber positive pressure - @param D51_spend_pressure (float): Spent Dialysate positive pressure - @param is_dial_good (int ): Ready to deliver dialysate or not + Broadcasts DD generate dialysate data (Msg ID: 0x2F, 47) + Args: + @param gen_dialysate_exec (int ): Generate dialysate execution state + @param dd_in_progress (int ): Dialysate Delivery in Progress Bool + @param D6_floater_level_1 (int ): Floater level (low, medium and high) + @param D63_bicarb_level (int ): BiCarb Chamber level + @param D46_spent_level (int ): Spent dialysate chamber level + @param D9_hyd_negative_press (float): Hydraulics chamber negative pressure + @param D18_hyd_positive_press (float): Hydraulics chamber positive pressure + @param D51_spend_pressure (float): Spent Dialysate positive pressure + @param is_dial_good (int ): Ready to deliver dialysate or not @return: None """ payload = conversions.unsigned_integer_to_bytearray(gen_dialysate_exec ) @@ -102,7 +104,7 @@ fpga_id: int, fpga_major: int, fpga_minor: int, fpga_lab: int, compatibility_rev: int): """ - Broadcasts the current dd Version Data + Broadcasts the current dd Version Data (Msg ID: 0x0F, 15) @param major: (uint) - Major version number @param minor: (uint) - Minor version number @param micro: (uint) - Micro version number @@ -137,7 +139,7 @@ def dd_serial(self, serial: str): """ - the dd version serial response message method + the dd version serial response message method (Msg ID: 0x52, 82) @param serial: serial number @return: None """ @@ -149,4 +151,492 @@ message_id=msg_ids.MsgIds.MSG_ID_DD_SERIAL_RESPONSE.value, payload=payload) + self.can_interface.send(message, 0) + + def dd_levels(self, d6Level : int, + d63Level: int, + d46Level: int): + """ + Broadcasts the current DD Level Sensor data (Msg ID: 0x29, 41) + Args: + d6Level (int ): floater switch low, medium and high status + d63Level (int ): bicarb level low or high status + d46Level (int ): Spent dialysate air separation chamber level low or high status + + """ + payload = conversions.unsigned_integer_to_bytearray(d6Level ) + payload += conversions.unsigned_integer_to_bytearray(d63Level ) + payload += conversions.unsigned_integer_to_bytearray(d46Level ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_LEVEL_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_pressure(self, m1Pressure : float, + m3Pressure : float, + d9Pressure : float, + d66Pressure : float, + d51Pressure : float, + d18Pressure : float, + d41Pressure : float, + m1PresTemp : float, + m3PresTemp : float, + d9PresTemp : float, + d66PresTemp : float, + d51PresTemp : float, + d18PresTemp : float, + d41PresTemp : float): + """ + Broadcasts the current DD Level Sensor data (Msg ID: 0x1C, 28) + Args: + m1Pressure (float): Water Inlet Input pressure + m3Pressure (float): Water Inlet Output pressure + d9Pressure (float): Hydraulics outlet pressure + d66Pressure (float): Bicarb bag pressure + d51Pressure (float): Spent Dialysate pressure + d18Pressure (float): Fresh Dialysate pressure + d41Pressure (float): Transmembrane pressure + m1PresTemp (float): Water Inlet Input temperature + m3PresTemp (float): Water Inlet Output temperature + d9PresTemp (float): Hydraulics outlet pressure temperature + d66PresTemp (float): Bicarb bag temperature + d51PresTemp (float): Spent Dialysate temperature + d18PresTemp (float): Fresh Dialysate temperature + d41PresTemp (float): Transmembrane temperature + + """ + payload = conversions.float_to_bytearray(m1Pressure ) + payload += conversions.float_to_bytearray(m3Pressure ) + payload += conversions.float_to_bytearray(d9Pressure ) + payload += conversions.float_to_bytearray(d66Pressure ) + payload += conversions.float_to_bytearray(d51Pressure ) + payload += conversions.float_to_bytearray(d18Pressure ) + payload += conversions.float_to_bytearray(d41Pressure ) + payload += conversions.float_to_bytearray(m1PresTemp ) + payload += conversions.float_to_bytearray(m3PresTemp ) + payload += conversions.float_to_bytearray(d9PresTemp ) + payload += conversions.float_to_bytearray(d66PresTemp ) + payload += conversions.float_to_bytearray(d51PresTemp ) + payload += conversions.float_to_bytearray(d18PresTemp ) + payload += conversions.float_to_bytearray(d41PresTemp ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_PRESSURES_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_temperature(self, d1Temp : float, + x6Temp : float, + d4Temp : float, + d50Temp : float, + boardTemp : float, + baroTemp : float, + d16CondTemp : float, + d28CondTemp : float, + d30CondTemp : float, + d44CondTemp : float, + d75CondTemp : float, + d4AvgTemp : float, + d50AvgTemp : float, + d28AvgTemp : float, + d30AvgTemp : float): + """ + Broadcasts the current DD Level Sensor data (Msg ID: 0x26, 38) + Args: + d1Temp (float) : Inlet heat exchanger temperature sensor + x6Temp (float) : Outlet heat exchanger temperature sensor + d4Temp (float) : Hydraulics primary heater temperature sensor + d50Temp (float) : Trimmer heater temperature sensor + boardTemp (float) : Board temperature sensor + baroTemp (float) : Barometric temperature sensor + d16CondTemp (float) : D16 temperature value + d28CondTemp (float) : D28 temperature value + d30CondTemp (float) : D30 temperature value + d44CondTemp (float) : D44 temperature value + d75CondTemp (float) : D75 temperature value + d4AvgTemp (float) : D4 moving average temperature value + d50AvgTemp (float) : D50 moving average temperature value + d28AvgTemp (float) : D28 moving average temperature value + d30AvgTemp (float) : D30 moving average temperature value + + """ + payload = conversions.float_to_bytearray(d1Temp ) + payload += conversions.float_to_bytearray(x6Temp ) + payload += conversions.float_to_bytearray(d4Temp ) + payload += conversions.float_to_bytearray(d50Temp ) + payload += conversions.float_to_bytearray(boardTemp ) + payload += conversions.float_to_bytearray(baroTemp ) + payload += conversions.float_to_bytearray(d16CondTemp ) + payload += conversions.float_to_bytearray(d28CondTemp ) + payload += conversions.float_to_bytearray(d30CondTemp ) + payload += conversions.float_to_bytearray(d44CondTemp ) + payload += conversions.float_to_bytearray(d75CondTemp ) + payload += conversions.float_to_bytearray(d4AvgTemp ) + payload += conversions.float_to_bytearray(d50AvgTemp ) + payload += conversions.float_to_bytearray(d28AvgTemp ) + payload += conversions.float_to_bytearray(d30AvgTemp ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_TEMPERATURE_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_heaters(self, d5_HeaterDC : float, + d45_HeaterDC : float, + d5_HeaterTargetTemp : float, + d45_HeaterTargetTemp : float, + d5_HeaterState : int , + d45_HeaterState : int , + d5_HeaterControlCounter : int , + d45_HeaterControlCounter: int , + dbg1 : float = 0, + dbg2 : float = 0, + dbg3 : float = 0, + dbg4 : float = 0, + dbg5 : float = 0, + dbg6 : float = 0, + dbg7 : float = 0, + dbg8 : float = 0, + dbg9 : float = 0): + """ + Broadcasts the current DD Heaters data (Msg ID: 0x28, 40) + Args: + d5_HeaterDC (float) : Inlet heat exchanger temperature sensor + d45_HeaterDC (float) : Outlet heat exchanger temperature sensor + d5_HeaterTargetTemp (float) : Hydraulics primary heater temperature sensor + d45_HeaterTargetTemp (float) : Trimmer heater temperature sensor + d5_HeaterState (float) : Board temperature sensor + d45_HeaterState (float) : Barometric temperature sensor + d5_HeaterControlCounter (float) : D16 temperature value + d45_HeaterControlCounter (float) : D28 temperature value + dbg1 (optional) (float) : D28 temperature value + dbg2 (optional) (float) : D28 temperature value + dbg3 (optional) (float) : D30 temperature value + dbg4 (optional) (float) : D44 temperature value + dbg5 (optional) (float) : D75 temperature value + dbg6 (optional) (float) : D4 moving average temperature value + dbg7 (optional) (float) : D50 moving average temperature value + dbg8 (optional) (float) : D28 moving average temperature value + dbg9 (optional) (float) : D30 moving average temperature value + + """ + payload = conversions.float_to_bytearray (d5_HeaterDC ) + payload += conversions.float_to_bytearray (d45_HeaterDC ) + payload += conversions.float_to_bytearray (d5_HeaterTargetTemp ) + payload += conversions.float_to_bytearray (d45_HeaterTargetTemp ) + payload += conversions.unsigned_integer_to_bytearray(d5_HeaterState ) + payload += conversions.unsigned_integer_to_bytearray(d45_HeaterState ) + payload += conversions.unsigned_integer_to_bytearray(d5_HeaterControlCounter ) + payload += conversions.unsigned_integer_to_bytearray(d45_HeaterControlCounter) + payload += conversions.float_to_bytearray (dbg1 ) + payload += conversions.float_to_bytearray (dbg2 ) + payload += conversions.float_to_bytearray (dbg3 ) + payload += conversions.float_to_bytearray (dbg4 ) + payload += conversions.float_to_bytearray (dbg5 ) + payload += conversions.float_to_bytearray (dbg6 ) + payload += conversions.float_to_bytearray (dbg7 ) + payload += conversions.float_to_bytearray (dbg8 ) + payload += conversions.float_to_bytearray (dbg9 ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_HEATERS_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_concentrate_pump(self, d11PumpCurrentSetSpeed : float , + d11PumpMeasuredSpeed : float , + d10PumpCurrentSetSpeed : float , + d10PumpMeasuredSpeed : float , + d11PumpTargetRevCount : int , + d11PumpMeasuredRevCount : int , + d10PumpTargetRevCount : int , + d10PumpMeasuredRevCount : int , + d11PumpState : int , + d10PumpState : int , + d11PumpPulseUS : float , + d10PumpPulseUS : float , + d11PumpTargetSpeed : float , + d10PumpTargetSpeed : float , + d11PumpParked : int , + d10PumpParked : int , + d11PumpParkFault : int , + d10PumpParkFault : int , + d76PumpTargetSpeed : float , + d76PumpCurrentSetSpeed : float , + d76PumpMeasuredSpeed : float , + d76PumpTargetRevCount : int , + d76PumpMeasuredRevCount : int , + d76PumpState : int , + d76PumpPulseUS : float ): + """ + Broadcasts the current DD Concentrate Pumps data (Msg ID: 0x25, 37) + Args: + d11PumpCurrentSetSpeed (float) : Concentrate pump D11_Pump current set speed + d11PumpMeasuredSpeed (float) : Concentrate pump D11_Pump measured speed + d10PumpCurrentSetSpeed (float) : Concentrate pump D10_Pump current set speed + d10PumpMeasuredSpeed (float) : Concentrate pump D10_Pump measured speed + d11PumpTargetRevCount (int ) : Concentrate pump D11_Pump target revolution count + d11PumpMeasuredRevCount (int ) : Concentrate pump D11_Pump measured revolution count + d10PumpTargetRevCount (int ) : Concentrate pump D10_Pump target revolution count + d10PumpMeasuredRevCount (int ) : Concentrate pump D10_Pump measured revolution count + d11PumpState (int ) : Concentrate pump D11_Pump current state + d10PumpState (int ) : Concentrate pump D10_Pump current state + d11PumpPulseUS (float) : Concentrate pump D11_Pump pulse in microseconds + d10PumpPulseUS (float) : Concentrate pump D10_Pump pulse in microseconds + d11PumpTargetSpeed (float) : Concentrate pump D11_Pump target speed + d10PumpTargetSpeed (float) : Concentrate pump D10_Pump target speed + d11PumpParked (int ) : Concentrate pump D11_Pump parked status + d10PumpParked (int ) : Concentrate pump D10_Pump parked status + d11PumpParkFault (int ) : Concentrate pump D11_Pump park fault status + d10PumpParkFault (int ) : Concentrate pump D10_Pump park fault status + d76PumpTargetSpeed (float) : Concentrate pump D76_Pump target speed + d76PumpCurrentSetSpeed (float) : Concentrate pump D76_Pump current set speed + d76PumpMeasuredSpeed (float) : Concentrate pump D76_Pump measured speed + d76PumpTargetRevCount (int ) : Concentrate pump D76_Pump target revolution count + d76PumpMeasuredRevCount (int ) : Concentrate pump D76_Pump measured revolution cou + d76PumpState (int ) : Concentrate pump D76_Pump current state + d76PumpPulseUS (float) : Concentrate pump D76_Pump pulse in microseconds + + """ + payload = conversions.float_to_bytearray (d11PumpCurrentSetSpeed ) + payload += conversions.float_to_bytearray (d11PumpMeasuredSpeed ) + payload += conversions.float_to_bytearray (d10PumpCurrentSetSpeed ) + payload += conversions.float_to_bytearray (d10PumpMeasuredSpeed ) + payload += conversions.unsigned_integer_to_bytearray(d11PumpTargetRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d11PumpMeasuredRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d10PumpTargetRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d10PumpMeasuredRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d11PumpState ) + payload += conversions.unsigned_integer_to_bytearray(d10PumpState ) + payload += conversions.float_to_bytearray (d11PumpPulseUS ) + payload += conversions.float_to_bytearray (d10PumpPulseUS ) + payload += conversions.float_to_bytearray (d11PumpTargetSpeed ) + payload += conversions.float_to_bytearray (d10PumpTargetSpeed ) + payload += conversions.unsigned_integer_to_bytearray(d11PumpParked ) + payload += conversions.unsigned_integer_to_bytearray(d10PumpParked ) + payload += conversions.unsigned_integer_to_bytearray(d11PumpParkFault ) + payload += conversions.unsigned_integer_to_bytearray(d10PumpParkFault ) + payload += conversions.float_to_bytearray (d76PumpTargetSpeed ) + payload += conversions.float_to_bytearray (d76PumpCurrentSetSpeed ) + payload += conversions.float_to_bytearray (d76PumpMeasuredSpeed ) + payload += conversions.unsigned_integer_to_bytearray(d76PumpTargetRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d76PumpMeasuredRevCount ) + payload += conversions.unsigned_integer_to_bytearray(d76PumpState ) + payload += conversions.float_to_bytearray (d76PumpPulseUS ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + + def dd_dialysate_pump(self, d12PumpTargetRPM : float , + d48PumpTargetRPM : float , + d12PumpMeasuredSpeed : float , + d48PumpMeasuredSpeed : float , + d12PumpCurrentSpeed : float , + d48PumpCurrentSpeed : float , + d12PumpState : int , + d48PumpState : int , + d12PumpTargetPressure : float , + d48PumpTargetPressure : float , + d12PumpMeasuredPressure : float , + d48PumpMeasuredPressure : float , + d12PumpMeasuredCurrent : float , + d48PumpMeasuredCurrent : float , + d12PumpControl : int , + d48PumpControl : int , + d12PumpDirErrCnt : int , + d48PumpDirErrCnt : int , + d12PumpMeasuredDir : int , + d48PumpMeasuredDir : int ): + """ + Broadcasts the current DD Dialysate Pump data (Msg ID: 0x27, 39) + Args: + d12PumpTargetRPM (float) : Dialysate pump D11_Pump current set speed + d48PumpTargetRPM (float) : Dialysate pump D11_Pump measured speed + d12PumpMeasuredSpeed (float) : Dialysate pump D10_Pump current set speed + d48PumpMeasuredSpeed (float) : Dialysate pump D10_Pump measured speed + d12PumpCurrentSpeed (float) : Dialysate pump D11_Pump target revolution count + d48PumpCurrentSpeed (float) : Dialysate pump D11_Pump measured revolution count + d12PumpState (int ) : Dialysate pump D10_Pump target revolution count + d48PumpState (int ) : Dialysate pump D10_Pump measured revolution count + d12PumpTargetPressure (float) : Dialysate pump D11_Pump current state + d48PumpTargetPressure (float) : Dialysate pump D10_Pump current state + d12PumpMeasuredPressure (float) : Dialysate pump D11_Pump pulse in microseconds + d48PumpMeasuredPressure (float) : Dialysate pump D10_Pump pulse in microseconds + d12PumpMeasuredCurrent (float) : Dialysate pump D11_Pump target speed + d48PumpMeasuredCurrent (float) : Dialysate pump D10_Pump target speed + d12PumpControl (int ) : Dialysate pump D11_Pump parked status + d48PumpControl (int ) : Dialysate pump D10_Pump parked status + d12PumpDirErrCnt (int ) : Dialysate pump D11_Pump park fault status + d48PumpDirErrCnt (int ) : Dialysate pump D10_Pump park fault status + d12PumpMeasuredDir (int ) : Dialysate pump D76_Pump target speed + d48PumpMeasuredDir (int ) : Dialysate pump D76_Pump current set speed + + """ + payload = conversions.float_to_bytearray (d12PumpTargetRPM ) + payload += conversions.float_to_bytearray (d48PumpTargetRPM ) + payload += conversions.float_to_bytearray (d12PumpMeasuredSpeed ) + payload += conversions.float_to_bytearray (d48PumpMeasuredSpeed ) + payload += conversions.float_to_bytearray (d12PumpCurrentSpeed ) + payload += conversions.float_to_bytearray (d48PumpCurrentSpeed ) + payload += conversions.unsigned_integer_to_bytearray(d12PumpState ) + payload += conversions.unsigned_integer_to_bytearray(d48PumpState ) + payload += conversions.float_to_bytearray (d12PumpTargetPressure ) + payload += conversions.float_to_bytearray (d48PumpTargetPressure ) + payload += conversions.float_to_bytearray (d12PumpMeasuredPressure ) + payload += conversions.float_to_bytearray (d48PumpMeasuredPressure ) + payload += conversions.float_to_bytearray (d12PumpMeasuredCurrent ) + payload += conversions.float_to_bytearray (d48PumpMeasuredCurrent ) + payload += conversions.unsigned_integer_to_bytearray(d12PumpControl ) + payload += conversions.unsigned_integer_to_bytearray(d48PumpControl ) + payload += conversions.unsigned_integer_to_bytearray(d12PumpDirErrCnt ) + payload += conversions.unsigned_integer_to_bytearray(d48PumpDirErrCnt ) + payload += conversions.unsigned_integer_to_bytearray(d12PumpMeasuredDir ) + payload += conversions.unsigned_integer_to_bytearray(d48PumpMeasuredDir ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DIALYSATE_PUMPS_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_blood_leak(self, blood_leak: int): + """ + Broadcasts the current DD Level Sensor data (Msg ID: 0x60, 96) + Args: + blood_leak (int ): Blood Leak status + + """ + payload = conversions.unsigned_integer_to_bytearray(blood_leak ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_BLOOD_LEAK_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def dd_valves(self, D14_VALV : bool, + D52_VALV : bool, + D8_VALV : bool, + D54_VALV : bool, + D53_VALV : bool, + D34_VALV : bool, + D64_VALV : bool, + D31_VALV : bool, + D65_VALV : bool, + D35_VALV : bool, + D40_VALV : bool, + D47_VALV : bool, + D3_VALV : bool, + M4_VALV : bool, + RSRVD_SPACE1 : bool, + RSRVD_SPACE2 : bool, + D23_VALV : bool, + D19_VALV : bool, + D25_VALV : bool, + D26_VALV : bool, + D24_VALV : bool, + D20_VALV : bool, + D21_VALV : bool, + D22_VALV : bool, + D69_VALV : bool, + D71_VALV : bool, + D70_VALV : bool, + D72_VALV : bool, + valvesensedState: list): + """ + Broadcasts the current DD Valve data (Msg ID: 0x1B, 27) + Args: + D14_VALV (bool ): Valve Hydraulics Outlet (D14) + D52_VALV (bool ): Valve Thermal Disinfect (D52) + D8_VALV (bool ): Valve Hydraulics Bypass (D8) + D54_VALV (bool ): Valve Rinse Port (D54) + D53_VALV (bool ): Valve Drain (D53) + D34_VALV (bool ): Valve Dialyzer Bypass (D34) + D64_VALV (bool ): Valve Purge 1 (D64) + D31_VALV (bool ): Valve Pressure Test (D31) + D65_VALV (bool ): Valve DryBcarb Inlet (D65) + D35_VALV (bool ): Valve Dialyzer Inlet (D35) + D40_VALV (bool ): Valve Dialyzer Outlet (D40) + D47_VALV (bool ): Valve Dialysate Out Purge 2 (D47) + D3_VALV (bool ): Valve Hydraulics Inlet (D3) + M4_VALV (bool ): Valve Water Inlet (M4) + RSRVD_SPACE1 (bool ): This space has been reserved + RSRVD_SPACE2 (bool ): This space has been reserved + D23_VALV (bool ): Balancing chamber Valve 1 (D23) + D19_VALV (bool ): Balancing chamber Valve 2 (D19) + D25_VALV (bool ): Balancing chamber Valve 3 (D25) + D26_VALV (bool ): Balancing chamber Valve 7 (D26) + D24_VALV (bool ): Balancing chamber Valve 5 (D24) + D20_VALV (bool ): Balancing chamber Valve 6 (D20) + D21_VALV (bool ): Balancing chamber Valve 4 (D21) + D22_VALV (bool ): Balancing chamber Valve 8 (D22) + D69_VALV (bool ): Ultrafiltration Valve 1 Inlet (D69) + D71_VALV (bool ): Ultrafiltration Valve 2 Inlet (D71) + D70_VALV (bool ): Ultrafiltration Valve 1 Outlet (D70) + D72_VALV (bool ): Ultrafiltration Valve 2 Outlet (D72) + valvesensedState[28] (list[int] ): Sense state of valves + """ + hydraulic_valves = (D14_VALV << 0 )|\ + (D52_VALV << 1 )|\ + (D8_VALV << 2 )|\ + (D54_VALV << 3 )|\ + (D53_VALV << 4 )|\ + (D34_VALV << 5 )|\ + (D64_VALV << 6 )|\ + (D31_VALV << 7 )|\ + (D65_VALV << 8 )|\ + (D35_VALV << 9 )|\ + (D40_VALV << 10)|\ + (D47_VALV << 11)|\ + (D3_VALV << 12)|\ + (M4_VALV << 13)|\ + (RSRVD_SPACE1 << 14)|\ + (RSRVD_SPACE2 << 15) + + balancing_chamber_valves = (D23_VALV << 0 ) | \ + (D19_VALV << 1 )|\ + (D25_VALV << 2 )|\ + (D26_VALV << 3 )|\ + (D24_VALV << 4 )|\ + (D20_VALV << 5 )|\ + (D21_VALV << 6 )|\ + (D22_VALV << 7 ) + + # final 4 bits are reserved and left as 0 + ultrafiltration_valves = (D69_VALV << 0 )|\ + (D71_VALV << 1 )|\ + (D70_VALV << 2 )|\ + (D72_VALV << 3 )|\ + (0 << 4 )|\ + (0 << 5 )|\ + (0 << 6 )|\ + (0 << 7 ) + + payload = conversions.unsigned_short_to_bytearray(hydraulic_valves ) + payload += conversions.unsigned_byte_to_bytearray (balancing_chamber_valves ) + payload += conversions.unsigned_byte_to_bytearray (ultrafiltration_valves ) + for i in range(len(valvesensedState)): + payload += conversions.unsigned_byte_to_bytearray(valvesensedState[i]) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.dd_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_DD_VALVES_STATES_DATA.value, + payload=payload) + self.can_interface.send(message, 0) \ No newline at end of file Index: leahi_dialin/ui/td_messaging.py =================================================================== diff -u -rc587268b85d4b16b4102869d2841be84f3a2a23f -r82673b44f61604336cf70c0e72db0e332325c8af --- leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision c587268b85d4b16b4102869d2841be84f3a2a23f) +++ leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision 82673b44f61604336cf70c0e72db0e332325c8af) @@ -33,7 +33,7 @@ def td_operation_mode(self, op_mode: int, sub_mode: int = 0): - """Broadcasts the current TD operation mode + """Broadcasts the current TD operation mode (Msg ID: 0x12, 18) Args: op_mode (int ): operation mode sub_mode (int, optional ): operation sub-mode. Defaults to 0. @@ -55,8 +55,9 @@ def td_temperatures(self, board_temp: float): """ - Broadcasts the current TD Temperatures Data - @param board_temp : TD Board temperature + Broadcasts the current TD Temperatures Data (Msg ID: 0x53, 83) + Args: + @param board_temp : TD Board temperature @return: None """ # TODO: replace with proper payload and message ID once message is defined @@ -83,16 +84,17 @@ H4_pres_flow : int, H6_rot_hall_state : int): """ - Broadcasts the current TD Blood Pump Data - @param H4_set_flow : Set flow rate in mL/min. - @param H4_meas_flow : Measured flow rate in mL/min. - @param H4_rot_speed : Measured rotor speed in RPM. - @param H4_mot_speed : Measured pump speed in RPM. - @param H4_curr_motor : Measure motor current in Amps. - @param H4_set_rpm : Set motor speed in RPM. - @param H4_rot_count : Rotor count. - @param H4_pres_flow : Prescribed blood flow in mL/min. - @param H6_rot_hall_state : Rotor hall state (1=home, 0=not home) + Broadcasts the current TD Blood Pump Data (Msg ID: 0x11, 17) + Args: + @param H4_set_flow : Set flow rate in mL/min. + @param H4_meas_flow : Measured flow rate in mL/min. + @param H4_rot_speed : Measured rotor speed in RPM. + @param H4_mot_speed : Measured pump speed in RPM. + @param H4_curr_motor : Measure motor current in Amps. + @param H4_set_rpm : Set motor speed in RPM. + @param H4_rot_count : Rotor count. + @param H4_pres_flow : Prescribed blood flow in mL/min. + @param H6_rot_hall_state : Rotor hall state (1=home, 0=not home) @return: None """ @@ -126,14 +128,15 @@ H20_State : int, controlling : int): """ - Broadcasts the current TD air trap data - @param H17_state : lower level value - @param H16_state : upper level value - @param H17_raw_state : lower level raw value - @param H16_raw_state : upper level raw value - @param H13_state : Air trap intake Valve state (open/closed) - @param H20_State : Air trap outlet valve state (open/closed) - @param controlling : air control + Broadcasts the current TD air trap data(Msg ID: 0x2A, 42) + Args: + @param H17_state : lower level value + @param H16_state : upper level value + @param H17_raw_state : lower level raw value + @param H16_raw_state : upper level raw value + @param H13_state : Air trap intake Valve state (open/closed) + @param H20_State : Air trap outlet valve state (open/closed) + @param controlling : air control @return: None """ @@ -156,11 +159,58 @@ self.can_interface.send(message, 0) + def td_air_bubbles(self, H18_status : int, + H18_state : int): + """ + Broadcasts the current TD Air bubbles data (Msg ID: 0x1E, 30) + Args: + H18_status (int) :Air Bubble Status + H18_state (int) :Air Bubble State + @return: None + """ + if not self.can_enabled: + raise ValueError("CAN Interface is not enabled") + + + payload = conversions.unsigned_integer_to_bytearray(H18_status ) + payload += conversions.unsigned_integer_to_bytearray(H18_state ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_BUBBLES_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + + def td_air_pump(self, H12_state : int, + H12_power : int): + """ + Broadcasts the current TD Air Pump data (Msg ID: 0x20, 32) + Args: + @param H12_state (int ) : air pump state + @param H12_power (int ) : air pump power + @return: None + """ + if not self.can_enabled: + raise ValueError("CAN Interface is not enabled") + + + payload = conversions.unsigned_integer_to_bytearray(H12_state) + payload += conversions.unsigned_integer_to_bytearray(H12_power) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_sync_broadcast_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_AIR_PUMP_DATA.value, + payload=payload) + + self.can_interface.send(message, 0) + def td_ejector(self, H5_state: int, H5_set_speed: float): """ - Broadcasts the current TD operation mode - @param H5_state (int ) : ejector state - @param H5_set_speed (float): ejector set speed + Broadcasts the current TD Ejector data (Msg ID: 0x4E, 78) + Args: + @param H5_state (int ) : ejector state + @param H5_set_speed (float): ejector set speed @return: None """ if not self.can_enabled: @@ -179,8 +229,9 @@ def td_switches(self, H9_door: int): """ - Broadcasts the current TD switch Data - @param H9_door (int): door status + Broadcasts the current TD switch Data (Msg ID: 0x21, 33) + Args: + @param H9_door (int): door status @return: None """ if not self.can_enabled: @@ -198,9 +249,10 @@ def td_battery(self, capacity: int, ac_power: int): """ - Broadcasts the current TD Battery Data - @param capacity (int): battery capacity - @param ac_power (int): a/c power status + Broadcasts the current TD Battery Data (Msg ID: 0x54, 84) + Args: + @param capacity (int): battery capacity + @param ac_power (int): a/c power status @return: None """ # TODO: replace with proper payload and message ID once message is defined @@ -220,12 +272,13 @@ def td_valves(self, valve_id: int, state: int, pos_name: int, pos_count: int, next_pos: int): """ - Broadcasts the current TD Battery Data - @param valve_id (int): Valve ID - @param state (int): Valve State - @param pos_name (int): Position Name - @param pos_count (int): Position Count - @param next_pos (int): Next Position + Broadcasts the current TD Valves Data (Msg ID: 0x2B, 43) + Args: + @param valve_id (int): Valve ID + @param state (int): Valve State + @param pos_name (int): Position Name + @param pos_count (int): Position Count + @param next_pos (int): Next Position @return: None """ @@ -251,18 +304,19 @@ fpga_adc_ref: float, res_ref: float, fpga_vcc: float, fpga_vaux: float, fpga_vpvn: float): """ - Broadcasts the current TD voltage data - @param line_1_2v (float): Processor 1.2V - @param line_3_3v (float): Logic voltage (3.3V) - @param line_logic_5v (float): Logic voltage (5V) - @param line_sensors_5v (float): Sensors voltage (5V) - @param line_24v (float): Actuators voltage (24V) - @param line_regen_24v (float): Actuators regen voltage (24V) - @param fpga_adc_ref (float): FPGA ADC reference voltage (1V) - @param res_ref (float): PBA ADC reference voltage (3V) - @param fpga_vcc (float): FPGA input voltage (3V) - @param fpga_vaux (float): FPGA aux. voltage (3V) - @param fpga_vpvn (float): FPGA pvn voltage (1V) + Broadcasts the current TD voltage data (Msg ID: 0x1D, 29) + Args: + @param line_1_2v (float): Processor 1.2V + @param line_3_3v (float): Logic voltage (3.3V) + @param line_logic_5v (float): Logic voltage (5V) + @param line_sensors_5v (float): Sensors voltage (5V) + @param line_24v (float): Actuators voltage (24V) + @param line_regen_24v (float): Actuators regen voltage (24V) + @param fpga_adc_ref (float): FPGA ADC reference voltage (1V) + @param res_ref (float): PBA ADC reference voltage (3V) + @param fpga_vcc (float): FPGA input voltage (3V) + @param fpga_vaux (float): FPGA aux. voltage (3V) + @param fpga_vpvn (float): FPGA pvn voltage (1V) @return: None """ @@ -302,19 +356,20 @@ tmp_min : float , tmp_max : float ): """ - Broadcasts the current TD vpressures data - @param H2_arterial_pressure (float) : Current Arterial pressure value - @param H14_venous_pressure (float) : Current Venous pressure value - @param limit_state (int ) : Pressure limit state - @param H2_arterial_min (int ) : Arterial pressure minimum - @param H2_arterial_max (int ) : Arterial pressure maximum - @param H14_venous_min (int ) : Venous pressure minimum - @param H14_venous_max (int ) : Venous pressure maximum - @param H2_arterial_long (float) : Arterial Long - @param H14_venous_long (float) : Venous Long - @param tmp_pressure (float) : TMP pressure - @param tmp_min (float) : TMP minimum - @param tmp_max (float) : TMP maximum + Broadcasts the current TD Pressures data (Msg ID: 0x24, 36) + Args: + @param H2_arterial_pressure (float) : Current Arterial pressure value + @param H14_venous_pressure (float) : Current Venous pressure value + @param limit_state (int ) : Pressure limit state + @param H2_arterial_min (int ) : Arterial pressure minimum + @param H2_arterial_max (int ) : Arterial pressure maximum + @param H14_venous_min (int ) : Venous pressure minimum + @param H14_venous_max (int ) : Venous pressure maximum + @param H2_arterial_long (float) : Arterial Long + @param H14_venous_long (float) : Venous Long + @param tmp_pressure (float) : TMP pressure + @param tmp_min (float) : TMP minimum + @param tmp_max (float) : TMP maximum @return: None """ @@ -348,11 +403,12 @@ bolus_volume : float , state : int ): """ - Broadcasts the current TD vpressures data - @param target_volume (int ) : Saline target volume - @param cumulative_volume (float) : Saline cumulative volume - @param bolus_volume (float) : Saline bolus set volume - @param state (int ) : Saline bolus state + Broadcasts the current TD Saline data (Msg ID: 0x3D, 61) + Args: + @param target_volume (int ) : Saline target volume + @param cumulative_volume (float) : Saline cumulative volume + @param bolus_volume (float) : Saline bolus set volume + @param state (int ) : Saline bolus state @return: None """ @@ -378,11 +434,12 @@ volume_delivered : float , state : int ): """ - Broadcasts the current TD vpressures data - @param set_volume (float) : UF set volume (L) - @param target_rate (float) : UF target Rate (L) - @param volume_delivered (float) : UF Volume delivered (L) - @param state (int ) : UF state + Broadcasts the current TD Ultrafiltration data (Msg ID: 0x3E, 62) + Args: + @param set_volume (float) : UF set volume (L) + @param target_rate (float) : UF target Rate (L) + @param volume_delivered (float) : UF Volume delivered (L) + @param state (int ) : UF state @return: None """ @@ -407,10 +464,11 @@ tx_elapsed_s : int , tx_remaining_s : int ): """ - Broadcasts the current TD vpressures data - @param tx_duration_s (int) : Treatment set duration (s) - @param tx_elapsed_s (int) : Treatment elaspsed time (s) - @param tx_remaining_s (int) : Treatment time remaining (s) + Broadcasts the current TD Treatment Time data (Msg ID: 0x3B, 58) + Args: + @param tx_duration_s (int) : Treatment set duration (s) + @param tx_elapsed_s (int) : Treatment elaspsed time (s) + @param tx_remaining_s (int) : Treatment time remaining (s) @return: None """ @@ -434,10 +492,11 @@ dialysate_flow : int , dialysate_temp : float ): """ - Broadcasts the current TD vpressures data - @param blood_flow (int ) : Target Blood Flow - @param dialysate_flow (int ) : Target Dialysate Flow - @param dialysate_temp (float) : Target Dialysate Temperature + Broadcasts the current TD Treatment Set Points data (Msg ID: 0x4F, 79) + Args: + @param blood_flow (int ) : Target Blood Flow + @param dialysate_flow (int ) : Target Dialysate Flow + @param dialysate_temp (float) : Target Dialysate Temperature @return: None """ @@ -460,16 +519,17 @@ fpga_id: int, fpga_major: int, fpga_minor: int, fpga_lab: int, compatibility_rev: int): """ - Broadcasts the current TD Version Data - @param major: (uint) - Major version number - @param minor: (uint) - Minor version number - @param micro: (uint) - Micro version number - @param build: (uint) - Build version number - @param fpga_id: (int) - FPGA id version number - @param fpga_major: (int) - FPGA Major version number - @param fpga_minor: (int) - FPGA Minor version number - @param fpga_lab: (int) - FPGA Lab version number - @param compatibility_rev: (uint) - The FWs/UI compatibility revision + Broadcasts the current TD Version Data (Msg ID: 0x0E, 14) + Args: + @param major: (uint) - Major version number + @param minor: (uint) - Minor version number + @param micro: (uint) - Micro version number + @param build: (uint) - Build version number + @param fpga_id: (int) - FPGA id version number + @param fpga_major: (int) - FPGA Major version number + @param fpga_minor: (int) - FPGA Minor version number + @param fpga_lab: (int) - FPGA Lab version number + @param compatibility_rev: (uint) - The FWs/UI compatibility revision @return: None """ if not self.can_enabled: @@ -495,8 +555,9 @@ def td_serial(self, serial: str): """ - the td version serial response message method - @param serial: serial number + the td version serial response message method (Msg ID: 0x51, 81) + Args: + @param serial: serial number @return: None """ payload = bytes(serial, 'ascii') + b'\x00' @@ -510,8 +571,9 @@ def td_request_ui_versions(self): """ - the td request UI versions - + the td request UI versions(Msg ID: 0x15, 21) + Args: + None @return: None """ message = CAN.DenaliMessage.build_message( @@ -521,6 +583,12 @@ self.can_interface.send(message, 0) def td_Treatment_Parameters_CreateRx(self, vRejectionReason: int): + """ + TD response to in initiate Treatment and enter Create Rx (Msg ID: 0x46, 70) + Args: + None + @return: None + """ if not self.can_enabled: raise ValueError("CAN Interface is not enabled") @@ -556,7 +624,7 @@ vHeparinDispensingRateRejectReason : int = 0, vHeparinBolusVolumeRejectReason : int = 0 ): - """TD Treatment Parameter Validation Response to the SW validation request with sent values of the same parameters. + """TD Treatment Parameter Validation Response to the SW validation request with sent values of the same parameters.(Msg ID: 0x40, 64) Args: vAccepted (int, optional): Zero value if rejected. Defaults to 1. vBloodFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. @@ -621,7 +689,7 @@ tx_end_state : int, tx_saline_state : int, tx_heparin_state : int) -> None: - """A general method to send any standard response message, by it's id and list of parameters. + """A general method to send any standard response message, by it's id and list of parameters. (Msg ID: 0x3C, 60) Args: sub_mode (int): Treatment Submode blood_prime_state (int): Treatment Blood Prime State