Index: leahi_dialin/td/modules/events.py =================================================================== diff -u -r2cd5cb76b0c2045695d9a890e5489fb50e6dba89 -r37b10a13237bfde8838547a83f8dcc3f8818bf0d --- leahi_dialin/td/modules/events.py (.../events.py) (revision 2cd5cb76b0c2045695d9a890e5489fb50e6dba89) +++ leahi_dialin/td/modules/events.py (.../events.py) (revision 37b10a13237bfde8838547a83f8dcc3f8818bf0d) @@ -61,9 +61,7 @@ td_enum_repository.TDOpModes.MODE_NLEG.name: td_enum_repository.TDNotLegalStates } # Dictionary of the sub-mode as key and the state enum class as the value - self._sub_mode_2_states = {td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_WATER_SAMPLE_STATE.name: td_enum_repository.TDPreTreaSampleWaterStates, - td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_NO_CART_STATE.name: td_enum_repository.TDPreTreaNoCartSelfTestStates, - td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_DRY_STATE.name: td_enum_repository.TDPreTreaDrySelfTestStates, + self._sub_mode_2_states = {td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_SELF_TEST_DRY_STATE.name: td_enum_repository.TDPreTreaDrySelfTestStates, td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_PRIME_STATE.name: td_enum_repository.TDPreTreaPrimeStates, td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_RECIRCULATE_STATE.name: td_enum_repository.TDPreTreaRecircStates, td_enum_repository.TDPreTreatmentModesStates.TD_PRE_TREATMENT_PATIENT_CONNECTION_STATE.name: td_enum_repository.TDPreTreaPatientConnectStates, @@ -115,25 +113,29 @@ msg_list = [] msg_list.append((event_id, DataTypes.U32)) - if event_enum is td_enum_repository.TDEventList.TD_EVENT_OPERATION_STATUS: - msg_list.append((data_typ_1, DataTypes.U32)) # It's not used in operation status case - msg_list.append((op_mode, DataTypes.U08)) - msg_list.append((sub_mode, DataTypes.U08)) - msg_list.append((state, DataTypes.U08)) - msg_list.append((sub_state, DataTypes.U08)) - msg_list.append((data_typ_2, DataTypes.U32)) - msg_list.append((data_2, 'data_typ_2')) - else: - msg_list.append((data_typ_1, DataTypes.U32)) - msg_list.append((data_1, 'data_typ_1')) - msg_list.append((data_typ_2, DataTypes.U32)) - msg_list.append((data_2, 'data_typ_2')) self.process_into_vars(decoder_list = msg_list, message = message) # Convert the event ID to enum event_enum = td_enum_repository.TDEventList(event_id.value) + msg_list_2 = [] + if event_enum is td_enum_repository.TDEventList.TD_EVENT_OPERATION_STATUS: + msg_list_2.append((data_typ_1, DataTypes.U32)) # It's not used in operation status case + msg_list_2.append((op_mode, DataTypes.U08)) + msg_list_2.append((sub_mode, DataTypes.U08)) + msg_list_2.append((state, DataTypes.U08)) + msg_list_2.append((sub_state, DataTypes.U08)) + msg_list_2.append((data_typ_2, DataTypes.U32)) + msg_list_2.append((data_2, 'data_typ_2')) + else: + msg_list_2.append((data_typ_1, DataTypes.U32)) + msg_list_2.append((data_1, 'data_typ_1')) + msg_list_2.append((data_typ_2, DataTypes.U32)) + msg_list_2.append((data_2, 'data_typ_2')) + + self.process_into_vars(decoder_list = msg_list_2, message = message, start_from_byte = DataTypes.U32.size()) + # Get the current timestamp and create a tuple of the current events current_timestamp = datetime.now().astimezone().strftime('%Y-%m-%d %H:%M:%S.%f') event_tuple = (current_timestamp, event_enum.name, data_1.value, data_2.value) @@ -229,7 +231,7 @@ event_tuple = (current_timestamp, event_enum.name, data_1.value, data_2.value) elif event_enum is td_enum_repository.TDEventList.TD_EVENT_OPERATION_STATUS: - op_mode_enum, sub_mode_enum, state_enum, _ = self._operation_status_match(op_mode=op_mode, sub_mode=sub_mode, state=sub_state) + op_mode_enum, sub_mode_enum, state_enum, _ = self._operation_status_match(op_mode=op_mode.value, sub_mode=sub_mode.value, state=sub_state.value) event_tuple = (current_timestamp, op_mode_enum, sub_mode_enum, state_enum) # Update event dictionary @@ -308,24 +310,37 @@ :param sub_state: (Integer) The operation sub state value :return: Returns the DialinEnum for each provied mode/state, or the original integer value if no enum is found """ + print(f'\nDebug op_mode: {op_mode}') op_mode_enum = td_enum_repository.TDOpModes(op_mode) + print(f'Debug op_mode_enum: {op_mode_enum}') sub_mode_enum = None state_enum = None sub_state_enum = None if sub_mode is not None: + print(f'Debug sub_mode: {sub_mode}') if op_mode_enum.name not in self._op_mode_2_sub_mode: + print('No action') sub_mode_enum = sub_mode else: sub_mode_enum = self._op_mode_2_sub_mode[op_mode_enum.name](sub_mode) + print(f'Debug sub_mode_enum: {sub_mode_enum}') if state is not None: - if sub_mode_enum.name not in self._sub_mode_2_states: + print(f'Debug state: {state}') + if sub_mode_enum.name not in self._sub_mode_2_states or len(self._sub_mode_2_states[sub_mode_enum.name]) < state: + print('No action') state_enum = state else: + print(len(self._sub_mode_2_states[sub_mode_enum.name])) + print(len(self._sub_mode_2_states[sub_mode_enum.name]) < state) state_enum = self._sub_mode_2_states[sub_mode_enum.name](state) + print(f'Debug state_enum: {state_enum}') if sub_state is not None: + print(f'Debug sub_state: {sub_state}') if state_enum.name not in self._state_2_sub_states: + print('No action') sub_state_enum = sub_state else: sub_state_enum = self._state_2_sub_states[state_enum.name](sub_state) + print(f'Debug sub_state_enum: {sub_state_enum}') return op_mode_enum, sub_mode_enum, state_enum, sub_state_enum Index: leahi_dialin/td/modules/syringe_pump.py =================================================================== diff -u -r862daa5b6357ddaba02aa7d1fb9d0952e4a16e6f -r37b10a13237bfde8838547a83f8dcc3f8818bf0d --- leahi_dialin/td/modules/syringe_pump.py (.../syringe_pump.py) (revision 862daa5b6357ddaba02aa7d1fb9d0952e4a16e6f) +++ leahi_dialin/td/modules/syringe_pump.py (.../syringe_pump.py) (revision 37b10a13237bfde8838547a83f8dcc3f8818bf0d) @@ -285,7 +285,7 @@ # ============================================================ Overrides and Requests ============================================================ - def cmd_syringe_pump_operation(self, operation: int = TDSyringePumpStates.SYRINGE_PUMP_OP_STOP.value, + def cmd_syringe_pump_operation(self, operation: int = TDSyringePumpStates.STOP.value, rate: float = 0.0, volume: float = 0.0) -> int: """ Index: leahi_dialin/td/proxies/ui_proxy.py =================================================================== diff -u -rf6b3070973f4211a2b3330426ffecc49055fd43a -r37b10a13237bfde8838547a83f8dcc3f8818bf0d --- leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision f6b3070973f4211a2b3330426ffecc49055fd43a) +++ leahi_dialin/td/proxies/ui_proxy.py (.../ui_proxy.py) (revision 37b10a13237bfde8838547a83f8dcc3f8818bf0d) @@ -441,15 +441,15 @@ can_interface = self.can_interface) - def cmd_send_ui_initiate_treatment(self, accepted:int = ACCEPTED ) -> None: + def cmd_send_ui_initiate_treatment(self, modularity: int, accepted:int = ACCEPTED ) -> None: """ Constructs and sends a UI initiate treatment message. :param accepted: (int) the acceptance value :return: none """ - acc = integer_to_bytearray(accepted) - payload = acc + payload = integer_to_bytearray(accepted) + payload += integer_to_bytearray(modularity) cmd_generic_override(payload = payload, reset = None, @@ -616,7 +616,8 @@ cmd_generic_override(payload = None, reset = None, channel_id = CanChannels.ui_to_td_ch_id, - msg_id = MsgIds.MSG_ID_UI_SETUP_TUBING_SET_CONNECTIONS_CONFIRM_REQUEST, + # msg_id = MsgIds.MSG_ID_UI_SETUP_TUBING_SET_CONNECTIONS_CONFIRM_REQUEST, + msg_id = MsgIds.MSG_ID_UI_SETUP_CONNECTION_CONFIRM_REQUEST, entity_name = 'UI Confirm Patient Connected request', override_text = 'N/A', logger = self.logger,