diff options
Diffstat (limited to 'cbc/ECBE_Types.ttcn')
-rw-r--r-- | cbc/ECBE_Types.ttcn | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/cbc/ECBE_Types.ttcn b/cbc/ECBE_Types.ttcn new file mode 100644 index 00000000..7c66fb96 --- /dev/null +++ b/cbc/ECBE_Types.ttcn @@ -0,0 +1,147 @@ +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" } |