///|
/// Frame ID for high-priority alarms (0xFC01).
pub let frame_id_alarm_high : Int = 0xFC01

///|
/// Frame ID for low-priority alarms (0xFE01).
pub let frame_id_alarm_low : Int = 0xFE01

///|
/// AlarmCR block type in connect request (0x0103 = 259).
pub let block_type_alarm_cr_req : Int = 259

///|
/// AlarmCR block type in connect response (0x8103 = 33027).
pub let block_type_alarm_cr_res : Int = 33027

///|
/// Default LT (EtherType) for alarm frames.
pub let alarm_lt : Int = 0x8892

///|
/// Default RTA timeout factor.
pub let default_rta_timeout_factor : Int = 1

///|
/// Default RTA retries.
pub let default_rta_retries : Int = 3

///|
/// Default maximum alarm data length.
pub let default_max_alarm_data_length : Int = 200

///|
/// Default AlarmCR tag header high (0xC000).
pub let default_alarm_cr_tag_header_high : Int = 0xC000

///|
/// Default AlarmCR tag header low (0xA000).
pub let default_alarm_cr_tag_header_low : Int = 0xA000

///|
/// RTA PDU version 1 encoded in the high nibble of PDUType.
pub let rta_pdu_version_1 : Int = 1

///|
/// RTA PDU type values encoded in the low nibble of PDUType.
pub let rta_pdu_type_data : Int = 1

///|
pub let rta_pdu_type_nack : Int = 2

///|
pub let rta_pdu_type_ack : Int = 3

///|
pub let rta_pdu_type_err : Int = 4

///|
pub let alarm_pdu_type_data : Byte = b'\x11'

///|
pub let alarm_pdu_type_ack : Byte = b'\x13'

///|
pub let alarm_pdu_type_err : Byte = b'\x14'

///|
/// Alarm types (AlarmSpecifier high nibble).
pub let alarm_type_diagnosis : Int = 1

///|
pub let alarm_type_process : Int = 2

///|
pub let alarm_type_pull : Int = 3

///|
pub let alarm_type_plug : Int = 4

///|
pub let alarm_type_status : Int = 5

///|
pub let alarm_type_update : Int = 6

///|
pub let alarm_type_redundancy : Int = 7

///|
pub let alarm_type_controlled_by_supervisor : Int = 8

///|
pub let alarm_type_released : Int = 9

///|
pub let alarm_type_plug_wrong : Int = 10

///|
pub let alarm_type_return_of_submodule : Int = 11

///|
pub fn alarm_type_label(alarm_type : Int) -> String {
  match alarm_type {
    1 => "Diagnosis"
    2 => "Process"
    3 => "Pull"
    4 => "Plug"
    5 => "Status"
    6 => "Update"
    7 => "Redundancy"
    8 => "ControlledBySupervisor"
    9 => "Released"
    10 => "PlugWrong"
    11 => "ReturnOfSubmodule"
    _ => "Unknown(" + alarm_type.to_string() + ")"
  }
}