summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2019-06-14 19:31:30 +0200
committerHarald Welte <laforge@gnumonks.org>2019-07-20 12:11:28 +0200
commit3f27f71b5f510b98a285d55fbd86939e218a0fdd (patch)
treecbd503dd358911aa295abf52c396c7b573ab04cd
parentf72155a3a42d74a0367ecde504ff394ad22374de (diff)
Add Cell Broadcast related definitions from 3GPP TS 23.041
Change-Id: I1e2c62cb9047648907c91b99f764f6caba8f4493
-rw-r--r--include/Makefile.am1
-rw-r--r--include/osmocom/gsm/protocol/gsm_23_041.h89
2 files changed, 90 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 7835fab8..a82d6ac4 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -123,6 +123,7 @@ nobase_include_HEADERS = \
osmocom/gsm/protocol/gsm_09_02.h \
osmocom/gsm/protocol/gsm_12_21.h \
osmocom/gsm/protocol/gsm_23_003.h \
+ osmocom/gsm/protocol/gsm_23_041.h \
osmocom/gsm/protocol/gsm_29_118.h \
osmocom/gsm/protocol/gsm_44_318.h \
osmocom/gsm/protocol/gsm_48_049.h \
diff --git a/include/osmocom/gsm/protocol/gsm_23_041.h b/include/osmocom/gsm/protocol/gsm_23_041.h
new file mode 100644
index 00000000..c75c0883
--- /dev/null
+++ b/include/osmocom/gsm/protocol/gsm_23_041.h
@@ -0,0 +1,89 @@
+#pragma once
+
+/* 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;
+#else
+ 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));