Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r410054cfec7aee839266233249413b08b368fbd3 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 410054cfec7aee839266233249413b08b368fbd3) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -132,6 +132,22 @@ MSG_ID_DD_DATE_AND_TIME_REQUEST = 0x6E MSG_ID_DD_DATE_AND_TIME_RESPONSE = 0x6F MSG_ID_FP_RO_REJECTION_RATIO_DATA = 0x71 + MSG_ID_UI_PRESSURE_LIMITS_CHANGE_REQUEST = 0x72 + MSG_ID_TD_PRESSURE_LIMITS_CHANGE_RESPONSE = 0x73 + MSG_ID_UI_BOLUS_VOLUME_CHANGE_REQUEST = 0x74 + MSG_ID_TD_BOLUS_VOLUME_CHANGE_RESPONSE = 0x75 + MSG_ID_UI_DURATION_VALIDATE_REQUEST = 0x76 + MSG_ID_TD_DURATION_VALIDATE_RESPONSE = 0x77 + MSG_ID_UI_DURATION_CONFIRM_REQUEST = 0x78 + MSG_ID_TD_DURATION_CONFIRM_RESPONSE = 0x79 + MSG_ID_UI_TREATMENT_SET_POINTS_CHANGE_REQUEST = 0x7A + MSG_ID_TD_TREATMENT_SET_POINTS_CHANGE_RESPONSE = 0x7B + MSG_ID_UI_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_REQUEST = 0x7C + MSG_ID_TD_TREATMENT_SET_POINT_BLOOD_FLOW_CHANGE_RESPONSE = 0x7D + MSG_ID_UI_TREATMENT_SET_POINT_DIALYSATE_FLOW_CHANGE_REQUEST = 0x7E + MSG_ID_TD_TREATMENT_SET_POINT_DIALYSATE_FLOW_CHANGE_RESPONSE = 0x7F + MSG_ID_UI_TREATMENT_SET_POINT_DIALYSATE_TEMPERATURE_CHANGE_REQUEST = 0x80 + MSG_ID_TD_TREATMENT_SET_POINT_DIALYSATE_TEMPERATURE_CHANGE_RESPONSE = 0x81 MSG_ID_TD_INSTITUTIONAL_RECORD_REQUEST = 0x82 MSG_ID_TD_INSTITUTIONAL_RECORD_RESPONSE = 0x83 MSG_ID_TD_ADJUST_INSTITUTIONAL_RECORD_REQUEST = 0x84 @@ -148,6 +164,11 @@ MSG_ID_DD_PISTON_PUMP_CONTROL_DATA = 0xF0 + MSG_ID_UI_ADJUST_DISPOSABLES_CONFIRM_REQUEST = 0X92 + MSG_ID_TD_ADJUST_DISPOSABLES_CONFIRM_RESPONSE = 0X93 + MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST = 0X94 + MSG_ID_TD_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_RESPONSE = 0X95 + MSG_ID_TD_TESTER_LOGIN_REQUEST = 0x8000 MSG_ID_TD_SOFTWARE_RESET_REQUEST = 0x8001 MSG_ID_TD_SEND_TEST_CONFIGURATION = 0x8002 @@ -228,7 +249,7 @@ MSG_ID_DD_VALVE_SENSED_STATE_OVERRIDE_REQUEST = 0xA005 MSG_ID_DD_PRESSURE_SENSOR_READINGS_OVERRIDE_REQUEST = 0xA006 MSG_ID_DD_PRESSURE_SENSOR_TEMPERATURE_OVERRIDE_REQUEST = 0xA007 - MSG_ID_DD_PRESSURE_SENSOR_READ_COUNTER_OVERRIDE_REQUEST = 0xA008 + MSG_ID_DD_TREATMENT_PARAMS_OVERRIDE_REQUEST = 0xA008 MSG_ID_DD_PRESSURE_SENSOR_ERROR_COUNTER_OVERRIDE_REQUEST = 0xA009 MSG_ID_DD_PRESSURE_SENSOR_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xA00A MSG_ID_DD_PRESSURE_SENSOR_FILTER_READINGS_OVERRIDE_REQUEST = 0xA00B @@ -365,10 +386,12 @@ MSG_ID_FP_SET_START_STOP_OVERRIDE_REQUEST = 0xB033 MSG_ID_FP_RO_REJECTION_RATIO_PUBLISH_INTERVAL_OVERRIDE_REQUEST = 0xB034 MSG_ID_FP_RO_FILTERED_REJECTION_RATIO_OVERRIDE_REQUEST = 0xB035 + MSG_ID_FP_DEF_STATUS_REQUEST = 0xB049 + MSG_ID_FP_DEF_STATUS_RESPONSE = 0xB04A MSG_ID_TD_DEBUG_EVENT = 0xFFF1 MSG_ID_DD_DEBUG_EVENT = 0xFFF2 MSG_ID_FP_DEBUG_EVENT = 0xFFF3 - MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK = 0xFFFF \ No newline at end of file + MSG_ID_ACK_MESSAGE_THAT_REQUIRES_ACK = 0xFFFF Index: leahi_dialin/dd/dialysate_delivery.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/dialysate_delivery.py (.../dialysate_delivery.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -41,7 +41,7 @@ from .proxies.td_proxy import TDProxy from ..common.constants import NO_RESET -from ..common.dd_defs import DDOpModes +from ..common.dd_defs import dd_enum_repository from ..common.msg_defs import MsgIds, MsgFieldPositions, MsgFieldPositionsFWVersions from ..common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels @@ -104,7 +104,7 @@ self.dd_op_mode_timestamp = 0.0 self.dd_debug_events_timestamp = 0.0 self.dd_version_response_timestamp = 0.0 - self.dd_operation_mode = DDOpModes.MODE_INIT.value + self.dd_operation_mode = dd_enum_repository.DDOpModes.MODE_INIT.value self.dd_operation_sub_mode = 0 self.dd_logged_in = False self.dd_set_logged_in_status(False) Index: leahi_dialin/dd/modules/alarms.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/alarms.py (.../alarms.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/alarms.py (.../alarms.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,7 +19,7 @@ from leahi_dialin.common.alarm_defs import AlarmList from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDEventDataType +from leahi_dialin.common.dd_defs import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -75,8 +75,8 @@ self.alarm_data_type = dict() # Loop through the list of the event data type enum and update the dictionary - for data_type in DDEventDataType: - event_data_type = DDEventDataType(data_type).name + for data_type in dd_enum_repository.DDEventDataTypes: + event_data_type = dd_enum_repository.DDEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -105,13 +105,13 @@ data_typ_1 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) # Get the corresponding structure format - struct_data_type_1 = self.alarm_data_type[DDEventDataType(data_typ_1[0]).name] + struct_data_type_1 = self.alarm_data_type[dd_enum_repository.DDEventDataTypes(data_typ_1[0]).name] # Get the data value by unpacking the data type data_1 = struct.unpack(struct_data_type_1, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) data_typ_2 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) # Get the corresponding structure format - struct_data_type_2 = self.alarm_data_type[DDEventDataType(data_typ_2[0]).name] + struct_data_type_2 = self.alarm_data_type[dd_enum_repository.DDEventDataTypes(data_typ_2[0]).name] # Get the data value by unpacking the data type data_2 = struct.unpack(struct_data_type_2, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) Index: leahi_dialin/dd/modules/blood_leak.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/blood_leak.py (.../blood_leak.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/blood_leak.py (.../blood_leak.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,7 +19,7 @@ from enum import unique from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDBloodLeakStates +from leahi_dialin.common.dd_defs import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -75,7 +75,7 @@ self.dd_blood_leak_status_timestamp = 0.0 self.dd_blood_leak_emb_mode_response_timestamp = 0.0 self.blood_leak_status = self.NO_BLOOD_LEAK_DETECTED - self.blood_leak_state = DDBloodLeakStates.BLOOD_LEAK_INIT_STATE.value + self.blood_leak_state = dd_enum_repository.DDBloodLeakStates.BLOOD_LEAK_INIT_STATE.value self.blood_leak_emb_mode_cmds = dict() self.blood_leak_error_persistent_ctr = 0 self.blood_leak_serial_comm_state = 0 Index: leahi_dialin/dd/modules/concentrate_pump.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/concentrate_pump.py (.../concentrate_pump.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/concentrate_pump.py (.../concentrate_pump.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDConcentratePumpsEnum, DDConcentratePumpAttributesEnum +from leahi_dialin.common.dd_defs import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -47,38 +47,38 @@ self._handler_concentrate_pumps_sync) self.dd_concentrate_pumps = { - DDConcentratePumpsEnum.D10_CP2_BICARB.name: { - DDConcentratePumpAttributesEnum.CURRENT_STATE.name: 0, - DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.MEASURED_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.PULSE_US.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.PARKED.name: False, - DDConcentratePumpAttributesEnum.PARK_FAULT.name: False + dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name: { + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.PARKED.name: False, + dd_enum_repository.DDConcentratePumpAttributes.PARK_FAULT.name: False }, - DDConcentratePumpsEnum.D11_CP1_ACID.name: { - DDConcentratePumpAttributesEnum.CURRENT_STATE.name: 0, - DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.MEASURED_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.PULSE_US.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.PARKED.name: False, - DDConcentratePumpAttributesEnum.PARK_FAULT.name: False + dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name: { + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.PARKED.name: False, + dd_enum_repository.DDConcentratePumpAttributes.PARK_FAULT.name: False }, - DDConcentratePumpsEnum.D76_UF.name: { - DDConcentratePumpAttributesEnum.CURRENT_STATE.name: 0, - DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.MEASURED_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_SPEED.name: 0.0, - DDConcentratePumpAttributesEnum.PULSE_US.name: 0.0, - DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name: 0, - DDConcentratePumpAttributesEnum.PARKED.name: None, # D76 doesn't utilize this attribute - DDConcentratePumpAttributesEnum.PARK_FAULT.name: None # D76 doesn't utilize this attribute + dd_enum_repository.DDConcentratePumpNames.D76_UF.name: { + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name: 0.0, + dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name: 0, + dd_enum_repository.DDConcentratePumpAttributes.PARKED.name: None, # D76 doesn't utilize this attribute + dd_enum_repository.DDConcentratePumpAttributes.PARK_FAULT.name: None # D76 doesn't utilize this attribute } } @@ -94,55 +94,55 @@ @param message: published concentrate pumps' data message @return: None """ - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.MEASURED_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.MEASURED_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.CURRENT_STATE.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.CURRENT_STATE.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.PULSE_US.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.PULSE_US.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.TARGET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.TARGET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.PARKED.name] = \ + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.PARKED.name] = \ True if struct.unpack('I', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15]))[0] == 1 else False - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.PARKED.name] = \ + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.PARKED.name] = \ True if struct.unpack('I', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16]))[0] == 1 else False - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D11_CP1_ACID.name][DDConcentratePumpAttributesEnum.PARK_FAULT.name] = \ + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D11_CP1_ACID.name][dd_enum_repository.DDConcentratePumpAttributes.PARK_FAULT.name] = \ True if struct.unpack('I', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17]))[0] == 1 else False - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D10_CP2_BICARB.name][DDConcentratePumpAttributesEnum.PARK_FAULT.name] = \ + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D10_CP2_BICARB.name][dd_enum_repository.DDConcentratePumpAttributes.PARK_FAULT.name] = \ True if struct.unpack('I', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18]))[0] == 1 else False - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.TARGET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.CURRENT_SET_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_SET_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_20:MsgFieldPositions.END_POS_FIELD_20])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.MEASURED_SPEED.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_21:MsgFieldPositions.END_POS_FIELD_21])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.TARGET_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.TARGET_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_22:MsgFieldPositions.END_POS_FIELD_22])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.MEASURED_REV_COUNT.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.MEASURED_REV_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_23:MsgFieldPositions.END_POS_FIELD_23])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.CURRENT_STATE.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.CURRENT_STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_24:MsgFieldPositions.END_POS_FIELD_24])))[0] - self.dd_concentrate_pumps[DDConcentratePumpsEnum.D76_UF.name][DDConcentratePumpAttributesEnum.PULSE_US.name] = ( + self.dd_concentrate_pumps[dd_enum_repository.DDConcentratePumpNames.D76_UF.name][dd_enum_repository.DDConcentratePumpAttributes.PULSE_US.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_25:MsgFieldPositions.END_POS_FIELD_25])))[0] self.dd_concentrate_pump_timestamp = timestamp @@ -187,7 +187,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_TARGET_SPEED_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump target speed', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump target speed', override_text = str(speed), logger = self.logger, can_interface = self.can_interface) @@ -212,7 +212,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_MEASURED_SPEED_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump measured speed', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump measured speed', override_text = str(speed), logger = self.logger, can_interface = self.can_interface) @@ -237,7 +237,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_PARKED_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump parked status', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump parked status', override_text = str(status), logger = self.logger, can_interface = self.can_interface) @@ -262,7 +262,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_PARK_FAULT_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump parked fault state', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump parked fault state', override_text = str(status), logger = self.logger, can_interface = self.can_interface) @@ -282,7 +282,7 @@ reset = NO_RESET, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMP_PARK_REQUEST_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump to zeroing', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump to zeroing', override_text = 'Active', logger = self.logger, can_interface = self.can_interface) @@ -309,7 +309,7 @@ reset = NO_RESET, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_CONCENTRATE_PUMPS_START_STOP_OVERRIDE_REQUEST, - entity_name = f'DD {DDConcentratePumpsEnum(pump_id).name} Concentrate Pump speed', + entity_name = f'DD {dd_enum_repository.DDConcentratePumpNames(pump_id).name} Concentrate Pump speed', override_text = str(spd), logger = self.logger, can_interface = self.can_interface) Index: leahi_dialin/dd/modules/conductivity_sensors.py =================================================================== diff -u -ra291930ba38e329e2b373f6d2b2a7564a6b7a09a -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision a291930ba38e329e2b373f6d2b2a7564a6b7a09a) +++ leahi_dialin/dd/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,7 +19,8 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDConductivitySensorNames +from leahi_dialin.common.dd_defs import dd_enum_repository +from leahi_dialin.common.global_vars import GlobalVariables from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -50,12 +51,14 @@ self._handler_conductivity_sensors_sync) self.dd_conductivity = { - DDConductivitySensorNames.D17_COND.name: 0.0, - DDConductivitySensorNames.D27_COND.name: 0.0, - DDConductivitySensorNames.D29_COND.name: 0.0, - DDConductivitySensorNames.D43_COND.name: 0.0, - DDConductivitySensorNames.D74_COND.name: 0.0 + dd_enum_repository.DDConductivitySensorNames.D17_COND.name: 0.0, + dd_enum_repository.DDConductivitySensorNames.D27_COND.name: 0.0, + dd_enum_repository.DDConductivitySensorNames.D29_COND.name: 0.0, + dd_enum_repository.DDConductivitySensorNames.D43_COND.name: 0.0, + dd_enum_repository.DDConductivitySensorNames.D74_COND.name: 0.0 } + if GlobalVariables().HW_BETA_1_9: + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D98_COND.name] = 0.0 self.dd_conductivity_timestamp = 0.0 @@ -69,21 +72,27 @@ @param message: published DD conductivity sensor data message @return: None """ - self.dd_conductivity[DDConductivitySensorNames.D17_COND.name] = struct.unpack('f', bytearray( + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D17_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.dd_conductivity[DDConductivitySensorNames.D27_COND.name] = struct.unpack('f', bytearray( + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D27_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.dd_conductivity[DDConductivitySensorNames.D29_COND.name] = struct.unpack('f', bytearray( + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D29_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.dd_conductivity[DDConductivitySensorNames.D43_COND.name] = struct.unpack('f', bytearray( + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D43_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.dd_conductivity[DDConductivitySensorNames.D74_COND.name] = struct.unpack('f', bytearray( + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D74_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] + if GlobalVariables().HW_BETA_1_9: + if dd_enum_repository.DDConductivitySensorNames.D98_COND.name not in self.dd_conductivity: + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D98_COND.name] = 0.0 + self.dd_conductivity[dd_enum_repository.DDConductivitySensorNames.D98_COND.name] = struct.unpack('f', bytearray( + message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] + self.dd_conductivity_timestamp = timestamp @@ -125,7 +134,7 @@ sensor_byte_array = integer_to_bytearray(sensor_index) payload = reset_byte_array + cond_byte_array + sensor_byte_array - sensor_name = DDConductivitySensorNames(sensor_index).name.split('_')[0] + sensor_name = dd_enum_repository.DDConductivitySensorNames(sensor_index).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -154,7 +163,7 @@ sensor_byte_array = integer_to_bytearray(sensor_index) payload = reset_byte_array + read_byte_array + sensor_byte_array - sensor_name = DDConductivitySensorNames(sensor_index).name.split('_')[0] + sensor_name = dd_enum_repository.DDConductivitySensorNames(sensor_index).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -180,7 +189,7 @@ sensor_byte_array = integer_to_bytearray(sensor_index) payload = reset_byte_array + error_byte_array + sensor_byte_array - sensor_name = DDConductivitySensorNames(sensor_index).name.split('_')[0] + sensor_name = dd_enum_repository.DDConductivitySensorNames(sensor_index).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, Index: leahi_dialin/dd/modules/dialysate_pump.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/dd/modules/dialysate_pump.py (.../dialysate_pump.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.dd_defs import DDDialysatePumpsEnum, DDDialysatePumpAttributesEnum +from leahi_dialin.common.dd_defs import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -49,29 +49,29 @@ self._handler_dialysate_pumps_sync) self.dd_dialysate_pumps = { - DDDialysatePumpsEnum.D12_PUMP.name: { - DDDialysatePumpAttributesEnum.TARGET_RPM.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_SPEED.name: 0.0, - DDDialysatePumpAttributesEnum.CURRENT_SPEED.name: 0.0, - DDDialysatePumpAttributesEnum.STATE.name: 0.0, - DDDialysatePumpAttributesEnum.TARGET_PRESSURE.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_PRESSURE.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_CURRENT.name: 0.0, - DDDialysatePumpAttributesEnum.CONTROL.name: 0.0, - DDDialysatePumpAttributesEnum.DIRECTION_ERROR_COUNT.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_DIRECTION.name: 0.0 + dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name: { + dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.STATE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name: 0.0 }, - DDDialysatePumpsEnum.D48_PUMP.name: { - DDDialysatePumpAttributesEnum.TARGET_RPM.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_SPEED.name: 0.0, - DDDialysatePumpAttributesEnum.CURRENT_SPEED.name: 0.0, - DDDialysatePumpAttributesEnum.STATE.name: 0.0, - DDDialysatePumpAttributesEnum.TARGET_PRESSURE.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_PRESSURE.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_CURRENT.name: 0.0, - DDDialysatePumpAttributesEnum.CONTROL.name: 0.0, - DDDialysatePumpAttributesEnum.DIRECTION_ERROR_COUNT.name: 0.0, - DDDialysatePumpAttributesEnum.MEASURED_DIRECTION.name: 0.0 + dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name: { + dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.STATE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name: 0.0, + dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name: 0.0 } } @@ -87,54 +87,54 @@ @param message: published dialysate pumps' data message @return: None """ - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.TARGET_RPM.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.TARGET_RPM.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.TARGET_RPM.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_SPEED.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_SPEED.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.CURRENT_SPEED.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.CURRENT_SPEED.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.CURRENT_SPEED.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.STATE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.STATE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.TARGET_PRESSURE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.TARGET_PRESSURE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.TARGET_PRESSURE.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_10:MsgFieldPositions.END_POS_FIELD_10])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_PRESSURE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_PRESSURE.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_PRESSURE.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_12:MsgFieldPositions.END_POS_FIELD_12])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_CURRENT.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_13:MsgFieldPositions.END_POS_FIELD_13])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_CURRENT.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_CURRENT.name] = ( struct.unpack('f', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_14:MsgFieldPositions.END_POS_FIELD_14])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.CONTROL.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_15:MsgFieldPositions.END_POS_FIELD_15])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.CONTROL.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.CONTROL.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_16:MsgFieldPositions.END_POS_FIELD_16])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.DIRECTION_ERROR_COUNT.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_17:MsgFieldPositions.END_POS_FIELD_17])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.DIRECTION_ERROR_COUNT.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.DIRECTION_ERROR_COUNT.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_18:MsgFieldPositions.END_POS_FIELD_18])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D12_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_DIRECTION.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D12_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_19:MsgFieldPositions.END_POS_FIELD_19])))[0] - self.dd_dialysate_pumps[DDDialysatePumpsEnum.D48_PUMP.name][DDDialysatePumpAttributesEnum.MEASURED_DIRECTION.name] = ( + self.dd_dialysate_pumps[dd_enum_repository.DDDialysatePumpNames.D48_PUMP.name][dd_enum_repository.DDDialysatePumpAttributes.MEASURED_DIRECTION.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_20:MsgFieldPositions.END_POS_FIELD_20])))[0] self.dd_dialysate_pump_timestamp = timestamp @@ -180,7 +180,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_TARGET_SPEED_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump target speed', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump target speed', override_text = str(speed), logger = self.logger, can_interface = self.can_interface) @@ -205,7 +205,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_MEASURED_SPEED_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump measured speed', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump measured speed', override_text = str(speed), logger = self.logger, can_interface = self.can_interface) @@ -230,7 +230,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_TARGET_PRESSURE_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump target pressure', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump target pressure', override_text = str(pressure), logger = self.logger, can_interface = self.can_interface) @@ -255,7 +255,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_MEASURED_CURRENT_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump measured current', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump measured current', override_text = str(current), logger = self.logger, can_interface = self.can_interface) @@ -280,7 +280,7 @@ reset = reset, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_MEASURED_DIRECTION_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump measured direction', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump measured direction', override_text = str(direction), logger = self.logger, can_interface = self.can_interface) @@ -306,7 +306,7 @@ reset = NO_RESET, channel_id = DenaliChannels.dialin_to_dd_ch_id, msg_id = MsgIds.MSG_ID_DD_DIALYSATE_PUMPS_START_STOP_OVERRIDE_REQUEST, - entity_name = f'DD {DDDialysatePumpsEnum(pump_id).name} Dialysate Pump start & stop', + entity_name = f'DD {dd_enum_repository.DDDialysatePumpNames(pump_id).name} Dialysate Pump start & stop', override_text = str(cmd), logger = self.logger, can_interface = self.can_interface) Index: leahi_dialin/dd/modules/events.py =================================================================== diff -u -r410054cfec7aee839266233249413b08b368fbd3 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/dd/modules/events.py (.../events.py) (revision 410054cfec7aee839266233249413b08b368fbd3) +++ leahi_dialin/dd/modules/events.py (.../events.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,10 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.dd_defs import DDEventList, DDEventDataType, DDOpModes, DDFaultStates, \ - DDServiceModesStates, DDInitStates, DDStandByModeStates, DDPreGenDialysateStates, \ - DDGenDialysateModeStates, DDPostGenDialysateState, DDHeatersState, DDHeatersCoolingStates, \ - DDROPermeateStates, DDNotLegalStates +from leahi_dialin.common.dd_defs import dd_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -64,26 +61,26 @@ self._dd_event_data_type = dict() # Dictionary of the mode as key and the sub mode states enum class as the value - self._dd_op_mode_2_sub_mode = {DDOpModes.MODE_FAUL.name: DDFaultStates, - DDOpModes.MODE_SERV.name: DDServiceModesStates, - DDOpModes.MODE_INIT.name: DDInitStates, - DDOpModes.MODE_STAN.name: DDStandByModeStates, - DDOpModes.MODE_PREG.name: DDPreGenDialysateStates, - DDOpModes.MODE_GEND.name: DDGenDialysateModeStates, - DDOpModes.MODE_POSG.name: DDPostGenDialysateState, - DDOpModes.MODE_HEAT.name: DDHeatersState, - DDOpModes.MODE_HCOL.name: DDHeatersCoolingStates, - DDOpModes.MODE_ROPS.name: DDROPermeateStates, - DDOpModes.MODE_NLEG.name: DDNotLegalStates} + self._dd_op_mode_2_sub_mode = {dd_enum_repository.DDOpModes.MODE_FAUL.name: dd_enum_repository.DDFaultStates, + dd_enum_repository.DDOpModes.MODE_SERV.name: dd_enum_repository.DDServiceStates, + dd_enum_repository.DDOpModes.MODE_INIT.name: dd_enum_repository.DDInitStates, + dd_enum_repository.DDOpModes.MODE_STAN.name: dd_enum_repository.DDStandbyStates, + dd_enum_repository.DDOpModes.MODE_PREG.name: dd_enum_repository.DDPreGenDialysateStates, + dd_enum_repository.DDOpModes.MODE_GEND.name: dd_enum_repository.DDGenDialysateModeStates, + dd_enum_repository.DDOpModes.MODE_POSG.name: dd_enum_repository.DDPostGenDialysateStates, + dd_enum_repository.DDOpModes.MODE_HEAT.name: dd_enum_repository.DDHeatDisinfectStates, + dd_enum_repository.DDOpModes.MODE_HCOL.name: dd_enum_repository.DDHeaterCoolingStates, + dd_enum_repository.DDOpModes.MODE_ROPS.name: dd_enum_repository.DDROPermeateStates, + dd_enum_repository.DDOpModes.MODE_NLEG.name: dd_enum_repository.DDNotLegalStates} # Loop through the list of the DD events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. - for event in DDEventList: - self._dd_event_dictionary[DDEventList(event).name] = [] + for event in dd_enum_repository.DDEventList: + self._dd_event_dictionary[dd_enum_repository.DDEventList(event).name] = [] # Loop through the list of the event data type enum and update the dictionary - for data_type in DDEventDataType: - event_data_type = DDEventDataType(data_type).name + for data_type in dd_enum_repository.DDEventDataTypes: + event_data_type = dd_enum_repository.DDEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -107,14 +104,14 @@ @returns the requested DD event number """ - list_length = len(self._dd_event_dictionary[DDEventList(event_id).name]) + list_length = len(self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name]) if list_length == 0: event = [] elif event_number > list_length: - event = self._dd_event_dictionary[DDEventList(event_id).name][list_length - 1] + event = self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name][list_length - 1] else: - event = self._dd_event_dictionary[DDEventList(event_id).name][list_length - event_number - 1] + event = self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name][list_length - event_number - 1] return event @@ -141,18 +138,18 @@ list_of_events = [] # If there are not enough event lists send all the events that are available - if len(self._dd_event_dictionary[DDEventList(event_id).name]) <= number_of_events: - list_of_events = self._dd_event_dictionary[DDEventList(event_id).name] + if len(self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name]) <= number_of_events: + list_of_events = self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name] else: # Get the all the events - complete_list = self._dd_event_dictionary[DDEventList(event_id).name] + complete_list = self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name] # Since the last are located at the end of the list, iterate backwards for the defined # event messages for i in range(len(complete_list) - 1, len(complete_list) - number_of_events - 1, -1): list_of_events.append(complete_list[i]) if number_of_events == 0: - list_of_events = self._dd_event_dictionary[DDEventList(event_id).name] + list_of_events = self._dd_event_dictionary[dd_enum_repository.DDEventList(event_id).name] return list_of_events @@ -175,11 +172,11 @@ event_id = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - if event_id == DDEventList.DD_EVENT_OPERATION_STATUS.value: + if event_id == dd_enum_repository.DDEventList.DD_EVENT_OPERATION_STATUS.value: # Get the data type event_data_type_1 = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - struct_data_type = self._dd_event_data_type[DDEventDataType(event_data_type_1).name] + struct_data_type = self._dd_event_data_type[dd_enum_repository.DDEventDataTypes(event_data_type_1).name] op_mode = struct.unpack(' int: + """ + Constructs and sends the FP defeatured status request + Constraints: + Must be logged into FP. + + @return: 1 if successful, zero otherwise + """ + return cmd_generic_override( + payload = None, + reset = NO_RESET, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_DEF_STATUS_REQUEST, + entity_name = 'FP Defeatured Status', + override_text = '', + logger = self.logger, + can_interface = self.can_interface) + + def cmd_op_mode_broadcast_interval_override(self, ms: int, reset: int = NO_RESET) -> int: """ Constructs and sends the measured op mode broadcast interval override command @@ -261,6 +298,7 @@ if received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] == 1: self.logger.debug("Success: Logged In") self.fp_set_logged_in_status(True) + self.cmd_request_defeatured_status() #self._send_ro_checkin_message() # Timer starts interval first #self.can_interface.transmit_interval_dictionary[self.callback_id].start() else: Index: leahi_dialin/fp/modules/alarms.py =================================================================== diff -u -r03dc6c3ff80d7f76a5b6438ba067e02a37e2ce93 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/fp/modules/alarms.py (.../alarms.py) (revision 03dc6c3ff80d7f76a5b6438ba067e02a37e2ce93) +++ leahi_dialin/fp/modules/alarms.py (.../alarms.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,7 +19,7 @@ from leahi_dialin.common.alarm_defs import AlarmList from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import FPEventDataType +from leahi_dialin.common.fp_defs import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels @@ -70,8 +70,8 @@ self.alarm_data_type = dict() # Loop through the list of the event data type enum and update the dictionary - for data_type in FPEventDataType: - event_data_type = FPEventDataType(data_type).name + for data_type in fp_enum_repository.FPEventDataTypes: + event_data_type = fp_enum_repository.FPEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -101,13 +101,13 @@ data_typ_1 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) # Get the corresponding structure format - struct_data_type_1 = self.alarm_data_type[FPEventDataType(data_typ_1[0]).name] + struct_data_type_1 = self.alarm_data_type[fp_enum_repository.FPEventDataTypes(data_typ_1[0]).name] # Get the data value by unpacking the data type data_1 = struct.unpack(struct_data_type_1, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) data_typ_2 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) # Get the corresponding structure format - struct_data_type_2 = self.alarm_data_type[FPEventDataType(data_typ_2[0]).name] + struct_data_type_2 = self.alarm_data_type[fp_enum_repository.FPEventDataTypes(data_typ_2[0]).name] # Get the data value by unpacking the data type data_2 = struct.unpack(struct_data_type_2, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) Index: leahi_dialin/fp/modules/boost_pump.py =================================================================== diff -u -ra291930ba38e329e2b373f6d2b2a7564a6b7a09a -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision a291930ba38e329e2b373f6d2b2a7564a6b7a09a) +++ leahi_dialin/fp/modules/boost_pump.py (.../boost_pump.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import FPBoostPumpNames, FPPumpAttributes +from leahi_dialin.common.fp_defs import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -46,20 +46,21 @@ self._handler_pump_sync) self.boost_pump_timestamp = 0.0 self.boost_pump = { - FPBoostPumpNames.P40_PUMP.name: { - FPPumpAttributes.STATE.name: 0, - FPPumpAttributes.DUTY_CYCLE.name: 0, - FPPumpAttributes.FB_DUTY_CYCLE.name: 0, - FPPumpAttributes.SPEED.name: 0.0, - FPPumpAttributes.TARGET_PRES.name: 0.0, - FPPumpAttributes.TARGET_FLOW.name: 0.0, - FPPumpAttributes.TARGET_DUTY_CYCLE.name: 0.0, - FPPumpAttributes.DUTY_CYCLE_PCT.name: 0.0, - FPPumpAttributes.FB_DUTY_CYCLE_PCT.name: 0.0 + fp_enum_repository.FPBoostPumpNames.P40_PUMP.name: { + fp_enum_repository.FPPumpAttributes.STATE.name: 0, + fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name: 0, + fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name: 0, + fp_enum_repository.FPPumpAttributes.SPEED.name: 0.0, + fp_enum_repository.FPPumpAttributes.TARGET_PRES.name: 0.0, + fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name: 0.0, + fp_enum_repository.FPPumpAttributes.TARGET_DUTY_CYCLE.name: 0.0, + fp_enum_repository.FPPumpAttributes.DUTY_CYCLE_PCT.name: 0.0, + fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE_PCT.name: 0.0 } } + @publish(["msg_id_fp_boost_pump_data", "boost_pump", "boost_pump_timestamp"]) def _handler_pump_sync(self, message, timestamp=0.0): """ @@ -69,23 +70,23 @@ @param message: published FP ro pump data message @return: none """ - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.STATE.name] = struct.unpack('i', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.STATE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.DUTY_CYCLE.name] = struct.unpack('i', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.FB_DUTY_CYCLE.name] = struct.unpack('i', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.SPEED.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.SPEED.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.TARGET_PRESSURE.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.TARGET_PRESSURE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.TARGET_FLOW.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.TARGET_DUTY_CYCLE.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.TARGET_DUTY_CYCLE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.DUTY_CYCLE_PCT.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE_PCT.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.boost_pump[FPBoostPumpNames.P40_PUMP.name][FPPumpAttributes.FB_DUTY_CYCLE_PCT.name] = struct.unpack('f', bytearray( + self.boost_pump[fp_enum_repository.FPBoostPumpNames.P40_PUMP.name][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE_PCT.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] self.boost_pump_timestamp = timestamp Index: leahi_dialin/fp/modules/conductivity_sensors.py =================================================================== diff -u -ra291930ba38e329e2b373f6d2b2a7564a6b7a09a -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision a291930ba38e329e2b373f6d2b2a7564a6b7a09a) +++ leahi_dialin/fp/modules/conductivity_sensors.py (.../conductivity_sensors.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -18,7 +18,7 @@ from logging import Logger from leahi_dialin.common.constants import NO_RESET -from leahi_dialin.common.fp_defs import FPConductivitySensorNames, FPRORejectionRatioEnum +from leahi_dialin.common.fp_defs import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from leahi_dialin.protocols.CAN import DenaliChannels @@ -51,16 +51,16 @@ self.ro_rejection_ratio_timestamp = 0.0 self.fp_conductivity = { - FPConductivitySensorNames.P9_COND.name: 0.0, - FPConductivitySensorNames.P18_COND.name: 0.0 + fp_enum_repository.FPConductivitySensorNames.P9_COND.name: 0.0, + fp_enum_repository.FPConductivitySensorNames.P18_COND.name: 0.0 } self.ro_rejection_ratio = { - FPRORejectionRatioEnum.RAW_RO_REJECTION_RATIO.name: 0.0, - FPRORejectionRatioEnum.RAW_RO_REJECTION_RATIO_TANK_FILL.name: 0.0, - FPRORejectionRatioEnum.AVG_RO_REJECTION_RATIO.name: 0.0, - FPRORejectionRatioEnum.AVG_RO_REJECTION_RATIO_TANK_FILL.name: 0.0, - FPRORejectionRatioEnum.GEN_PERMEATE_STATE.name: 0 + fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO.name: 0.0, + fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO_TANK_FILL.name: 0.0, + fp_enum_repository.FPRORejectionRatioNames.AVG_RO_REJECTION_RATIO.name: 0.0, + fp_enum_repository.FPRORejectionRatioNames.AVG_RO_REJECTION_RATIO_TANK_FILL.name: 0.0, + fp_enum_repository.FPRORejectionRatioNames.GEN_PERMEATE_STATE.name: 0 } @@ -73,9 +73,9 @@ @param message: published conductivity sensor data message @return: None """ - self.fp_conductivity[FPConductivitySensorNames.P9_COND.name] = struct.unpack('f', bytearray( + self.fp_conductivity[fp_enum_repository.FPConductivitySensorNames.P9_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.fp_conductivity[FPConductivitySensorNames.P18_COND.name] = struct.unpack('f', bytearray( + self.fp_conductivity[fp_enum_repository.FPConductivitySensorNames.P18_COND.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] self.fp_conductivity_timestamp = timestamp @@ -90,15 +90,15 @@ @param message: Published RO Rejection Ratio data message @return: None """ - self.ro_rejection_ratio[FPRORejectionRatioEnum.RAW_RO_REJECTION_RATIO.name] = struct.unpack('f', bytearray( + self.ro_rejection_ratio[fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.ro_rejection_ratio[FPRORejectionRatioEnum.RAW_RO_REJECTION_RATIO_TANK_FILL.name] = struct.unpack('f', bytearray( + self.ro_rejection_ratio[fp_enum_repository.FPRORejectionRatioNames.RAW_RO_REJECTION_RATIO_TANK_FILL.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.ro_rejection_ratio[FPRORejectionRatioEnum.AVG_RO_REJECTION_RATIO.name] = struct.unpack('f', bytearray( + self.ro_rejection_ratio[fp_enum_repository.FPRORejectionRatioNames.AVG_RO_REJECTION_RATIO.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.ro_rejection_ratio[FPRORejectionRatioEnum.AVG_RO_REJECTION_RATIO_TANK_FILL.name] = struct.unpack('f', bytearray( + self.ro_rejection_ratio[fp_enum_repository.FPRORejectionRatioNames.AVG_RO_REJECTION_RATIO_TANK_FILL.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.ro_rejection_ratio[FPRORejectionRatioEnum.GEN_PERMEATE_STATE.name] = struct.unpack('i', bytearray( + self.ro_rejection_ratio[fp_enum_repository.FPRORejectionRatioNames.GEN_PERMEATE_STATE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] self.ro_rejection_ratio_timestamp = timestamp @@ -162,7 +162,7 @@ sensor_byte_array = integer_to_bytearray(sensor) payload = reset_byte_array + cond_byte_array + sensor_byte_array - sensor_name = FPConductivitySensorNames(sensor).name.split('_')[0] + sensor_name = fp_enum_repository.FPConductivitySensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -188,7 +188,7 @@ sensor_byte_array = integer_to_bytearray(sensor) payload = reset_byte_array + read_byte_array + sensor_byte_array - sensor_name = FPConductivitySensorNames(sensor).name.split('_')[0] + sensor_name = fp_enum_repository.FPConductivitySensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -214,7 +214,7 @@ sensor_byte_array = integer_to_bytearray(sensor) payload = reset_byte_array + error_byte_array + sensor_byte_array - sensor_name = FPConductivitySensorNames(sensor).name.split('_')[0] + sensor_name = fp_enum_repository.FPConductivitySensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, Index: leahi_dialin/fp/modules/events.py =================================================================== diff -u -ra291930ba38e329e2b373f6d2b2a7564a6b7a09a -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/fp/modules/events.py (.../events.py) (revision a291930ba38e329e2b373f6d2b2a7564a6b7a09a) +++ leahi_dialin/fp/modules/events.py (.../events.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,9 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.fp_defs import FPEventList, FPEventDataType, FPOpModes, FPFaultStates, \ - FPServiceStates, FPPostStates, FPStandbyStates, FPPreGenPermeateStates, FPGenPermeateStates, \ - FPPreGenPDefStates, FPGenPermeateDefStates, FPNotLegalStates +from leahi_dialin.common.fp_defs import fp_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -61,24 +59,24 @@ self._fp_event_data_type = dict() # Dictionary of the mode as key and the sub mode states enum class as the value - self._fp_op_mode_2_sub_mode = {FPOpModes.MODE_FAUL.name: FPFaultStates, - FPOpModes.MODE_SERV.name: FPServiceStates, - FPOpModes.MODE_INIT.name: FPPostStates, - FPOpModes.MODE_STAN.name: FPStandbyStates, - FPOpModes.MODE_PRE_GENP.name: FPPreGenPermeateStates, - FPOpModes.MODE_GENP.name: FPGenPermeateStates, - FPOpModes.MODE_DPGP.name: FPPreGenPDefStates, - FPOpModes.MODE_DEGP.name: FPGenPermeateDefStates, - FPOpModes.MODE_NLEG.name: FPNotLegalStates} + self._fp_op_mode_2_sub_mode = {fp_enum_repository.FPOpModes.MODE_FAUL.name: fp_enum_repository.FPFaultStates, + fp_enum_repository.FPOpModes.MODE_SERV.name: fp_enum_repository.FPServiceStates, + fp_enum_repository.FPOpModes.MODE_INIT.name: fp_enum_repository.FPPostStates, + fp_enum_repository.FPOpModes.MODE_STAN.name: fp_enum_repository.FPStandbyStates, + fp_enum_repository.FPOpModes.MODE_PRE_GENP.name: fp_enum_repository.FPPreGenPermeateStates, + fp_enum_repository.FPOpModes.MODE_GENP.name: fp_enum_repository.FPGenPermeateStates, + fp_enum_repository.FPOpModes.MODE_DPGP.name: fp_enum_repository.FPPreGenPDefStates, + fp_enum_repository.FPOpModes.MODE_DEGP.name: fp_enum_repository.FPGenPermeateDefStates, + fp_enum_repository.FPOpModes.MODE_NLEG.name: fp_enum_repository.FPNotLegalStates} # Loop through the list of the FP events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. - for event in FPEventList: - self._fp_event_dictionary[FPEventList(event).name] = [] + for event in fp_enum_repository.FPEventList: + self._fp_event_dictionary[fp_enum_repository.FPEventList(event).name] = [] # Loop through the list of the event data type enum and update the dictionary - for data_type in FPEventDataType: - event_data_type = FPEventDataType(data_type).name + for data_type in fp_enum_repository.FPEventDataTypes: + event_data_type = fp_enum_repository.FPEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -102,14 +100,14 @@ @returns the requested FP event number """ - list_length = len(self._fp_event_dictionary[FPEventList(event_id).name]) + list_length = len(self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name]) if list_length == 0: event = [] elif event_number > list_length: - event = self._fp_event_dictionary[FPEventList(event_id).name][list_length - 1] + event = self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name][list_length - 1] else: - event = self._fp_event_dictionary[FPEventList(event_id).name][list_length - event_number - 1] + event = self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name][list_length - event_number - 1] return event @@ -136,18 +134,18 @@ list_of_events = [] # If there are not enough event lists send all the events that are available - if len(self._fp_event_dictionary[FPEventList(event_id).name]) <= number_of_events: - list_of_events = self._fp_event_dictionary[FPEventList(event_id).name] + if len(self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name]) <= number_of_events: + list_of_events = self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name] else: # Get the all the events - complete_list = self._fp_event_dictionary[FPEventList(event_id).name] + complete_list = self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name] # Since the last are located at the end of the list, iterate backwards for the defined # event messages for i in range(len(complete_list) - 1, len(complete_list) - number_of_events - 1, -1): list_of_events.append(complete_list[i]) if number_of_events == 0: - list_of_events = self._fp_event_dictionary[FPEventList(event_id).name] + list_of_events = self._fp_event_dictionary[fp_enum_repository.FPEventList(event_id).name] return list_of_events @@ -170,11 +168,11 @@ event_id = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - if event_id == FPEventList.FP_EVENT_OPERATION_STATUS.value: + if event_id == fp_enum_repository.FPEventList.FP_EVENT_OPERATION_STATUS.value: # Get the data type event_data_type_1 = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - struct_data_type = self._fp_event_data_type[FPEventDataType(event_data_type_1).name] + struct_data_type = self._fp_event_data_type[fp_enum_repository.FPEventDataTypes(event_data_type_1).name] op_mode = struct.unpack(' int: """ Constructs and sends the boost pump set speed rate command @@ -56,29 +56,18 @@ pmp = integer_to_bytearray(pump) payload = rst + rpm + pmp - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_FLUID_PUMP_SPEED_OVERRIDE_REQUEST.value, - payload=payload) + pump_name = fp_enum_repository.FPAllPumpNames(pump).name + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_FLUID_PUMP_SPEED_OVERRIDE_REQUEST, + entity_name = f'FP {pump_name} Water Pump speed', + override_text = str(rpm), + logger = self.logger, + can_interface = self.can_interface) - self.logger.debug("override pump set speed rate point") - # 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(rpm) - - self.logger.debug("rpm overridden to " + str_res) - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] - else: - self.logger.debug("Timeout!!!!") - return False - def cmd_pump_set_pwm_request(self, pump: int, pwm: int) -> int: """ Constructs and sends set pwm request for FP pumps \n @@ -90,30 +79,22 @@ @param pwm: integer - counts to override the pwm ( 0 - 500 ) @return: 1 if successful, zero otherwise """ - spd = integer_to_bytearray(pwm) pmp = integer_to_bytearray(pump) payload = pmp + spd - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST.value, - payload=payload) + pump_name = fp_enum_repository.FPAllPumpNames(pump).name + return cmd_generic_override( + payload = payload, + reset = NO_RESET, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST, + entity_name = f'FP {pump_name} Water Pump PWM', + override_text = str(pwm), + logger = self.logger, + can_interface = self.can_interface) - self.logger.debug("setting pump {} to pwm count {}".format(pump,pwm)) - # Send message - received_message = self.can_interface.send(message) - - # If there is content... - if received_message is not None: - - self.logger.debug("pwm set to " + str(pwm)) - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] - else: - self.logger.debug("Timeout!!!!") - return False - def cmd_pump_read_pwm_override(self, pump: int, pwm: float, reset: int = NO_RESET) -> int: """ Constructs and sends the read pwm override for the FP pumps \n @@ -125,31 +106,18 @@ @param reset: integer - 1 to reset a previous override, 0 to override @return: 1 if successful, zero otherwise """ - rst = integer_to_bytearray(reset) rpwm = float_to_bytearray(pwm) pmp = integer_to_bytearray(pump) payload = rst + rpwm + pmp - message = DenaliMessage.build_message(channel_id=DenaliChannels.dialin_to_fp_ch_id, - message_id=MsgIds.MSG_ID_FP_FLUID_PUMP_READ_PWM_OVERRIDE_REQUEST.value, - payload=payload) - - self.logger.debug("override read pwm for pump".format(pump)) - - # 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(rpwm) - - self.logger.debug("pwm overridden to " + str_res) - # response payload is OK or not OK - return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] - else: - self.logger.debug("Timeout!!!!") - return False \ No newline at end of file + pump_name = fp_enum_repository.FPAllPumpNames(pump).name + return cmd_generic_override( + payload = payload, + reset = reset, + channel_id = DenaliChannels.dialin_to_fp_ch_id, + msg_id = MsgIds.MSG_ID_FP_FLUID_PUMP_SET_PWM_REQUEST, + entity_name = f'FP {pump_name} Water Pump read PWM', + override_text = str(pwm), + logger = self.logger, + can_interface = self.can_interface) Index: leahi_dialin/protocols/CAN.py =================================================================== diff -u -r62972f33f3d84041e8d8e68a274e5f2a4cd67568 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/protocols/CAN.py (.../CAN.py) (revision 62972f33f3d84041e8d8e68a274e5f2a4cd67568) +++ leahi_dialin/protocols/CAN.py (.../CAN.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -94,7 +94,6 @@ @param seq: (int) Overrides current sequence number if set @return:: dictionary with channel_id and 8-byte padded message """ - if payload is None: payload = [] @@ -169,7 +168,6 @@ @param message: packet that may or may not be multiple of 8 bytes @return:: packet that is 8-byte multiple - """ message_length = len(message) @@ -192,7 +190,6 @@ @return:: CRC in message """ - crc_index = DenaliMessage.PAYLOAD_START_INDEX + DenaliMessage.get_payload_length(message) return message['message'][crc_index] @@ -204,7 +201,6 @@ @return:: TRUE if CRC matches, FALSE otherwise """ - if message is None: return False else: @@ -223,9 +219,7 @@ @param message: dictionary with channel_id and message keys @return:: integer with channel id - """ - return message['channel_id'] @staticmethod @@ -315,7 +309,6 @@ Returns request ID from packet @param message: complete Diality Packet @return:: integer with request ID - """ msg_id_array = message['message'][DenaliMessage.MSG_ID_INDEX: DenaliMessage.PAYLOAD_LENGTH_INDEX] @@ -351,7 +344,6 @@ @param message: dictionary with channel_id and message keys @return:: a payload array if exist """ - payload_length = DenaliMessage.get_payload_length(message) if payload_length == 0: @@ -381,7 +373,6 @@ Updates made to the "Message List.xlsx" document found in the Diality Software Team SharePoint, specifically in the CAN Channels sheet, should also be applied here. """ - td_alarm_broadcast_ch_id = 0x001 dd_alarm_broadcast_ch_id = 0x002 fp_alarm_broadcast_ch_id = 0x004 @@ -470,7 +461,6 @@ @param can_interface - string containing the can interface, e.g., 'can0" @return: DialityCanMessenger object - """ self.message_queue_mutex = threading.Lock() self.response_dictionary_mutex = threading.Lock() @@ -525,9 +515,7 @@ def start(self): """ starts listening to the can interface. - """ - if self.bus is None: self.logger.error("Cannot start can listener.") return @@ -546,7 +534,6 @@ def stop(self): """ Stop listening the can interface - """ self.run = False self.logger.debug("\nCan listener has stopped.") @@ -579,7 +566,6 @@ Handles messages added to the leahi_dialin canbus message queue @return: None """ - while True: if not self.message_queue: @@ -739,7 +725,6 @@ @param function_ptr: function reference """ - self.ui_received_function_ptr = function_ptr def send(self, @@ -826,7 +811,6 @@ @param send: (bool) Whether we're sending or receiving this packet @return: The styled message """ - tmp = str(message) data = tmp[-41:-18].upper() Index: leahi_dialin/td/modules/air_pump.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/air_pump.py (.../air_pump.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDAirPumpNames, TDAirPumpAttributes +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -48,9 +48,9 @@ self._handler_air_pump_sync) self.td_air_pump = { - TDAirPumpNames.H12_AIR_PUMP.name: { - TDAirPumpAttributes.STATE.name: 0, - TDAirPumpAttributes.POWER.name: 0 + td_enum_repository.TDAirPumpNames.H12_AIR_PUMP.name: { + td_enum_repository.TDAirPumpAttributes.STATE.name: 0, + td_enum_repository.TDAirPumpAttributes.POWER.name: 0 } } @@ -70,8 +70,8 @@ app = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) - self.td_air_pump[TDAirPumpNames.H12_AIR_PUMP.name][TDAirPumpAttributes.STATE.name] = aps[0] - self.td_air_pump[TDAirPumpNames.H12_AIR_PUMP.name][TDAirPumpAttributes.POWER.name] = app[0] + self.td_air_pump[td_enum_repository.TDAirPumpNames.H12_AIR_PUMP.name][td_enum_repository.TDAirPumpAttributes.STATE.name] = aps[0] + self.td_air_pump[td_enum_repository.TDAirPumpNames.H12_AIR_PUMP.name][td_enum_repository.TDAirPumpAttributes.POWER.name] = app[0] self.td_air_pump_timestamp = timestamp Index: leahi_dialin/td/modules/air_trap.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/air_trap.py (.../air_trap.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDAirTrapValves, TDAirTrapLevelSensors, TDAirTrapLevelSensorsAttributes, TDAirTrapState +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -52,18 +52,18 @@ self._handler_air_trap_sync) self.air_trap_level_sensors = { - TDAirTrapLevelSensors.H17_LEVEL.name: { - TDAirTrapLevelSensorsAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, - TDAirTrapLevelSensorsAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL + td_enum_repository.TDAirTrapLevelSensorNames.H17_LEVEL.name: { + td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, + td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL }, - TDAirTrapLevelSensors.H16_LEVEL.name: { - TDAirTrapLevelSensorsAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, - TDAirTrapLevelSensorsAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL + td_enum_repository.TDAirTrapLevelSensorNames.H16_LEVEL.name: { + td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name: self.AIR_DETECTED_AT_LEVEL, + td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name: self.AIR_DETECTED_AT_LEVEL } } self.air_trap_valve_states = { - TDAirTrapValves.H13_VALV.name: 0, - TDAirTrapValves.H20_VALV.name: 0 + td_enum_repository.TDAirTrapValveNames.H13_VALV.name: 0, + td_enum_repository.TDAirTrapValveNames.H20_VALV.name: 0 } self.air_control = 0 self.td_air_trap_timestamp = 0.0 @@ -97,12 +97,12 @@ controlling = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7])) - self.air_trap_level_sensors[TDAirTrapLevelSensors.H17_LEVEL.name][TDAirTrapLevelSensorsAttributes.LEVEL.name] = lower[0] - self.air_trap_level_sensors[TDAirTrapLevelSensors.H16_LEVEL.name][TDAirTrapLevelSensorsAttributes.LEVEL.name] = upper[0] - self.air_trap_level_sensors[TDAirTrapLevelSensors.H17_LEVEL.name][TDAirTrapLevelSensorsAttributes.RAW.name] = raw_lower[0] - self.air_trap_level_sensors[TDAirTrapLevelSensors.H16_LEVEL.name][TDAirTrapLevelSensorsAttributes.RAW.name] = raw_upper[0] - self.air_trap_valve_states[TDAirTrapValves.H13_VALV.name] = h13_vlv_st[0] - self.air_trap_valve_states[TDAirTrapValves.H20_VALV.name] = h20_vlv_st[0] + self.air_trap_level_sensors[td_enum_repository.TDAirTrapLevelSensorNames.H17_LEVEL.name][td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name] = lower[0] + self.air_trap_level_sensors[td_enum_repository.TDAirTrapLevelSensorNames.H16_LEVEL.name][td_enum_repository.TDAirTrapLevelSensorAttributes.LEVEL.name] = upper[0] + self.air_trap_level_sensors[td_enum_repository.TDAirTrapLevelSensorNames.H17_LEVEL.name][td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name] = raw_lower[0] + self.air_trap_level_sensors[td_enum_repository.TDAirTrapLevelSensorNames.H16_LEVEL.name][td_enum_repository.TDAirTrapLevelSensorAttributes.RAW.name] = raw_upper[0] + self.air_trap_valve_states[td_enum_repository.TDAirTrapValveNames.H13_VALV.name] = h13_vlv_st[0] + self.air_trap_valve_states[td_enum_repository.TDAirTrapValveNames.H20_VALV.name] = h20_vlv_st[0] self.air_control = controlling[0] self.td_air_trap_timestamp = timestamp @@ -144,7 +144,7 @@ idx = integer_to_bytearray(sensor) payload = rst + det + idx - sensor_name = TDAirTrapLevelSensors(sensor).name.split('_')[0] + sensor_name = td_enum_repository.TDAirTrapLevelSensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -172,7 +172,7 @@ idx = integer_to_bytearray(sensor) payload = rst + det + idx - sensor_name = TDAirTrapLevelSensors(sensor).name.split('_')[0] + sensor_name = td_enum_repository.TDAirTrapLevelSensorNames(sensor).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, @@ -184,8 +184,8 @@ can_interface = self.can_interface) - def cmd_set_td_air_trap_valve(self, valve: int = TDAirTrapValves.H13_VALV.value, - valve_state: int = TDAirTrapState.STATE_CLOSED.value) -> int: + def cmd_set_td_air_trap_valve(self, valve: int = td_enum_repository.TDAirTrapValveNames.H13_VALV.value, + valve_state: int = td_enum_repository.TDAirTrapState.STATE_CLOSED.value) -> int: """ Constructs and sends an open/close command to the TD air trap valves. @@ -197,7 +197,7 @@ sts = integer_to_bytearray(valve_state) payload = vlv + sts - valve_name = TDAirTrapValves(valve).name.split('_')[0] + valve_name = td_enum_repository.TDAirTrapValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, Index: leahi_dialin/td/modules/alarms.py =================================================================== diff -u -r03dc6c3ff80d7f76a5b6438ba067e02a37e2ce93 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision 03dc6c3ff80d7f76a5b6438ba067e02a37e2ce93) +++ leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -22,7 +22,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDEventDataType +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, DialinEnum, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -138,8 +138,8 @@ self.alarm_state_button_blockers = [False] * self.AlarmResponseButtons.NUM_OF_TD_ALARM_RESPONSE_BUTTONS.value # Loop through the list of the event data type enum and update the dictionary - for data_type in TDEventDataType: - event_data_type = TDEventDataType(data_type).name + for data_type in td_enum_repository.TDEventDataTypes: + event_data_type = td_enum_repository.TDEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -199,13 +199,13 @@ data_typ_1 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])) # Get the corresponding structure format - struct_data_type_1 = self.alarm_data_type[TDEventDataType(data_typ_1[0]).name] + struct_data_type_1 = self.alarm_data_type[td_enum_repository.TDEventDataTypes(data_typ_1[0]).name] # Get the data value by unpacking the data type data_1 = struct.unpack(struct_data_type_1, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3])) data_typ_2 = struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4])) # Get the corresponding structure format - struct_data_type_2 = self.alarm_data_type[TDEventDataType(data_typ_2[0]).name] + struct_data_type_2 = self.alarm_data_type[td_enum_repository.TDEventDataTypes(data_typ_2[0]).name] # Get the data value by unpacking the data type data_2 = struct.unpack(struct_data_type_2, bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5])) Index: leahi_dialin/td/modules/blood_flow.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/blood_flow.py (.../blood_flow.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET, PUMP_CONTROL_MODE_CLOSED_LOOP from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDBloodFlowMotorAttributes +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -46,18 +46,19 @@ self._handler_blood_flow_sync) self.td_blood_flow_timestamp = 0.0 self.h4_motor = { - TDBloodFlowMotorAttributes.SET_BLOOD_FLOW_RATE.name: 0, - TDBloodFlowMotorAttributes.MEASURED_BLOOD_FLOW_RATE.name: 0.0, - TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_ROTOR_SPEED.name: 0.0, - TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_SPEED.name: 0.0, - TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_TORQUE : 0.0, - TDBloodFlowMotorAttributes.SET_RPM.name: 0.0, - TDBloodFlowMotorAttributes.ROTOR_COUNT.name: 0, - TDBloodFlowMotorAttributes.PRES_BLOOD_FLOW_RATE.name: 0, - TDBloodFlowMotorAttributes.ROTOR_HALL_STATE.name: 0, + td_enum_repository.TDBloodFlowMotorAttributes.SET_BLOOD_FLOW_RATE.name: 0, + td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_FLOW_RATE.name: 0.0, + td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_ROTOR_SPEED.name: 0.0, + td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_SPEED.name: 0.0, + td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_TORQUE : 0.0, + td_enum_repository.TDBloodFlowMotorAttributes.SET_RPM.name: 0.0, + td_enum_repository.TDBloodFlowMotorAttributes.ROTOR_COUNT.name: 0, + td_enum_repository.TDBloodFlowMotorAttributes.PRES_BLOOD_FLOW_RATE.name: 0, + td_enum_repository.TDBloodFlowMotorAttributes.ROTOR_HALL_STATE.name: 0, } + @publish(["msg_id_td_blood_pump_data", "h4_motor", "td_blood_flow_timestamp"]) def _handler_blood_flow_sync(self, message, timestamp=0.0): """ @@ -67,23 +68,23 @@ @param message: published blood flow data message @return: none """ - self.h4_motor[TDBloodFlowMotorAttributes.SET_BLOOD_FLOW_RATE.name] = struct.unpack('i', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.SET_BLOOD_FLOW_RATE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.MEASURED_BLOOD_FLOW_RATE.name] = struct.unpack('f', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_FLOW_RATE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_ROTOR_SPEED.name] = struct.unpack('f', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_ROTOR_SPEED.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_SPEED.name] = struct.unpack('f', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_SPEED.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_TORQUE.name] = struct.unpack('f', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.MEASURED_BLOOD_PUMP_TORQUE.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_5:MsgFieldPositions.END_POS_FIELD_5]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.SET_RPM.name] = struct.unpack('f', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.SET_RPM.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_6:MsgFieldPositions.END_POS_FIELD_6]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.ROTOR_COUNT.name] = struct.unpack('I', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.ROTOR_COUNT.name] = struct.unpack('I', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_7:MsgFieldPositions.END_POS_FIELD_7]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.PRES_BLOOD_FLOW_RATE.name] = struct.unpack('I', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.PRES_BLOOD_FLOW_RATE.name] = struct.unpack('I', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_8:MsgFieldPositions.END_POS_FIELD_8]))[0] - self.h4_motor[TDBloodFlowMotorAttributes.ROTOR_HALL_STATE.name] = struct.unpack('I', bytearray( + self.h4_motor[td_enum_repository.TDBloodFlowMotorAttributes.ROTOR_HALL_STATE.name] = struct.unpack('I', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_9:MsgFieldPositions.END_POS_FIELD_9]))[0] self.td_blood_flow_timestamp = timestamp Index: leahi_dialin/td/modules/bubble_detector.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/bubble_detector.py (.../bubble_detector.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDAirBubbleDetectorNames, TDAirBubbleDetectorAttributes +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -62,11 +62,11 @@ self.td_air_bubbles_timestamp = 0.0 self.h18_bubble_detector = { - TDAirBubbleDetectorNames.H18_ADV.name: { + td_enum_repository.TDAirBubbleDetectorNames.H18_ADV.name: { # Initialize status of ADV air bubble detectors to fluid (no air bubble) detected - TDAirBubbleDetectorAttributes.STATUS.name: self.FLUID_DETECTED_STATUS, + td_enum_repository.TDAirBubbleDetectorAttributes.STATUS.name: self.FLUID_DETECTED_STATUS, # Initialize state of ADV air bubble detectors state machine to normal - TDAirBubbleDetectorAttributes.STATE.name: self.AIR_BUBBLE_NORMAL_STATE + td_enum_repository.TDAirBubbleDetectorAttributes.STATE.name: self.AIR_BUBBLE_NORMAL_STATE } } @@ -79,9 +79,9 @@ @param message: published air bubbles data message as: h18 bubble status, h18 bubble state @return: None """ - self.h18_bubble_detector[TDAirBubbleDetectorNames.H18_ADV.name][TDAirBubbleDetectorAttributes.STATUS.name] = ( + self.h18_bubble_detector[td_enum_repository.TDAirBubbleDetectorNames.H18_ADV.name][td_enum_repository.TDAirBubbleDetectorAttributes.STATUS.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1])))[0] - self.h18_bubble_detector[TDAirBubbleDetectorNames.H18_ADV.name][TDAirBubbleDetectorAttributes.STATE.name] = ( + self.h18_bubble_detector[td_enum_repository.TDAirBubbleDetectorNames.H18_ADV.name][td_enum_repository.TDAirBubbleDetectorAttributes.STATE.name] = ( struct.unpack('i', bytearray(message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2])))[0] self.td_air_bubbles_timestamp = timestamp @@ -125,7 +125,7 @@ stat = integer_to_bytearray(status) payload = rst + stat + i - sensor_name = TDAirBubbleDetectorNames(index).name.split('_')[0] + sensor_name = td_enum_repository.TDAirBubbleDetectorNames(index).name.split('_')[0] return cmd_generic_override( payload = payload, reset = reset, Index: leahi_dialin/td/modules/ejector.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/ejector.py (.../ejector.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDEjectorNames, TDEjectorAttributes +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -48,11 +48,11 @@ self._handler_ejector_sync) self.h5_motor = { - TDEjectorNames.H5_MOTOR.name: { - TDEjectorAttributes.STATE.name: 0, - TDEjectorAttributes.SET_SPEED.name: 0.0, - TDEjectorAttributes.OPT_SNSR_RETRACT: 0, # H25 Optical Sensor - TDEjectorAttributes.OPT_SNSR_ENGAGE: 0 # H24 Optical Sensor + td_enum_repository.TDEjectorNames.H5_MOTOR.name: { + td_enum_repository.TDEjectorAttributes.STATE.name: 0, + td_enum_repository.TDEjectorAttributes.SET_SPEED.name: 0.0, + td_enum_repository.TDEjectorAttributes.OPT_SNSR_RETRACT: 0, # H25 Optical Sensor + td_enum_repository.TDEjectorAttributes.OPT_SNSR_ENGAGE: 0 # H24 Optical Sensor } } self.td_ejector_timestamp = 0 @@ -66,13 +66,13 @@ @param message: published ejector data message as: ejector state @return: None """ - self.h5_motor[TDEjectorNames.H5_MOTOR.name][TDEjectorAttributes.STATE.name] = struct.unpack('i', bytearray( + self.h5_motor[td_enum_repository.TDEjectorNames.H5_MOTOR.name][td_enum_repository.TDEjectorAttributes.STATE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - self.h5_motor[TDEjectorNames.H5_MOTOR.name][TDEjectorAttributes.SET_SPEED.name] = struct.unpack('f', bytearray( + self.h5_motor[td_enum_repository.TDEjectorNames.H5_MOTOR.name][td_enum_repository.TDEjectorAttributes.SET_SPEED.name] = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - self.h5_motor[TDEjectorNames.H5_MOTOR.name][TDEjectorAttributes.OPT_SNSR_RETRACT.name] = struct.unpack('i', bytearray( + self.h5_motor[td_enum_repository.TDEjectorNames.H5_MOTOR.name][td_enum_repository.TDEjectorAttributes.OPT_SNSR_RETRACT.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_3:MsgFieldPositions.END_POS_FIELD_3]))[0] - self.h5_motor[TDEjectorNames.H5_MOTOR.name][TDEjectorAttributes.OPT_SNSR_ENGAGE.name] = struct.unpack('i', bytearray( + self.h5_motor[td_enum_repository.TDEjectorNames.H5_MOTOR.name][td_enum_repository.TDEjectorAttributes.OPT_SNSR_ENGAGE.name] = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_4:MsgFieldPositions.END_POS_FIELD_4]))[0] self.td_ejector_timestamp = timestamp Index: leahi_dialin/td/modules/events.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/events.py (.../events.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/events.py (.../events.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -19,9 +19,7 @@ from datetime import datetime from time import time -from leahi_dialin.common.td_defs import TDEventList, TDEventDataType, TDOpModes, TDFaultStates, \ - TDServiceStates, TDInitStates, TDStandbyStates, TDTreatmentParamStates, TDPreTreatmentModesStates, \ - TDTreatmentStates, TDPostTreatmentStates, TDNotLegalStates +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish @@ -60,24 +58,24 @@ self._td_event_data_type = dict() # Dictionary of the mode as key and the sub mode states enum class as the value - self._td_op_mode_2_sub_mode = {TDOpModes.MODE_FAUL.name: TDFaultStates, - TDOpModes.MODE_SERV.name: TDServiceStates, - TDOpModes.MODE_INIT.name: TDInitStates, - TDOpModes.MODE_STAN.name: TDStandbyStates, - TDOpModes.MODE_TPAR.name: TDTreatmentParamStates, - TDOpModes.MODE_PRET.name: TDPreTreatmentModesStates, - TDOpModes.MODE_TREA.name: TDTreatmentStates, - TDOpModes.MODE_POST.name: TDPostTreatmentStates, - TDOpModes.MODE_NLEG.name: TDNotLegalStates} + self._td_op_mode_2_sub_mode = {td_enum_repository.TDOpModes.MODE_FAUL.name: td_enum_repository.TDFaultStates, + td_enum_repository.TDOpModes.MODE_SERV.name: td_enum_repository.TDServiceStates, + td_enum_repository.TDOpModes.MODE_INIT.name: td_enum_repository.TDInitStates, + td_enum_repository.TDOpModes.MODE_STAN.name: td_enum_repository.TDStandbyStates, + td_enum_repository.TDOpModes.MODE_TPAR.name: td_enum_repository.TDTreatmentParamStates, + td_enum_repository.TDOpModes.MODE_PRET.name: td_enum_repository.TDPreTreatmentModesStates, + td_enum_repository.TDOpModes.MODE_TREA.name: td_enum_repository.TDTreatmentStates, + td_enum_repository.TDOpModes.MODE_POST.name: td_enum_repository.TDPostTreatmentStates, + td_enum_repository.TDOpModes.MODE_NLEG.name: td_enum_repository.TDNotLegalStates} # Loop through the list of the TD events enums and initial the event dictionary. Each event is a key in the # dictionary and the value is a list. - for event in TDEventList: - self._td_event_dictionary[TDEventList(event).name] = [] + for event in td_enum_repository.TDEventList: + self._td_event_dictionary[td_enum_repository.TDEventList(event).name] = [] # Loop through the list of the event data type enum and update the dictionary - for data_type in TDEventDataType: - event_data_type = TDEventDataType(data_type).name + for data_type in td_enum_repository.TDEventDataTypes: + event_data_type = td_enum_repository.TDEventDataTypes(data_type).name struct_unpack_type = None # If U32 is in the data type enum (i.e. EVENT_DATA_TYPE_U32), then the key is the enum and the value is @@ -101,14 +99,14 @@ @returns the requested TD event number """ - list_length = len(self._td_event_dictionary[TDEventList(event_id).name]) + list_length = len(self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name]) if list_length == 0: event = [] elif event_number > list_length: - event = self._td_event_dictionary[TDEventList(event_id).name][list_length - 1] + event = self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name][list_length - 1] else: - event = self._td_event_dictionary[TDEventList(event_id).name][list_length - event_number - 1] + event = self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name][list_length - event_number - 1] return event @@ -135,18 +133,18 @@ list_of_events = [] # If there are not enough event lists send all the events that are available - if len(self._td_event_dictionary[TDEventList(event_id).name]) <= number_of_events: - list_of_events = self._td_event_dictionary[TDEventList(event_id).name] + if len(self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name]) <= number_of_events: + list_of_events = self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name] else: # Get the all the events - complete_list = self._td_event_dictionary[TDEventList(event_id).name] + complete_list = self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name] # Since the last are located at the end of the list, iterate backwards for the defined # event messages for i in range(len(complete_list) - 1, len(complete_list) - number_of_events - 1, -1): list_of_events.append(complete_list[i]) if number_of_events == 0: - list_of_events = self._td_event_dictionary[TDEventList(event_id).name] + list_of_events = self._td_event_dictionary[td_enum_repository.TDEventList(event_id).name] return list_of_events @@ -169,11 +167,11 @@ event_id = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_1:MsgFieldPositions.END_POS_FIELD_1]))[0] - if event_id == TDEventList.TD_EVENT_OPERATION_STATUS.value: + if event_id == td_enum_repository.TDEventList.TD_EVENT_OPERATION_STATUS.value: # Get the data type event_data_type_1 = struct.unpack('i', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_2:MsgFieldPositions.END_POS_FIELD_2]))[0] - struct_data_type = self._td_event_data_type[TDEventDataType(event_data_type_1).name] + struct_data_type = self._td_event_data_type[td_enum_repository.TDEventDataTypes(event_data_type_1).name] op_mode = struct.unpack('= TDTreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE.value: + elif tx_param_id >= td_enum_repository.TDTreatmentParameters.TREATMENT_PARAM_DIALYSATE_TEMPERATURE.value: tpv = float_to_bytearray(tx_param_value) else: @@ -318,7 +318,7 @@ idx = integer_to_bytearray(tx_param_id) payload = idx + tpv - param_name = TDTreatmentParameters(tx_param_id).name + param_name = td_enum_repository.TDTreatmentParameters(tx_param_id).name return cmd_generic_override( payload = payload, reset = NO_RESET, Index: leahi_dialin/td/modules/valves.py =================================================================== diff -u -r1813f6556e8a726a6e300caffe0bcafc40010aa9 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/valves.py (.../valves.py) (revision 1813f6556e8a726a6e300caffe0bcafc40010aa9) +++ leahi_dialin/td/modules/valves.py (.../valves.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDValvesEnum, TDValvesPositions, TDValvesStates +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliMessage, DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray @@ -77,8 +77,8 @@ self.td_valves_timestamp = 0.0 # A dictionary of the valves with the status - self.valves_status = {TDValvesEnum.H1_VALV.name: {}, - TDValvesEnum.H19_VALV.name: {}} + self.valves_status = {td_enum_repository.TDValveNames.H1_VALV.name: {}, + td_enum_repository.TDValveNames.H19_VALV.name: {}} @publish(["msg_id_td_valves_data", "valves_status", "td_valves_timestamp"]) @@ -109,11 +109,11 @@ message['message'][self.START_MAX_HOMING_ENC:self.END_MAX_HOMING_ENC]))[0] # To make sure values of the enums are not out of range - if TDValvesEnum.has_value(vlv_id) and TDValvesPositions.has_value(pos_id) and TDValvesStates.has_value(pos_id): - vlv_name = TDValvesEnum(vlv_id).name + if td_enum_repository.TDValveNames.has_value(vlv_id) and td_enum_repository.TDValvePositions.has_value(pos_id) and td_enum_repository.TDValveStates.has_value(pos_id): + vlv_name = td_enum_repository.TDValveNames(vlv_id).name # Update the valves dictionary - self.valves_status[vlv_name] = {'Valve': vlv_name, 'PosID': TDValvesPositions(pos_id).name, 'PosCnt': pos_cnt, - 'Cmd': cmd_pos, 'State': TDValvesStates(state_id).name, 'PosA': pos_a, + self.valves_status[vlv_name] = {'Valve': vlv_name, 'PosID': td_enum_repository.TDValvePositions(pos_id).name, 'PosCnt': pos_cnt, + 'Cmd': cmd_pos, 'State': td_enum_repository.TDValveStates(state_id).name, 'PosA': pos_a, 'PosB': pos_b, 'PosC': pos_c, 'PosD': pos_d, 'Max_homing_enc': max_homing_enc} self.td_valves_timestamp = timestamp @@ -143,16 +143,16 @@ """ Constructs and sends the TD valves set position for a valve - @param valve: integer - Valve number. Defined in TDValvesEnum class - @param position: integer - Position number: Defined in TDValvesPositions class + @param valve: integer - Valve number. Defined in td_enum_repository.TDValveNames class + @param position: integer - Position number: Defined in td_enum_repository.TDValvePositions class @returns 1 if successful, zero otherwise """ vlv = integer_to_bytearray(valve) pos = integer_to_bytearray(position) payload = vlv + pos - valve_name = TDValvesEnum(valve).name.split('_')[0] + valve_name = td_enum_repository.TDValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, @@ -168,7 +168,7 @@ """ Constructs and sends the TD valves home command - @param valve: integer - Valve number. Defined in TDValvesEnum class + @param valve: integer - Valve number. Defined in td_enum_repository.TDValveNames class @param force_home: integer - 1 to force valve to home position, 0 for normal homing @param cartridge: integer - 1 to use cartridge settings, 0 to use settings for system use without cartridge @returns 1 if successful, zero otherwise @@ -178,7 +178,7 @@ cart = integer_to_bytearray(cartridge) payload = vlv + frc + cart - valve_name = TDValvesEnum(valve).name.split('_')[0] + valve_name = td_enum_repository.TDValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, @@ -194,7 +194,7 @@ """ Constructs and sends the TD valves set position for a valve - @@param valve: integer - Valve number. Defined in TDValvesEnum class + @@param valve: integer - Valve number. Defined in td_enum_repository.TDValveNames class @param position_count: integer value @param reset: integer - 1 to reset a previous override, 0 to override @returns 1 if successful, zero otherwise @@ -204,7 +204,7 @@ pos = integer_to_bytearray(position_count) payload = reset_value + pos + vlv - valve_name = TDValvesEnum(valve).name.split('_')[0] + valve_name = td_enum_repository.TDValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, @@ -220,7 +220,7 @@ """ Constructs and sends the TD valves set position for a valve - @@param valve: integer - Valve number. Defined in TDValvesEnum class + @@param valve: integer - Valve number. Defined in td_enum_repository.TDValveNames class @param status: integer value @param reset: integer - 1 to reset a previous override, 0 to override @returns 1 if successful, zero otherwise @@ -230,7 +230,7 @@ sts = integer_to_bytearray(status) payload = reset_value + sts + vlv - valve_name = TDValvesEnum(valve).name.split('_')[0] + valve_name = td_enum_repository.TDValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, @@ -247,15 +247,15 @@ Constructs and sends a given valve to change position by a given number of encoder counts. - @@param valve: integer - Valve number. Defined in TDValvesEnum class + @@param valve: integer - Valve number. Defined in td_enum_repository.TDValveNames class @param count: integer value @returns 1 if successful, zero otherwise """ vlv = integer_to_bytearray(valve) pos = integer_to_bytearray(counts) payload = pos + vlv - valve_name = TDValvesEnum(valve).name.split('_')[0] + valve_name = td_enum_repository.TDValveNames(valve).name.split('_')[0] return cmd_generic_override( payload = payload, reset = NO_RESET, Index: leahi_dialin/td/modules/voltages.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/modules/voltages.py (.../voltages.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/modules/voltages.py (.../voltages.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -20,7 +20,7 @@ from leahi_dialin.common.constants import NO_RESET from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override -from leahi_dialin.common.td_defs import TDMonitoredVoltages +from leahi_dialin.common.td_defs import td_enum_repository from leahi_dialin.protocols.CAN import DenaliChannels from leahi_dialin.utils.base import AbstractSubSystem, publish from leahi_dialin.utils.conversions import integer_to_bytearray, float_to_bytearray @@ -44,7 +44,7 @@ self.msg_id_td_voltages_data = MsgIds.MSG_ID_TD_VOLTAGES_DATA.value self.can_interface.register_receiving_publication_function(channel_id, self.msg_id_td_voltages_data, self._handler_monitored_voltages_sync) - self.monitored_voltages = [0.0] * TDMonitoredVoltages.NUM_OF_MONITORED_VOLTAGE_LINES.value + self.monitored_voltages = [0.0] * td_enum_repository.TDMonitoredVoltages.NUM_OF_MONITORED_VOLTAGE_LINES.value self.td_voltages_timestamp = 0.0 @@ -80,17 +80,17 @@ vfp = struct.unpack('f', bytearray( message['message'][MsgFieldPositions.START_POS_FIELD_11:MsgFieldPositions.END_POS_FIELD_11])) - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_1_2V.value] = v12[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_3_3V.value] = v33[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_5V_LOGIC.value] = v5l[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_5V_SENSORS.value] = v5s[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_24V.value] = v24[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_24V_REGEN.value] = v24g[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_FPGA_REF_V.value] = vfr[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_PBA_REF_V.value] = vpr[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_FPGA_VCC_V.value] = vfc[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_FPGA_AUX_V.value] = vfa[0] - self.monitored_voltages[TDMonitoredVoltages.MONITORED_LINE_FPGA_PVN_V.value] = vfp[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_1_2V.value] = v12[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_3_3V.value] = v33[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_5V_LOGIC.value] = v5l[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_5V_SENSORS.value] = v5s[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_24V.value] = v24[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_24V_REGEN.value] = v24g[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_FPGA_REF_V.value] = vfr[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_PBA_REF_V.value] = vpr[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_FPGA_VCC_V.value] = vfc[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_FPGA_AUX_V.value] = vfa[0] + self.monitored_voltages[td_enum_repository.TDMonitoredVoltages.MONITORED_LINE_FPGA_PVN_V.value] = vfp[0] self.td_voltages_timestamp = timestamp @@ -132,7 +132,7 @@ idx = integer_to_bytearray(signal) payload = rst + vlt + idx - sensor_name = TDMonitoredVoltages(signal).name + sensor_name = td_enum_repository.TDMonitoredVoltages(signal).name return cmd_generic_override( payload = payload, reset = reset, Index: leahi_dialin/td/treatment_delivery.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/td/treatment_delivery.py (.../treatment_delivery.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -37,7 +37,7 @@ from ..common.constants import NO_RESET from ..common.msg_defs import MsgIds, MsgFieldPositions, MsgFieldPositionsFWVersions -from ..common.td_defs import TDOpModes +from ..common.td_defs import td_enum_repository from ..common.override_templates import cmd_generic_broadcast_interval_override, cmd_generic_override from ..protocols.CAN import DenaliMessage, DenaliCanMessenger, DenaliChannels from ..utils.base import AbstractSubSystem, publish, LogManager @@ -106,7 +106,7 @@ self.td_debug_events_timestamp = 0.0 self.ui_version_info_response_timestamp = 0.0 self.td_version_response_timestamp = 0.0 - self.td_operation_mode = TDOpModes.MODE_INIT.value + self.td_operation_mode = td_enum_repository.TDOpModes.MODE_INIT.value self.td_operation_sub_mode = 0 self.td_logged_in = False self.td_set_logged_in_status(False) Index: leahi_dialin/ui/td_messaging.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/ui/td_messaging.py (.../td_messaging.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -662,6 +662,7 @@ self.can_interface.send(message, 0) + def td_vitals_adjustment_response(self,vRejectionReason: int): """ the vitals adjustment response message method(Msg ID: 0x64, 100) @@ -1186,6 +1187,63 @@ payload=payload) self.can_interface.send(message, 0) + def td_duration_validate_response(self, vRejectionReason: int, vDuration: int, vUFVolumeGoal: float, vUFRate: float): + """ + the duration validate response message method(Msg ID: 0x84, 132) + Args: + @param vRejectionReason (int) : response rejection reason, + if rejection reason is 0, then accepted (0) will be sent, + otherwise rejected (1) + @param vDuration (int) : treatment duration (min) + @param vUFVolumeGoal (float) : UF volume goal (mL) + @param vUFRate (float) : UF rate (L/hr) + @return: None + """ + payload = conversions.integer_to_bytearray(1 if vRejectionReason == 0 else 0 ) + payload += conversions.integer_to_bytearray(vRejectionReason ) + payload += conversions.integer_to_bytearray(vDuration ) + payload += conversions.float_to_bytearray(vUFVolumeGoal ) + payload += conversions.float_to_bytearray(vUFRate ) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_DURATION_VALIDATE_RESPONSE .value, + payload=payload) + self.can_interface.send(message, 0) + + + def td_blood_set_auto_load_response(self,vRejectionReason: int): + """ + the blood set auto eject response message method(Msg ID: 0xXX, XXX) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray(1 if vRejectionReason == 0 else 0) + payload += conversions.integer_to_bytearray(vRejectionReason) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_ADJUST_DISPOSABLES_CONFIRM_RESPONSE.value, + payload=payload) + self.can_interface.send(message, 0) + + def td_blood_set_auto_eject_response(self,vRejectionReason: int): + """ + the heparin adjustment response message method(Msg ID: 0xXX, XXX) + Args: + None + @return: None + """ + payload = conversions.integer_to_bytearray(1 if vRejectionReason == 0 else 0) + payload += conversions.integer_to_bytearray(vRejectionReason) + + message = CAN.DenaliMessage.build_message( + channel_id=CAN.DenaliChannels.td_to_ui_ch_id, + message_id=msg_ids.MsgIds.MSG_ID_TD_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_RESPONSE.value, + payload=payload) + 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) @@ -1207,73 +1265,73 @@ def td_Treatment_Parameters_Validation( self, - vAccepted : int = 1, - vBloodFlowRateRejectReason : int = 0, - vDialysateFlowRateRejectReason : int = 0, - vTreatmentDurationRejectReason : int = 0, - vSalineBolusVolumeRejectReason : int = 0, - vHeparinStopTimeRejectReason : int = 0, - vHeparinTypeRejectReason : int = 0, - vAcidConcentrateRejectReason : int = 0, - vBicarbonateConcentrateRejectReason : int = 0, - vDialyzerTypeRejectReason : int = 0, - vBloodPressureMeasureIntervalRejectReason : int = 0, - vRinsebackFlowRateRejectReason : int = 0, - vRinsebackVolumeRejectReason : int = 0, - vArterialPressureLimitWindowRejectReason : int = 0, - vVenousPressureLimitWindowRejectReason : int = 0, - vVenousPressureLimitAsymtrcRejectReason : int = 0, - vTrancembrncPressureLimitWindowRejectReason : int = 0, - vDialysateTempRejectReason : int = 0, - vHeparinDispensingRateRejectReason : int = 0, - vHeparinBolusVolumeRejectReason : int = 0 + vAccepted : int = 1, + vBloodFlowRateRejectReason : int = 0, + vDialysateFlowRateRejectReason : int = 0, + vTreatmentDurationRejectReason : int = 0, + vSalineBolusVolumeRejectReason : int = 0, + vHeparinStopTimeRejectReason : int = 0, + vHeparinTypeRejectReason : int = 0, + vAcidConcentrateRejectReason : int = 0, + vBicarbonateConcentrateRejectReason : int = 0, + vDialyzerTypeRejectReason : int = 0, + vBloodPressureMeasureIntervalRejectReason : int = 0, + vRinsebackFlowRateRejectReason : int = 0, + vRinsebackVolumeRejectReason : int = 0, + vArterialPressureLimitWindowRejectReason : int = 0, + vVenousPressureLimitWindowRejectReason : int = 0, + vVenousPressureLimitAsymtrcRejectReason : int = 0, + vTransmembranePressureLimitWindowRejectReason : int = 0, + vDialysateTempRejectReason : int = 0, + vHeparinDispensingRateRejectReason : int = 0, + vHeparinBolusVolumeRejectReason : int = 0 ): """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. - vDialysateFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vTreatmentDurationRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vSalineBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinStopTimeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vAcidConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vBicarbonateConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vDialyzerTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vBloodPressureMeasureIntervalRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vRinsebackFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vRinsebackVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vArterialPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vVenousPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vVenousPressureLimitAsymtrcRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vTrancembrncPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vDialysateTempRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinDispensingRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. - vHeparinBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vAccepted (int, optional): Zero value if rejected. Defaults to 1. + vBloodFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vDialysateFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vTreatmentDurationRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vSalineBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinStopTimeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vAcidConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vBicarbonateConcentrateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vDialyzerTypeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vBloodPressureMeasureIntervalRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vRinsebackFlowRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vRinsebackVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vArterialPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vVenousPressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vVenousPressureLimitAsymtrcRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vTransmembranePressureLimitWindowRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vDialysateTempRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinDispensingRateRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. + vHeparinBolusVolumeRejectReason (int, optional): None zero value of rejection reason. Defaults to 0. """ if not self.can_enabled: raise ValueError("CAN Interface is not enabled") - payload = conversions.integer_to_bytearray(vAccepted ) - payload += conversions.integer_to_bytearray(vBloodFlowRateRejectReason ) - payload += conversions.integer_to_bytearray(vDialysateFlowRateRejectReason ) - payload += conversions.integer_to_bytearray(vTreatmentDurationRejectReason ) - payload += conversions.integer_to_bytearray(vSalineBolusVolumeRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinStopTimeRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinTypeRejectReason ) - payload += conversions.integer_to_bytearray(vAcidConcentrateRejectReason ) - payload += conversions.integer_to_bytearray(vBicarbonateConcentrateRejectReason ) - payload += conversions.integer_to_bytearray(vDialyzerTypeRejectReason ) - payload += conversions.integer_to_bytearray(vBloodPressureMeasureIntervalRejectReason ) - payload += conversions.integer_to_bytearray(vRinsebackFlowRateRejectReason ) - payload += conversions.integer_to_bytearray(vRinsebackVolumeRejectReason ) - payload += conversions.integer_to_bytearray(vArterialPressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vVenousPressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vVenousPressureLimitAsymtrcRejectReason ) - payload += conversions.integer_to_bytearray(vTrancembrncPressureLimitWindowRejectReason ) - payload += conversions.integer_to_bytearray(vDialysateTempRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinDispensingRateRejectReason ) - payload += conversions.integer_to_bytearray(vHeparinBolusVolumeRejectReason ) + payload = conversions.integer_to_bytearray(vAccepted ) + payload += conversions.integer_to_bytearray(vBloodFlowRateRejectReason ) + payload += conversions.integer_to_bytearray(vDialysateFlowRateRejectReason ) + payload += conversions.integer_to_bytearray(vTreatmentDurationRejectReason ) + payload += conversions.integer_to_bytearray(vSalineBolusVolumeRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinStopTimeRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinTypeRejectReason ) + payload += conversions.integer_to_bytearray(vAcidConcentrateRejectReason ) + payload += conversions.integer_to_bytearray(vBicarbonateConcentrateRejectReason ) + payload += conversions.integer_to_bytearray(vDialyzerTypeRejectReason ) + payload += conversions.integer_to_bytearray(vBloodPressureMeasureIntervalRejectReason ) + payload += conversions.integer_to_bytearray(vRinsebackFlowRateRejectReason ) + payload += conversions.integer_to_bytearray(vRinsebackVolumeRejectReason ) + payload += conversions.integer_to_bytearray(vArterialPressureLimitWindowRejectReason ) + payload += conversions.integer_to_bytearray(vVenousPressureLimitWindowRejectReason ) + payload += conversions.integer_to_bytearray(vVenousPressureLimitAsymtrcRejectReason ) + payload += conversions.integer_to_bytearray(vTransmembranePressureLimitWindowRejectReason ) + payload += conversions.integer_to_bytearray(vDialysateTempRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinDispensingRateRejectReason ) + payload += conversions.integer_to_bytearray(vHeparinBolusVolumeRejectReason ) message = CAN.DenaliMessage.build_message( channel_id=CAN.DenaliChannels.td_to_ui_ch_id, Index: leahi_dialin/utils/base.py =================================================================== diff -u -r18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- leahi_dialin/utils/base.py (.../base.py) (revision 18c90a1b2b6c7339bdd192a2d2fac32f2b8a35df) +++ leahi_dialin/utils/base.py (.../base.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -315,3 +315,16 @@ def stop(self): self._timer.cancel() self.is_running = False + + +class InternalEvent: + def __init__(self): + self._listeners = [] + + def add_listener(self, func): + self._listeners.append(func) + return func + + def trigger(self, *args, **kwargs): + for func in self._listeners: + func(*args, **kwargs) Index: tests/data_capture_helpers/fp_helpers.py =================================================================== diff -u -r549db6a2f9c36fa5f714a92146b19ca81d6d1900 -r38e8dd31728056dbb7f9304c98ab16d7147b75a2 --- tests/data_capture_helpers/fp_helpers.py (.../fp_helpers.py) (revision 549db6a2f9c36fa5f714a92146b19ca81d6d1900) +++ tests/data_capture_helpers/fp_helpers.py (.../fp_helpers.py) (revision 38e8dd31728056dbb7f9304c98ab16d7147b75a2) @@ -7,10 +7,8 @@ from threading import Lock -from leahi_dialin import FP -from leahi_dialin.common.fp_defs import * -from leahi_dialin import DD -from leahi_dialin.dd.modules.valves import DDValves, DDValveNames +from leahi_dialin import FP, DD +from leahi_dialin.common import fp_enum_repository, dd_enum_repository excel.ExcelFormatter.header_style = None write_mutex = Lock() @@ -51,29 +49,25 @@ """ # only manage if we know that the pump is running while True: - if fp.levels.p25_level == FPFloaterLevels.LEVEL_STATE_HIGH.value: - if fp.valves.m4_valv != FPValveStates.VALVE_STATE_CLOSED.value: - fp.valves.cmd_valve_override(FPValveNames.M4_VALV.value, FPValveStates.VALVE_STATE_CLOSED.value) + if fp.levels.p25_level == fp_enum_repository.FPFloaterLevels.LEVEL_STATE_HIGH.value: + if fp.valves.m4_valv != fp_enum_repository.FPValveStates.VALVE_STATE_CLOSED.value: + fp.valves.cmd_valve_override(fp_enum_repository.fp_enum_repository.FPValveNames.M4_VALV.value, fp_enum_repository.FPValveStates.VALVE_STATE_CLOSED.value) - if fp.levels.p25_level == FPFloaterLevels.LEVEL_STATE_LOW.value: - if fp.valves.m4_valv != FPValveStates.VALVE_STATE_OPEN.value: - fp.valves.cmd_valve_override(FPValveNames.M4_VALV.value, FPValveStates.VALVE_STATE_OPEN.value) + if fp.levels.p25_level == fp_enum_repository.FPFloaterLevels.LEVEL_STATE_LOW.value: + if fp.valves.m4_valv != fp_enum_repository.FPValveStates.VALVE_STATE_OPEN.value: + fp.valves.cmd_valve_override(fp_enum_repository.fp_enum_repository.FPValveNames.M4_VALV.value, fp_enum_repository.FPValveStates.VALVE_STATE_OPEN.value) sleep(interval) def fp_pressure_recorder(fp:FP, interval: float = 1.0, log_path : str = "{}FP_test_pressures.log".format(DEFAULT_LOG_DIR)): while True: write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - press = "{}, ".format(FPPressureSensorNames.M1_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.M1_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.M3_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.M3_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.P8_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.P8_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.P13_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.P13_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.P17_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.P17_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.X1_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.X1_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.X2_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.X2_PRES.name]) + \ - ", {}, ".format(FPPressureSensorNames.X3_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.X3_PRES.name]) + \ - ", {} ,".format(FPPressureSensorNames.X4_PRES.name) + '{}'.format(fp.pressures.fp_pressures[FPPressureSensorNames.X4_PRES.name]) + \ + press = "{}, ".format(fp_enum_repository.FPPressureSensorNames.M1_PRES.name) + '{}'.format(fp.pressures.fp_pressures[fp_enum_repository.FPPressureSensorNames.M1_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPressureSensorNames.M3_PRES.name) + '{}'.format(fp.pressures.fp_pressures[fp_enum_repository.FPPressureSensorNames.M3_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPressureSensorNames.P8_PRES.name) + '{}'.format(fp.pressures.fp_pressures[fp_enum_repository.FPPressureSensorNames.P8_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPressureSensorNames.P13_PRES.name) + '{}'.format(fp.pressures.fp_pressures[fp_enum_repository.FPPressureSensorNames.P13_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPressureSensorNames.P17_PRES.name) + '{}'.format(fp.pressures.fp_pressures[fp_enum_repository.FPPressureSensorNames.P17_PRES.name]) + \ ", {}\n".format(fp.pressures.fp_pressure_timestamp) f.write(press) @@ -86,30 +80,23 @@ write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - temp = "{}, ".format(FPTemperaturesNames.P10_TEMP.name) + \ - '{},'.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P10_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.P19_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P19_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.M1_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.M1_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.M3_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.M3_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.P8_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P8_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.P13_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P13_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.X1_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.X1_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.X2_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.X2_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.X3_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.X3_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.X4_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.X4_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.P7_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P7_TEMP.name]) + \ - "{}, ".format(FPTemperaturesNames.P16_TEMP.name) + \ - '{}, '.format(fp.temperatures.fp_temperatures[FPTemperaturesNames.P16_TEMP.name]) + \ + temp = "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P10_TEMP.name) + \ + '{},'.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P10_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P19_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P19_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.M1_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.M1_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.M3_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.M3_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P8_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P8_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P13_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P13_TEMP.name]) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.X4_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P7_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P7_TEMP.name]) + \ + "{}, ".format(fp_enum_repository.FPTemperatureSensorNames.P16_TEMP.name) + \ + '{}, '.format(fp.temperatures.fp_temperatures[fp_enum_repository.FPTemperatureSensorNames.P16_TEMP.name]) + \ ", {}\n".format(fp.temperatures.fp_temperature_sensors_timestamp) f.write(temp) @@ -122,8 +109,8 @@ write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - level = "{}, ".format(FPFloaterLevelSensorNames.P25_LEVEL.name) + \ - '{}'.format(fp.levels.fp_levels[FPFloaterLevelSensorNames.P25_LEVEL.name]) + \ + level = "{}, ".format(fp_enum_repository.FPFloaterLevelSensorNames.P25_LEVEL.name) + \ + '{}'.format(fp.levels.fp_levels[fp_enum_repository.FPFloaterLevelSensorNames.P25_LEVEL.name]) + \ ", {}\n".format(fp.levels.fp_levels_timestamp) f.write(level) @@ -135,9 +122,9 @@ while True: write_mutex.acquire() with open(log_path, "a") as f: - # collect data and log it - flows = "{}, ".format(FPFlowSensorNames.P7_FLOW.name) + '{}'.format(fp.flows.fp_flows[FPFlowSensorNames.P7_FLOW.name]["FLOW"]) + \ - ", {}, ".format(FPFlowSensorNames.P16_FLOW.name) + '{}'.format(fp.flows.fp_flows[FPFlowSensorNames.P16_FLOW.name]['FLOW']) + \ + # collect data and log itfp_enum_repository.FPFlowSensorNames + flows = "{}, ".format(fp_enum_repository.FPFlowSensorNames.P7_FLOW.name) + '{}'.format(fp.flows.fp_flows[fp_enum_repository.FPFlowSensorNames.P7_FLOW.name]["FLOW"]) + \ + ", {}, ".format(fp_enum_repository.FPFlowSensorNames.P16_FLOW.name) + '{}'.format(fp.flows.fp_flows[fp_enum_repository.FPFlowSensorNames.P16_FLOW.name]['FLOW']) + \ ", {}\n".format(fp.flows.fp_flow_timestamp) f.write(flows) @@ -150,8 +137,8 @@ write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - cond = "{}, ".format(FPConductivitySensorsEnum.P9_COND.name) + '{}'.format(fp.conductivity.fp_conductivity['P9_COND']) + \ - ", {}, ".format(FPConductivitySensorsEnum.P18_COND.name) + '{}'.format(fp.conductivity.fp_conductivity['P18_COND']) + \ + cond = "{}, ".format(fp_enum_repository.FPConductivitySensorNames.P9_COND.name) + '{}'.format(fp.conductivity.fp_conductivity['P9_COND']) + \ + ", {}, ".format(fp_enum_repository.FPConductivitySensorNames.P18_COND.name) + '{}'.format(fp.conductivity.fp_conductivity['P18_COND']) + \ ", {}\n".format(fp.conductivity.fp_conductivity_timestamp) f.write(cond) @@ -166,16 +153,16 @@ # collect data and log it ddvalve = dd.valves.d3_valv.get("state", None) list_of_states = fp.valves.get_valve_states() - valves = "{}, ".format(FPValveNames.M4_VALV.name) + '{}'.format(list_of_states[0]) + \ - ", {}, ".format(FPValveNames.P39_VALV.name) + '{}'.format(list_of_states[1]) + \ - ", {}, ".format(FPValveNames.P6_VALV.name) + '{}'.format(list_of_states[2]) + \ - ", {}, ".format(FPValveNames.P11_VALV.name) + '{}'.format(list_of_states[3]) + \ - ", {}, ".format(FPValveNames.P33_VALV.name) + '{}'.format(list_of_states[4]) + \ - ", {}, ".format(FPValveNames.P34_VALV.name) + '{}'.format(list_of_states[5]) + \ - ", {}, ".format(FPValveNames.P37_VALV.name) + '{}'.format(list_of_states[6]) + \ - ", {}, ".format(FPValveNames.M7_VALV.name) + '{}'.format(list_of_states[7]) + \ - ", {}, ".format(FPValveNames.P20_VALV.name) + '{}'.format(list_of_states[8]) + \ - ", {}, ".format(DDValveNames.D3_VALV.name) + '{}'.format(ddvalve) + \ + valves = "{}, ".format(fp_enum_repository.FPValveNames.M4_VALV.name) + '{}'.format(list_of_states[0]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P39_VALV.name) + '{}'.format(list_of_states[1]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P6_VALV.name) + '{}'.format(list_of_states[2]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P11_VALV.name) + '{}'.format(list_of_states[3]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P33_VALV.name) + '{}'.format(list_of_states[4]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P34_VALV.name) + '{}'.format(list_of_states[5]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P37_VALV.name) + '{}'.format(list_of_states[6]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.M7_VALV.name) + '{}'.format(list_of_states[7]) + \ + ", {}, ".format(fp_enum_repository.FPValveNames.P20_VALV.name) + '{}'.format(list_of_states[8]) + \ + ", {}, ".format(dd_enum_repository.DDValveNames.D3_VALV.name) + '{}'.format(ddvalve) + \ ", {}\n".format(fp.valves.fp_valves_states_timestamp) f.write(valves) @@ -188,15 +175,15 @@ write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - ro = "{}, ".format(FPPumpAttributes.STATE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.STATE.name]) + \ - ", {}, ".format(FPPumpAttributes.DUTY_CYCLE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.DUTY_CYCLE.name]) + \ - ", {}, ".format(FPPumpAttributes.FB_DUTY_CYCLE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.FB_DUTY_CYCLE.name]) + \ - ", {}, ".format('Ctl_sig_out') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.SPEED.name]) + \ - ", {}, ".format('Ctl_sig_err') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.TARGET_PRES.name]) + \ - ", {}, ".format(FPPumpAttributes.TARGET_FLOW.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.TARGET_FLOW.name]) + \ - ", {}, ".format('Kp') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.TARGET_DUTY_CYCLE.name]) + \ - ", {}, ".format('Ki') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.DUTY_CYCLE_PCT.name]) + \ - ", {}, ".format('errsum') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][FPPumpAttributes.FB_DUTY_CYCLE_PCT.name]) + \ + ro = "{}, ".format(fp_enum_repository.FPPumpAttributes.STATE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.STATE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name]) + \ + ", {}, ".format('Ctl_sig_out') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.SPEED.name]) + \ + ", {}, ".format('Ctl_sig_err') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name) + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name]) + \ + ", {}, ".format('Kp') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_DUTY_CYCLE.name]) + \ + ", {}, ".format('Ki') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE_PCT.name]) + \ + ", {}, ".format('errsum') + '{}'.format(fp.ro_pump.ro_pump['P12_PUMP'][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE_PCT.name]) + \ ", {}\n".format(fp.ro_pump.ro_pump_timestamp) f.write(ro) @@ -209,15 +196,15 @@ write_mutex.acquire() with open(log_path, "a") as f: # collect data and log it - boost = "{}, ".format(FPPumpAttributes.STATE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.STATE.name]) + \ - ", {}, ".format(FPPumpAttributes.DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.DUTY_CYCLE.name]) + \ - ", {}, ".format(FPPumpAttributes.FB_DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.FB_DUTY_CYCLE.name]) + \ - ", {}, ".format(FPPumpAttributes.SPEED.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.SPEED.name]) + \ - ", {}, ".format(FPPumpAttributes.TARGET_PRES.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.TARGET_PRES.name]) + \ - ", {}, ".format(FPPumpAttributes.TARGET_FLOW.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.TARGET_FLOW.name]) + \ - ", {}, ".format(FPPumpAttributes.TARGET_DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.TARGET_DUTY_CYCLE.name]) + \ - ", {}, ".format(FPPumpAttributes.DUTY_CYCLE_PCT.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.DUTY_CYCLE_PCT.name]) + \ - ", {}, ".format(FPPumpAttributes.FB_DUTY_CYCLE_PCT.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][FPPumpAttributes.FB_DUTY_CYCLE_PCT.name]) + \ + boost = "{}, ".format(fp_enum_repository.FPPumpAttributes.STATE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.STATE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.SPEED.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.SPEED.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.TARGET_PRES.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_PRES.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_FLOW.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.TARGET_DUTY_CYCLE.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.TARGET_DUTY_CYCLE.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.DUTY_CYCLE_PCT.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.DUTY_CYCLE_PCT.name]) + \ + ", {}, ".format(fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE_PCT.name) + '{}'.format(fp.boost_pump.boost_pump['P40_PUMP'][fp_enum_repository.FPPumpAttributes.FB_DUTY_CYCLE_PCT.name]) + \ ", {}\n".format(fp.boost_pump.boost_pump_timestamp) f.write(boost)