Index: leahi_dialin/common/msg_ids.py =================================================================== diff -u -r69db0a9ed734905964a1e79bf80ff3723b7cf509 -rfa670938681e25a1314c56aafc630e9dc2f13a4a --- leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision 69db0a9ed734905964a1e79bf80ff3723b7cf509) +++ leahi_dialin/common/msg_ids.py (.../msg_ids.py) (revision fa670938681e25a1314c56aafc630e9dc2f13a4a) @@ -286,6 +286,8 @@ MSG_ID_TD_SYRINGE_PUMP_ADC_READ_COUNTER_OVERRIDE_REQUEST = 0x8058 MSG_ID_TD_HEPARIN_BOLUS_TARGET_RATE_OVERRIDE_REQUEST = 0x8059 MSG_ID_TD_SYRINGE_PUMP_FORCE_SENSOR_CALIBRATION_REQUEST = 0x8060 + MSG_ID_TD_GET_ALARM_PROPERTIES_REQUEST = 0x8061 + MSG_ID_TD_ALARM_PROPERTIES_RESPONSE = 0x8062 MSG_ID_TD_TRAINING_TEST_OVERRIDE_REQUEST = 0x8999 Index: leahi_dialin/td/modules/alarms.py =================================================================== diff -u -r1f2bf6d939eb4033dbedb7d7005494cc12fccbc6 -rfa670938681e25a1314c56aafc630e9dc2f13a4a --- leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision 1f2bf6d939eb4033dbedb7d7005494cc12fccbc6) +++ leahi_dialin/td/modules/alarms.py (.../alarms.py) (revision fa670938681e25a1314c56aafc630e9dc2f13a4a) @@ -633,3 +633,50 @@ override_text = f'{str(current)} mA', logger = self.logger, can_interface = self.can_interface) + + + def cmd_request_alarm_table(self) -> int: + """ + Constructs and sends the Alarm details request for selected alarm. + Constraints: + Must be logged into TD. + + @param alarm_id: (Integer) The Alarm's ID + @return: 1 if successful, zero otherwise + """ + response = 1 + for alarm_enum in AlarmList: + retry = 3 + attempt = 0 + while attempt < retry: + resp = self.cmd_request_alarm_details_for_id(alarm_enum.value) + if resp == 1: + attempt += retry + attempt += 1 + # If at least one request didn't go through, set sent response to 0 + if retry < attempt: + response = 0 + return response + + + + def cmd_request_alarm_details_for_id(self, alarm_id: int) -> int: + """ + Constructs and sends the Alarm details request for selected alarm. + Constraints: + Must be logged into TD. + + @param alarm_id: (Integer) The Alarm's ID + @return: 1 if successful, zero otherwise + """ + payload = integer_to_bytearray(alarm_id) + + return cmd_generic_override( + payload = payload, + reset = None, + channel_id = CanChannels.dialin_to_td_ch_id, + msg_id = MsgIds.MSG_ID_TD_GET_ALARM_PROPERTIES_REQUEST, + entity_name = f'TD Alarms Details for {AlarmList(alarm_id)} ({alarm_id})', + override_text = f'requested', + logger = self.logger, + can_interface = self.can_interface)