module ECBE_Types { /* Type definitions for the ECBE (External Cell Broadcast Entity) protocol of OsmoCBC */ /* (C) 2021 by Harald Welte * 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" }