Index: dialin/hd/ui_proxy.py =================================================================== diff -u -r3168721bb8dc03f810032b638d2642e90db6d153 -rffca09f0cf9fc24662f5209c7f3c65dedf74b650 --- dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision 3168721bb8dc03f810032b638d2642e90db6d153) +++ dialin/hd/ui_proxy.py (.../ui_proxy.py) (revision ffca09f0cf9fc24662f5209c7f3c65dedf74b650) @@ -1890,4 +1890,40 @@ return received_message['message'][DenaliMessage.PAYLOAD_START_INDEX] else: self.logger.debug("Timeout!!!!") + return False + + def cmd_ui_send_alarm_triggered_message(self, alarm_id: int, data_field1: int = 0, data_field2: int = 0) -> int: + """ + Constructs and sends an alarm triggered message to the HD. Used for UI POST failures. + Data fields are restricted to unsigned integer type. Defaulted to 0. + + @param alarm_id: (int) the alarm id from the ui to trigger + @param data_field1: (int) data value for data field 1 + @param data_field2: (int) data value for data field 2 + @return: 1 if successful, zero otherwise + """ + + field_type_uint = 1 + + alarm = integer_to_bytearray(alarm_id) + data_type1 = integer_to_bytearray(field_type_uint) + dat1 = integer_to_bytearray(data_field1) + data_type2 = integer_to_bytearray(field_type_uint) + dat2 = integer_to_bytearray(data_field2) + + payload = alarm + data_type1 + dat1 + data_type2 + dat2 + message = DenaliMessage.build_message(channel_id=DenaliChannels.ui_to_hd_ch_id, + message_id=MsgIds.MSG_ID_ALARM_TRIGGERED.value, + payload=payload) + + self.logger.debug("Sending UI alarm triggered message") + + received_message = self.can_interface.send(message) + + # If there is content... + if received_message is not None: + # 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