#pragma once #include /* Section 9.3.24: Warning-Type */ enum gsm23041_warning_type_value { CBS_ETWS_WARN_TYPE_EARTHQUAKE = 0, CBS_ETWS_WARN_TYPE_TSUNAMI = 1, CBS_ETWS_WARN_TYPE_EARTHQUAKE_AND_TSUNAMI = 2, CBS_ETWS_WARN_TYPE_TEST = 3, CBS_ETWS_WARN_TYPE_OTHER = 4, /* 0000101-1111111 Reserved for future use */ }; /* Section 9.4.1.2: GSM Message Format */ struct gsm23041_msg_param_gsm { uint16_t serial_nr; uint16_t message_id; uint8_t dcs; struct { #if OSMO_IS_LITTLE_ENDIAN uint8_t num_pages:4, page_nr:4; #elif OSMO_IS_BIG_ENDIAN /* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */ uint8_t page_nr:4, num_pages:4; #endif } page_param; uint8_t content[0]; } __attribute__ ((packed)); /* Section 9.4.1.2.2 Message Identifier */ enum { /* 0 - 999: Allocated by GSM AD.26 */ CBS_MSGID_LCS_EOTD_ASSIST = 1000, CBS_MSGID_LCS_DGPS_CORRECTION = 1001, CBS_MSGID_LCS_GPS_EPHEM_CLOCK = 1002, CBS_MSGID_LCS_GPS_ALMANAC_OTHER = 1003, /* 1004 - 4095: RFU */ /* 4096 - 4223: clear text SIM data download */ /* 4224 - 4351: secured SIM data download */ CBS_MSGID_ETWS_EARTHQUAKE = 4352, CBS_MSGID_ETWS_TSUNAMI = 4353, CBS_MSGID_ETWS_EARTHQUAKE_TSUNAMI = 4354, CBS_MSGID_ETWS_TEST = 4355, CBS_MSGID_ETWS_OTHER = 4356, /* 4357 - 4359: ETWS RFU */ /* 4360 - 4369: RFU */ CBS_MSGID_CMAS_PRESIDENTIAL = 4370, CBS_MSGID_CMAS_EXTREME_IMMEDIATE_OBSERVED = 4371, CBS_MSGID_CMAS_EXTREME_IMMEDIATE_LIKELY = 4372, CBS_MSGID_CMAS_EXTREME_EXPECTED_OBSERVED = 4373, CBS_MSGID_CMAS_EXTREME_EXPECTED_LIKELY = 4374, CBS_MSGID_CMAS_SEVERE_IMMEDIATE_OBSERVED = 4375, CBS_MSGID_CMAS_SEVERE_IMMEDIATE_LIKELY = 4376, CBS_MSGID_CMAS_SEVERE_EXPECTED_OBSERVED = 4377, CBS_MSGID_CMAS_SEVERE_EXPECTED_LIKELY = 4378, CBS_MSGID_CMAS_AMBER = 4379, CBS_MSGID_CMAS_MONTHLY_TEST = 4380, CBS_MSGID_CMAS_EXERCISE = 4381, CBS_MSGID_CMAS_OPERATOR_DEFINED = 4382, CBS_MSGID_CMAS_PRESIDENTIAL_ADDL = 4383, CBS_MSGID_CMAS_EXTREME_IMMEDIATE_OBSERVED_ADDL = 4384, CBS_MSGID_CMAS_EXTREME_IMMEDIATE_LIKELY_ADDL = 4385, CBS_MSGID_CMAS_EXTREME_EXPECTED_OBSERVED_ADDL = 4386, CBS_MSGID_CMAS_EXTREME_EXPECTED_LIKELY_ADDL = 4387, CBS_MSGID_CMAS_SEVERE_IMMEDIATE_OBSERVED_ADDL = 4388, CBS_MSGID_CMAS_SEVERE_IMMEDIATE_LIKELY_ADDL = 4389, CBS_MSGID_CMAS_SEVERE_EXPECTED_OBSERVED_ADDL = 4390, CBS_MSGID_CMAS_SEVERE_EXPECTED_LIKELY_ADDL = 4391, CBS_MSGID_CMAS_AMBER_ADDL = 4392, CBS_MSGID_CMAS_MONTHLY_TEST_ADDL = 4393, CBS_MSGID_CMAS_EXERCISE_ADDL = 4394, CBS_MSGID_CMAS_OPERATOR_DEFINED_ADDL = 4395, /* 4396 - 4399: RFU CMAS / EU-Alert */ /* 4400 - 6399: RFU PWS */ CBS_MSGID_EU_INFO_LOCAL_LANG = 6400, /* 6491 - 40959: RFU */ /* 40960 - 45055: PLMN operator specific range */ /* 45056 - 61439: PLMN operator specific range RFU */ /* 61440 - 65534: PLMN operator specific range */ CBS_MSGID_RESERVED = 65535 }; /* Section 9.4.1.3.2 ETWS Primary Notification Message Parameter */ struct gsm23041_etws_primary_gsm { uint16_t serial_nr; uint16_t message_id; uint16_t warning_type; uint8_t warning_sec_info[50]; } __attribute__ ((packed)); /* Section 9.4.2.2 UMTS Message Parameter */ struct gsm23041_msg_param_umts { uint8_t msg_type; /* as per TS 25.324 */ uint16_t message_id; uint16_t serial_nr; uint8_t dcs; uint8_t content[0]; } __attribute__ ((packed));