Index: dialin/common/prs_defs.py =================================================================== diff -u -rf7da8175a08835a285b5a22ffb09346b25830ad8 -rb17d2a1969b535d66bf534556ac42fd2bb28fd1d --- dialin/common/prs_defs.py (.../prs_defs.py) (revision f7da8175a08835a285b5a22ffb09346b25830ad8) +++ dialin/common/prs_defs.py (.../prs_defs.py) (revision b17d2a1969b535d66bf534556ac42fd2bb28fd1d) @@ -7,10 +7,10 @@ # # @file prs_defs.py # -# @author (last) Behrouz NematiPour -# @date (last) 05-Nov-2020 -# @author (original) Behrouz NematiPour -# @date (original) 05-Nov-2020 +# @author (last) Behrouz NematiPour +# @date (last) 27-Apr-2021 +# @author (original) Behrouz NematiPour +# @date (original) 05-Nov-2020 # ############################################################################ class Ranges: @@ -57,3 +57,11 @@ ALARM_STATE_FLAG_BIT_POS_UNUSED_3 = 13 ALARM_STATE_FLAG_BIT_POS_UNUSED_4 = 14 ALARM_STATE_FLAG_BIT_POS_TOP_CONDITION = 15 + +class Alarm_Data_Types: + ALARM_DATA_TYPE_NONE = 0 # No data given. + ALARM_DATA_TYPE_U32 = 1 # Alarm data is unsigned 32-bit integer type. + ALARM_DATA_TYPE_S32 = 2 # Alarm data is signed 32-bit integer type. + ALARM_DATA_TYPE_F32 = 3 # Alarm data is 32-bit floating point type. + ALARM_DATA_TYPE_BOOL = 4 # Alarm data is 32-bit boolean type. + NUM_OF_ALARM_DATA_TYPES = 5 # Total number of alarm data types. Index: dialin/ui/hd_simulator_alarms.py =================================================================== diff -u -r0f311aec036eb4508cfa7dd4090c579101c348b1 -rb17d2a1969b535d66bf534556ac42fd2bb28fd1d --- dialin/ui/hd_simulator_alarms.py (.../hd_simulator_alarms.py) (revision 0f311aec036eb4508cfa7dd4090c579101c348b1) +++ dialin/ui/hd_simulator_alarms.py (.../hd_simulator_alarms.py) (revision b17d2a1969b535d66bf534556ac42fd2bb28fd1d) @@ -20,9 +20,10 @@ DenaliChannels) from logging import Logger from ..utils.base import _AbstractSubSystem -from ..utils.conversions import integer_to_bytearray, integer_to_bit_array +from ..utils.conversions import integer_to_bytearray, integer_to_bit_array, float_to_bytearray from ..common.msg_defs import MsgIds, MsgFieldPositions from ..common.alarm_defs import AlarmList +from dialin.common.prs_defs import Alarm_Data_Types HIGH = 3 MED = 2 @@ -311,7 +312,8 @@ self.can_interface.send(message, 0) - def cmd_set_alarm_triggered(self, alarm_id): + def cmd_set_alarm_triggered(self, alarm_id,field_descriptor_1: int, data_field_1: str, + field_descriptor_2: int, data_field_2: str) -> None: """ Triggers an alarm. @@ -322,7 +324,30 @@ @param alarm_id: int, the alarm id to trigger @return: None """ + zero = integer_to_bytearray(0) payload = integer_to_bytearray(alarm_id) + if (field_descriptor_1 == Alarm_Data_Types.ALARM_DATA_TYPE_NONE): + payload += zero + payload += zero + payload += zero + payload += zero + else: + if (field_descriptor_1 == Alarm_Data_Types.ALARM_DATA_TYPE_F32): + payload += integer_to_bytearray(field_descriptor_1) + payload += float_to_bytearray(float(data_field_1)) + else: # BOOL, S32, U32 + payload += integer_to_bytearray(field_descriptor_1) + payload += integer_to_bytearray(int(data_field_1)) + if (field_descriptor_2 == Alarm_Data_Types.ALARM_DATA_TYPE_NONE): + payload += zero + payload += zero + else: + if (field_descriptor_2 == Alarm_Data_Types.ALARM_DATA_TYPE_F32): + payload += integer_to_bytearray(field_descriptor_2) + payload += float_to_bytearray(float(data_field_2)) + else: # BOOL, S32, U32 + payload += integer_to_bytearray(field_descriptor_2) + payload += integer_to_bytearray(int(data_field_2)) message = DenaliMessage.build_message(channel_id=DenaliChannels.hd_alarm_broadcast_ch_id, message_id=MsgIds.MSG_ID_ALARM_TRIGGERED.value, Index: dialin/utils/conversions.py =================================================================== diff -u -r96006d22aa13f0287e2697a7cac7604201633263 -rb17d2a1969b535d66bf534556ac42fd2bb28fd1d --- dialin/utils/conversions.py (.../conversions.py) (revision 96006d22aa13f0287e2697a7cac7604201633263) +++ dialin/utils/conversions.py (.../conversions.py) (revision b17d2a1969b535d66bf534556ac42fd2bb28fd1d) @@ -46,6 +46,15 @@ return struct.pack("