148 lines
3.3 KiB
Plaintext
148 lines
3.3 KiB
Plaintext
|
module ECBE_Types {
|
||
|
|
||
|
/* Type definitions for the ECBE (External Cell Broadcast Entity) protocol of OsmoCBC */
|
||
|
/* (C) 2021 by Harald Welte <laforge@gnumonks.org>
|
||
|
* All rights reserved.
|
||
|
*/
|
||
|
|
||
|
/***********************************************************************
|
||
|
* smscb.schema.json
|
||
|
***********************************************************************/
|
||
|
|
||
|
type charstring EcbeLanguageCode length(2);
|
||
|
|
||
|
type integer EcbeMessageId (0..65535);
|
||
|
|
||
|
type enumerated EcbeGeographicScope {
|
||
|
cell_wide_immediate,
|
||
|
plmn_wide,
|
||
|
lac_sac_tac_wide,
|
||
|
cell_wide
|
||
|
};
|
||
|
|
||
|
type integer EcbeMessageCode (0..1023);
|
||
|
|
||
|
type integer EcbeUpdateNumber (0..15);
|
||
|
|
||
|
type integer EcbeSerialNrEncoded (0..65535);
|
||
|
|
||
|
type record EcbeSerialNrDecoded {
|
||
|
EcbeGeographicScope geo_scope,
|
||
|
EcbeMessageCode msg_code,
|
||
|
EcbeUpdateNumber update_nr
|
||
|
};
|
||
|
|
||
|
type union EcbeSerialNr {
|
||
|
EcbeSerialNrEncoded serial_nr_encoded,
|
||
|
EcbeSerialNrDecoded serial_nr_decoded
|
||
|
};
|
||
|
|
||
|
type integer EcbeDcsEncoded (0..255);
|
||
|
|
||
|
type enumerated EcbeCharacterSet {
|
||
|
gsm,
|
||
|
eight_bit,
|
||
|
ucs2
|
||
|
};
|
||
|
|
||
|
type integer EcbeDcsClass (0..3);
|
||
|
|
||
|
type record EcbePayloadDecoded {
|
||
|
EcbeCharacterSet character_set optional,
|
||
|
EcbeLanguageCode Language optional,
|
||
|
EcbeDcsClass dcs_class optional,
|
||
|
charstring data_utf8
|
||
|
};
|
||
|
|
||
|
type charstring EcbePage;
|
||
|
type record of EcbePage EcbePages;
|
||
|
|
||
|
type record EcbePayloadEncoded {
|
||
|
EcbeDcsEncoded dcs,
|
||
|
EcbePages pages
|
||
|
};
|
||
|
|
||
|
type integer EcbeWarningTypeEncoded (0..127);
|
||
|
|
||
|
type enumerated EcbeWarningTypeDecoded {
|
||
|
earthquake,
|
||
|
tsunami,
|
||
|
earthquake_and_tsunami,
|
||
|
test,
|
||
|
other,
|
||
|
rfu
|
||
|
};
|
||
|
|
||
|
type union EcbeWarningType {
|
||
|
EcbeWarningTypeEncoded warning_type_encoded,
|
||
|
EcbeWarningTypeDecoded warning_type_decoded
|
||
|
};
|
||
|
|
||
|
type record EcbePayloadEtws {
|
||
|
EcbeWarningType warning_type,
|
||
|
boolean emergency_user_alert optional,
|
||
|
boolean popup_on_display optional,
|
||
|
charstring warning_sec_info optional
|
||
|
};
|
||
|
|
||
|
type union EcbePayload {
|
||
|
EcbePayloadEncoded payload_encoded,
|
||
|
EcbePayloadDecoded payload_decoded,
|
||
|
EcbePayloadEtws payload_etws
|
||
|
};
|
||
|
|
||
|
type record EcbeSmscbMessage {
|
||
|
EcbeSerialNr serial_nr,
|
||
|
EcbeMessageId message_id,
|
||
|
EcbePayload payload
|
||
|
};
|
||
|
|
||
|
external function enc_EcbeSmscbMessage(in EcbeSmscbMessage inp) return octetstring
|
||
|
with { extension "prototype(convert) encode(JSON)" }
|
||
|
external function dec_EcbeSmscbMessage(in octetstring inp) return EcbeSmscbMessage
|
||
|
with { extension "prototype(convert) decode(JSON)" }
|
||
|
|
||
|
/***********************************************************************
|
||
|
* cbc.schema.json
|
||
|
***********************************************************************/
|
||
|
|
||
|
type enumerated EcbeCategory {
|
||
|
normal,
|
||
|
high_priority,
|
||
|
background
|
||
|
};
|
||
|
|
||
|
type integer EcbeRepetitionPeriod (1..4095);
|
||
|
|
||
|
type enumerated EcbeChannelIndicator {
|
||
|
basic,
|
||
|
extended
|
||
|
};
|
||
|
|
||
|
type integer EcbeWarningPeriodSec (0..3600);
|
||
|
|
||
|
type integer EcbeNumberOfBroadcasts (0..65535);
|
||
|
|
||
|
type record EcbeScopePlmn {
|
||
|
};
|
||
|
|
||
|
type union EcbeScope {
|
||
|
EcbeScopePlmn scope_plmn
|
||
|
};
|
||
|
|
||
|
type record EcbeCbcMessage {
|
||
|
charstring cbe_name optional,
|
||
|
EcbeCategory category optional,
|
||
|
EcbeRepetitionPeriod repetition_period optional,
|
||
|
EcbeNumberOfBroadcasts num_of_bcast optional,
|
||
|
EcbeScope scope,
|
||
|
EcbeSmscbMessage smscb_message
|
||
|
};
|
||
|
|
||
|
external function enc_EcbeCbcMessage(in EcbeCbcMessage inp) return octetstring
|
||
|
with { extension "prototype(convert) encode(JSON)" }
|
||
|
external function dec_EcbeCbcMessage(in octetstring inp) return EcbeCbcMessage
|
||
|
with { extension "prototype(convert) decode(JSON)" }
|
||
|
|
||
|
} with { encode "JSON" }
|