osmo-ttcn3-hacks/cbc/ECBE_Types.ttcn

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" }