Harald Welte | 3f27f71 | 2019-06-14 19:31:30 +0200 | [diff] [blame] | 1 | #pragma once |
| 2 | |
Neels Hofmeyr | 12f109b | 2020-05-14 17:28:57 +0200 | [diff] [blame] | 3 | #include <osmocom/core/endian.h> |
| 4 | |
Harald Welte | 3f27f71 | 2019-06-14 19:31:30 +0200 | [diff] [blame] | 5 | /* Section 9.4.1.2: GSM Message Format */ |
| 6 | struct gsm23041_msg_param_gsm { |
| 7 | uint16_t serial_nr; |
| 8 | uint16_t message_id; |
| 9 | uint8_t dcs; |
| 10 | struct { |
| 11 | #if OSMO_IS_LITTLE_ENDIAN |
| 12 | uint8_t num_pages:4, |
| 13 | page_nr:4; |
Neels Hofmeyr | 534f0f4 | 2020-05-14 17:28:39 +0200 | [diff] [blame] | 14 | #elif OSMO_IS_BIG_ENDIAN |
| 15 | /* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */ |
| 16 | uint8_t page_nr:4, num_pages:4; |
Harald Welte | 3f27f71 | 2019-06-14 19:31:30 +0200 | [diff] [blame] | 17 | #endif |
| 18 | } page_param; |
| 19 | uint8_t content[0]; |
| 20 | } __attribute__ ((packed)); |
| 21 | |
| 22 | /* Section 9.4.1.2.2 Message Identifier */ |
| 23 | enum { |
| 24 | /* 0 - 999: Allocated by GSM AD.26 */ |
| 25 | CBS_MSGID_LCS_EOTD_ASSIST = 1000, |
| 26 | CBS_MSGID_LCS_DGPS_CORRECTION = 1001, |
| 27 | CBS_MSGID_LCS_GPS_EPHEM_CLOCK = 1002, |
| 28 | CBS_MSGID_LCS_GPS_ALMANAC_OTHER = 1003, |
| 29 | /* 1004 - 4095: RFU */ |
| 30 | /* 4096 - 4223: clear text SIM data download */ |
| 31 | /* 4224 - 4351: secured SIM data download */ |
| 32 | CBS_MSGID_ETWS_EARTHQUAKE = 4352, |
| 33 | CBS_MSGID_ETWS_TSUNAMI = 4353, |
| 34 | CBS_MSGID_ETWS_EARTHQUAKE_TSUNAMI = 4354, |
| 35 | CBS_MSGID_ETWS_TEST = 4355, |
| 36 | CBS_MSGID_ETWS_OTHER = 4356, |
| 37 | /* 4357 - 4359: ETWS RFU */ |
| 38 | /* 4360 - 4369: RFU */ |
| 39 | CBS_MSGID_CMAS_PRESIDENTIAL = 4370, |
| 40 | CBS_MSGID_CMAS_EXTREME_IMMEDIATE_OBSERVED = 4371, |
| 41 | CBS_MSGID_CMAS_EXTREME_IMMEDIATE_LIKELY = 4372, |
| 42 | CBS_MSGID_CMAS_EXTREME_EXPECTED_OBSERVED = 4373, |
| 43 | CBS_MSGID_CMAS_EXTREME_EXPECTED_LIKELY = 4374, |
| 44 | CBS_MSGID_CMAS_SEVERE_IMMEDIATE_OBSERVED = 4375, |
| 45 | CBS_MSGID_CMAS_SEVERE_IMMEDIATE_LIKELY = 4376, |
| 46 | CBS_MSGID_CMAS_SEVERE_EXPECTED_OBSERVED = 4377, |
| 47 | CBS_MSGID_CMAS_SEVERE_EXPECTED_LIKELY = 4378, |
| 48 | CBS_MSGID_CMAS_AMBER = 4379, |
| 49 | CBS_MSGID_CMAS_MONTHLY_TEST = 4380, |
| 50 | CBS_MSGID_CMAS_EXERCISE = 4381, |
| 51 | CBS_MSGID_CMAS_OPERATOR_DEFINED = 4382, |
| 52 | CBS_MSGID_CMAS_PRESIDENTIAL_ADDL = 4383, |
| 53 | CBS_MSGID_CMAS_EXTREME_IMMEDIATE_OBSERVED_ADDL = 4384, |
| 54 | CBS_MSGID_CMAS_EXTREME_IMMEDIATE_LIKELY_ADDL = 4385, |
| 55 | CBS_MSGID_CMAS_EXTREME_EXPECTED_OBSERVED_ADDL = 4386, |
| 56 | CBS_MSGID_CMAS_EXTREME_EXPECTED_LIKELY_ADDL = 4387, |
| 57 | CBS_MSGID_CMAS_SEVERE_IMMEDIATE_OBSERVED_ADDL = 4388, |
| 58 | CBS_MSGID_CMAS_SEVERE_IMMEDIATE_LIKELY_ADDL = 4389, |
| 59 | CBS_MSGID_CMAS_SEVERE_EXPECTED_OBSERVED_ADDL = 4390, |
| 60 | CBS_MSGID_CMAS_SEVERE_EXPECTED_LIKELY_ADDL = 4391, |
| 61 | CBS_MSGID_CMAS_AMBER_ADDL = 4392, |
| 62 | CBS_MSGID_CMAS_MONTHLY_TEST_ADDL = 4393, |
| 63 | CBS_MSGID_CMAS_EXERCISE_ADDL = 4394, |
| 64 | CBS_MSGID_CMAS_OPERATOR_DEFINED_ADDL = 4395, |
| 65 | /* 4396 - 4399: RFU CMAS / EU-Alert */ |
| 66 | /* 4400 - 6399: RFU PWS */ |
| 67 | CBS_MSGID_EU_INFO_LOCAL_LANG = 6400, |
| 68 | /* 6491 - 40959: RFU */ |
| 69 | /* 40960 - 45055: PLMN operator specific range */ |
| 70 | /* 45056 - 61439: PLMN operator specific range RFU */ |
| 71 | /* 61440 - 65534: PLMN operator specific range */ |
| 72 | CBS_MSGID_RESERVED = 65535 |
| 73 | }; |
| 74 | |
| 75 | /* Section 9.4.1.3.2 ETWS Primary Notification Message Parameter */ |
| 76 | struct gsm23041_etws_primary_gsm { |
| 77 | uint16_t serial_nr; |
| 78 | uint16_t message_id; |
| 79 | uint16_t warning_type; |
| 80 | uint8_t warning_sec_info[50]; |
| 81 | } __attribute__ ((packed)); |
| 82 | |
| 83 | |
| 84 | /* Section 9.4.2.2 UMTS Message Parameter */ |
| 85 | struct gsm23041_msg_param_umts { |
| 86 | uint8_t msg_type; /* as per TS 25.324 */ |
| 87 | uint16_t message_id; |
| 88 | uint16_t serial_nr; |
| 89 | uint8_t dcs; |
| 90 | uint8_t content[0]; |
| 91 | } __attribute__ ((packed)); |