libosmogsm 1.13.1.1-afb4 Osmocom GSM library

gsm_03_41.h
Go to the documentation of this file.
1
4#pragma once
5
6#include <stdint.h>
7
8#include <osmocom/core/endian.h>
9#include <osmocom/gsm/protocol/gsm_04_12.h>
10
11#ifndef OSMO_IS_LITTLE_ENDIAN
12 #define OSMO_IS_LITTLE_ENDIAN 0
13#endif
14
15#define GSM341_MAX_PAYLOAD (GSM412_MSG_LEN-sizeof(struct gsm341_ms_message))
16#define GSM341_MAX_CHARS (GSM341_MAX_PAYLOAD*8/7)
17#define GSM341_7BIT_PADDING '\r'
18
19/* Chapter 9.3.2 */
20 struct gsm341_ms_message {
21 struct {
22#if OSMO_IS_LITTLE_ENDIAN
23 uint8_t code_hi:6;
24 uint8_t gs:2;
25 uint8_t update:4;
26 uint8_t code_lo:4;
27#elif OSMO_IS_BIG_ENDIAN
28/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */
29 uint8_t gs:2, code_hi:6;
30 uint8_t code_lo:4, update:4;
31#endif
32 } serial;
33 uint16_t msg_id;
34 struct {
35#if OSMO_IS_LITTLE_ENDIAN
36 uint8_t language:4;
37 uint8_t group:4;
38#elif OSMO_IS_BIG_ENDIAN
39/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */
40 uint8_t group:4, language:4;
41#endif
42 } dcs;
43 struct {
44#if OSMO_IS_LITTLE_ENDIAN
45 uint8_t total:4;
46 uint8_t current:4;
47#elif OSMO_IS_BIG_ENDIAN
48/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */
49 uint8_t current:4, total:4;
50#endif
51 } page;
52 uint8_t data[0];
53} __attribute__((packed));
54
55/* Chapter 9.4.1.3 */
56 struct gsm341_etws_message {
57 struct {
58#if OSMO_IS_LITTLE_ENDIAN
59 uint8_t code_hi:4;
60 uint8_t popup:1;
61 uint8_t alert:1;
62 uint8_t gs:2;
63 uint8_t update:4;
64 uint8_t code_lo:4;
65#elif OSMO_IS_BIG_ENDIAN
66/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianness.py) */
67 uint8_t gs:2, alert:1, popup:1, code_hi:4;
68 uint8_t code_lo:4, update:4;
69#endif
70 } serial;
71 uint16_t msg_id;
72 uint16_t warning_type;
73 uint8_t data[0];
74} __attribute__((packed));
75
76#define GSM341_MSG_CODE(ms) ((ms)->serial.code_lo | ((ms)->serial.code_hi << 4))
77
78/* Section 9.3.2.1 - Geographical Scope */
79#define GSM341_GS_CELL_WIDE_IMMED 0
80#define GSM341_GS_PLMN_WIDE 1
81#define GSM341_GS_LA_WIDE 2
82#define GSM341_GS_CELL_WIDE 3
83
84/* Section 9.4.1.2.2 */
85#define GSM341_MSGID_EOTD_ASSISTANCE 0x03E8
86#define GSM341_MSGID_DGPS_CORRECTION 0x03E9
87#define GSM341_MSGID_DGPS_EPH_CLOCK_COR 0x03EA
88#define GSM341_MSGID_GPS_ALMANAC_OTHER 0x03EB
89#define GSM341_MSGID_ETWS_EARTHQUAKE 0x1100
90#define GSM341_MSGID_ETWS_TSUNAMI 0x1101
91#define GSM341_MSGID_ETWS_QUAKE_AND_TSUNAMI 0x1102
92#define GSM341_MSGID_ETWS_TEST 0x1103
93#define GSM341_MSGID_ETWS_OTHER 0x1104
94#define GSM341_MSGID_ETWS_CMAS_PRESIDENTIAL 0x1112
95#define GSM341_MSGID_ETWS_CMAS_EXTREME_IMM_OBSERVED 0x1113
96#define GSM341_MSGID_ETWS_CMAS_EXTREME_IMM_LIKELY 0x1114
97#define GSM341_MSGID_ETWS_CMAS_EXTREME_EXP_OBSERVED 0x1115
98#define GSM341_MSGID_ETWS_CMAS_EXTREME_EXP_LIKELY 0x1116
99#define GSM341_MSGID_ETWS_CMAS_SEVERE_IMM_OBSERVED 0x1117
100#define GSM341_MSGID_ETWS_CMAS_SEVERE_IMM_LIKELY 0x1118
101#define GSM341_MSGID_ETWS_CMAS_SEVERE_EXP_OBSERVED 0x1119
102#define GSM341_MSGID_ETWS_CMAS_SEVERE_EXP_LIKELY 0x111A
103#define GSM341_MSGID_ETWS_CMAS_AMBER 0x111B
104#define GSM341_MSGID_ETWS_CMAS_MONTHLY_TEST 0x111C
105#define GSM341_MSGID_ETWS_CMAS_EXERCISE 0x111D
106#define GSM341_MSGID_ETWS_CMAS_OPERATOR_DEFINED 0x111E
107#define GSM341_MSGID_ETWS_CMAS_PRESIDENTIAL_AL 0x111F
108#define GSM341_MSGID_ETWS_CMAS_EXTREME_IMM_OBSERVED_AL 0x1120
109#define GSM341_MSGID_ETWS_CMAS_EXTREME_IMM_LIKELY_AL 0x1121
110#define GSM341_MSGID_ETWS_CMAS_EXTREME_EXP_OBSERVED_AL 0x1122
111#define GSM341_MSGID_ETWS_CMAS_EXTREME_EXP_LIKELY_AL 0x1123
112#define GSM341_MSGID_ETWS_CMAS_SEVERE_IMM_OBSERVED_AL 0x1124
113#define GSM341_MSGID_ETWS_CMAS_SEVERE_IMM_LIKELY_AL 0x1125
114#define GSM341_MSGID_ETWS_CMAS_SEVERE_EXP_OBSERVED_AL 0x1126
115#define GSM341_MSGID_ETWS_CMAS_SEVERE_EXP_LIKELY_AL 0x1127
116#define GSM341_MSGID_ETWS_CMAS_AMBER_AL 0x1128
117#define GSM341_MSGID_ETWS_CMAS_MONTHLY_TEST_AL 0x1129
118#define GSM341_MSGID_ETWS_CMAS_EXERCISE_AL 0x112A
119#define GSM341_MSGID_ETWS_CMAS_OPERATOR_DEFINED_AL 0x112B
120#define GSM341_MSGID_ETWS_EU_INFO_LOCAL_LANGUAGE 0x1900
endian.h
__attribute__
struct gsm341_ms_message __attribute__((packed))
gsm_04_12.h
GSM TS 04.12 definitions for Short Message Service Cell Broadcast.
gsm341_etws_message
Definition: gsm_03_41.h:56
gsm341_etws_message::msg_id
uint16_t msg_id
Definition: gsm_03_41.h:71
gsm341_etws_message::warning_type
uint16_t warning_type
Definition: gsm_03_41.h:72
gsm341_etws_message::serial
struct gsm341_etws_message::@36 serial
gsm341_etws_message::data
uint8_t data[0]
Definition: gsm_03_41.h:73
gsm341_ms_message
Definition: gsm_03_41.h:20
gsm341_ms_message::dcs
struct gsm341_ms_message::@31 dcs
gsm341_ms_message::data
uint8_t data[0]
Definition: gsm_03_41.h:52
gsm341_ms_message::page
struct gsm341_ms_message::@32 page
gsm341_ms_message::serial
struct gsm341_ms_message::@30 serial
gsm341_ms_message::msg_id
uint16_t msg_id
Definition: gsm_03_41.h:33