Index: dialin/common/msg_ids.py =================================================================== diff -u -r9790d4c89a67940465d74dc98ee13834bee8565c -r5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068 --- dialin/common/msg_ids.py (.../msg_ids.py) (revision 9790d4c89a67940465d74dc98ee13834bee8565c) +++ dialin/common/msg_ids.py (.../msg_ids.py) (revision 5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068) @@ -196,6 +196,10 @@ MSG_ID_UI_INSTALLATION_CONFIRM_RESPONSE = 0xAD MSG_ID_DG_FILL_MODE_DATA = 0xAE MSG_ID_DG_BAD_FILL_SUB_STATE = 0xAF + MSG_ID_UI_REQUEST_SERVICE_MODE = 0xB0 + MSG_ID_HD_RESPONSE_SERVICE_MODE_REQUEST = 0xB1 + MSG_ID_HD_REQUEST_UI_FINAL_POST_RESULT = 0xB2 + MSG_ID_DG_FLOW_SENSORS_DATA = 0xB3 MSG_ID_CAN_ERROR_COUNT = 0x999 Index: dialin/dg/dialysate_flow_sensor.py =================================================================== diff -u -r3a70bfb451b74106348c064c34f19934aadd9119 -r5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068 --- dialin/dg/dialysate_flow_sensor.py (.../dialysate_flow_sensor.py) (revision 3a70bfb451b74106348c064c34f19934aadd9119) +++ dialin/dg/dialysate_flow_sensor.py (.../dialysate_flow_sensor.py) (revision 5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068) @@ -43,12 +43,20 @@ # The flow rate of the sensor mL/min self.flow_rate = 0.0 + self.new_ro_flow = 0.0 + self.new_ro_flow_with_conc = 0.0 + self.new_dialysate_flow = 0.0 + if self.can_interface is not None: channel_id = DenaliChannels.dg_sync_broadcast_ch_id msg_id = MsgIds.MSG_ID_DG_DIALYSATE_FLOW_METER_DATA.value self.can_interface.register_receiving_publication_function(channel_id, msg_id, self._handler_flow_sensor_sync) + self.can_interface.register_receiving_publication_function(channel_id, MsgIds.MSG_ID_DG_FLOW_SENSORS_DATA.value, + self._handler_flow_sensors_sync) + + def get_flow_rate(self): """ Gets a flow value from the sensor @@ -71,6 +79,15 @@ self.flow_rate = flow[0] + def _handler_flow_sensors_sync(self, message): + + self.new_ro_flow = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] + self.new_ro_flow_with_conc = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] + self.new_dialysate_flow = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] + def cmd_flow_sensor_value_override(self, rate: float, reset: int = NO_RESET) -> int: """ Constructs and sends the flow sensor value override command Index: tests/dg_tests.py =================================================================== diff -u -r6c9c54b00503ff8124ba864ec846d1866e58b8b7 -r5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068 --- tests/dg_tests.py (.../dg_tests.py) (revision 6c9c54b00503ff8124ba864ec846d1866e58b8b7) +++ tests/dg_tests.py (.../dg_tests.py) (revision 5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068) @@ -180,6 +180,13 @@ return info +def get_new_ro_info(): + info = ('New_flow, {:5.3f}, Tgt_flow, {:5.3f}, New_flow_with_conc_pumps, {:5.3f}, New_dialysate_flow, {:5.3f}, ' + .format(dg.dialysate_flow_sensor.new_ro_flow, dg.dialysate_flow_sensor.new_dialysate_flow, + dg.dialysate_flow_sensor.new_ro_flow_with_conc, dg.dialysate_flow_sensor.new_dialysate_flow)) + return info + + def get_heaters_with_no_temp_info(): info = ('Pri_main_DC, {:5.3f}, Pri_state, {}, Trimmer_DC, {:5.3f}, Trim_state, {}, ' 'Primary_target_temp, {:5.3f}, Trimmer_target_temp, {:5.3f}, '. @@ -393,6 +400,7 @@ load_cell = get_load_cells_info() valves = get_dg_valves_states() ro = get_ro_info() + new_ro = get_new_ro_info() temp = get_temperature_sensors_info() heaters = get_heaters_info() dg_fans = get_dg_fans_info() @@ -403,7 +411,7 @@ idle_bad_fill = get_dg_idle_bad_fill_info() var = str(datetime.now()) + ', ' + hd_run + dg_run + hd_rsrvrs + dg_rsrvrs + load_cell + drain + ro + \ - temp + heaters + conc_pumps + dg_fans + valves + blood_leak + hd_pumps + fill_info + idle_bad_fill + '\r' + new_ro + temp + heaters + conc_pumps + dg_fans + valves + blood_leak + hd_pumps + fill_info + '\r' if hd.alarms.get_alarm_state(97) and start is False: dg.conductivity_sensors.cmd_conductivity_sensor_override(ConductivitySensorsEnum.CD2.value, 13700.00) @@ -641,6 +649,10 @@ # print(get_temperature_sensors_info(), get_dg_fans_info()) # sleep(1) + #while True: + # print(get_new_ro_info(), get_ro_info()) + # sleep(1) + # test_dg_fans_alarms() #test_dvt_drain_pump() Index: tests/hd_nvm_scripts.py =================================================================== diff -u -r6c9c54b00503ff8124ba864ec846d1866e58b8b7 -r5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068 --- tests/hd_nvm_scripts.py (.../hd_nvm_scripts.py) (revision 6c9c54b00503ff8124ba864ec846d1866e58b8b7) +++ tests/hd_nvm_scripts.py (.../hd_nvm_scripts.py) (revision 5ec51022d4c81fba0406aecfbb9b5cdfe4f7d068) @@ -55,7 +55,7 @@ # Use cmd_set_hd_calibration_excel_to_fw() set the changes back to firmware # This function requires an address for the excel report. Use the absolute address of your excel report like the # example below - hd.calibration_record.cmd_set_hd_calibration_excel_to_fw('/home/fw/projects/HD_NV_Records/2022-07-19-HD-Record.xlsx') + hd.calibration_record.cmd_set_hd_calibration_excel_to_fw('/home/fw/projects/HD_NV_Records/2022-07-20-HD-Record.xlsx') # For resetting the calibration record to benign values, use the function below #hd.calibration_record.cmd_reset_hd_calibration_record()