blob: 7c66fb96e085685c445362179a24db7126a83db4 [file] [log] [blame]
Harald Welte08332302019-08-01 09:54:40 +02001module ECBE_Types {
2
3/* Type definitions for the ECBE (External Cell Broadcast Entity) protocol of OsmoCBC */
4/* (C) 2021 by Harald Welte <laforge@gnumonks.org>
5 * All rights reserved.
6 */
7
8/***********************************************************************
9 * smscb.schema.json
10 ***********************************************************************/
11
12type charstring EcbeLanguageCode length(2);
13
14type integer EcbeMessageId (0..65535);
15
16type enumerated EcbeGeographicScope {
17 cell_wide_immediate,
18 plmn_wide,
19 lac_sac_tac_wide,
20 cell_wide
21};
22
23type integer EcbeMessageCode (0..1023);
24
25type integer EcbeUpdateNumber (0..15);
26
27type integer EcbeSerialNrEncoded (0..65535);
28
29type record EcbeSerialNrDecoded {
30 EcbeGeographicScope geo_scope,
31 EcbeMessageCode msg_code,
32 EcbeUpdateNumber update_nr
33};
34
35type union EcbeSerialNr {
36 EcbeSerialNrEncoded serial_nr_encoded,
37 EcbeSerialNrDecoded serial_nr_decoded
38};
39
40type integer EcbeDcsEncoded (0..255);
41
42type enumerated EcbeCharacterSet {
43 gsm,
44 eight_bit,
45 ucs2
46};
47
48type integer EcbeDcsClass (0..3);
49
50type record EcbePayloadDecoded {
51 EcbeCharacterSet character_set optional,
52 EcbeLanguageCode Language optional,
53 EcbeDcsClass dcs_class optional,
54 charstring data_utf8
55};
56
57type charstring EcbePage;
58type record of EcbePage EcbePages;
59
60type record EcbePayloadEncoded {
61 EcbeDcsEncoded dcs,
62 EcbePages pages
63};
64
65type integer EcbeWarningTypeEncoded (0..127);
66
67type enumerated EcbeWarningTypeDecoded {
68 earthquake,
69 tsunami,
70 earthquake_and_tsunami,
71 test,
72 other,
73 rfu
74};
75
76type union EcbeWarningType {
77 EcbeWarningTypeEncoded warning_type_encoded,
78 EcbeWarningTypeDecoded warning_type_decoded
79};
80
81type record EcbePayloadEtws {
82 EcbeWarningType warning_type,
83 boolean emergency_user_alert optional,
84 boolean popup_on_display optional,
85 charstring warning_sec_info optional
86};
87
88type union EcbePayload {
89 EcbePayloadEncoded payload_encoded,
90 EcbePayloadDecoded payload_decoded,
91 EcbePayloadEtws payload_etws
92};
93
94type record EcbeSmscbMessage {
95 EcbeSerialNr serial_nr,
96 EcbeMessageId message_id,
97 EcbePayload payload
98};
99
100external function enc_EcbeSmscbMessage(in EcbeSmscbMessage inp) return octetstring
101 with { extension "prototype(convert) encode(JSON)" }
102external function dec_EcbeSmscbMessage(in octetstring inp) return EcbeSmscbMessage
103 with { extension "prototype(convert) decode(JSON)" }
104
105/***********************************************************************
106 * cbc.schema.json
107 ***********************************************************************/
108
109type enumerated EcbeCategory {
110 normal,
111 high_priority,
112 background
113};
114
115type integer EcbeRepetitionPeriod (1..4095);
116
117type enumerated EcbeChannelIndicator {
118 basic,
119 extended
120};
121
122type integer EcbeWarningPeriodSec (0..3600);
123
124type integer EcbeNumberOfBroadcasts (0..65535);
125
126type record EcbeScopePlmn {
127};
128
129type union EcbeScope {
130 EcbeScopePlmn scope_plmn
131};
132
133type record EcbeCbcMessage {
134 charstring cbe_name optional,
135 EcbeCategory category optional,
136 EcbeRepetitionPeriod repetition_period optional,
137 EcbeNumberOfBroadcasts num_of_bcast optional,
138 EcbeScope scope,
139 EcbeSmscbMessage smscb_message
140};
141
142external function enc_EcbeCbcMessage(in EcbeCbcMessage inp) return octetstring
143 with { extension "prototype(convert) encode(JSON)" }
144external function dec_EcbeCbcMessage(in octetstring inp) return EcbeCbcMessage
145 with { extension "prototype(convert) decode(JSON)" }
146
147} with { encode "JSON" }