From ddeaa5769c7ba11aa3519186be0c701260132029 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 14 Jul 2017 18:58:07 +0200 Subject: Add GSMTAP header and message definition --- sysinfo/GSMTAP_Types.ttcn | 75 ++++++++++++++++++++++++++++++++++++++++++++++ sysinfo/Osmocom_Types.ttcn | 17 +++++++++-- 2 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 sysinfo/GSMTAP_Types.ttcn (limited to 'sysinfo') diff --git a/sysinfo/GSMTAP_Types.ttcn b/sysinfo/GSMTAP_Types.ttcn new file mode 100644 index 00000000..9e7d9800 --- /dev/null +++ b/sysinfo/GSMTAP_Types.ttcn @@ -0,0 +1,75 @@ +module GSMTAP_Types { + import from Osmocom_Types all; + + const uint8_t GSMTAP_VERSION := 2; + + type enumerated GsmtapMsgType { + GSMTAP_TYPE_UM (1), + GSMTAP_TYPE_ABIS (2), + GSMTAP_TYPE_UM_BURST (3), + GSMTAP_TYPE_SIM (4), + GSMTAP_TYPE_TETRA_I1 (5), + GSMTAP_TYPE_TETRA_I1_BURST (6), + GSMTAP_TYPE_WMX_BURST (7), + GSMTAP_TYPE_GB_LLC (8), + GSMTAP_TYPE_GB_SNDCP (9), + GSMTAP_TYPE_GMR1_UM (10), + GSMTAP_TYPE_UMTS_RLC_MAC (11), + GSMTAP_TYPE_UMTS_RRC (12), + GSMTAP_TYPE_LTE_RRC (13), + GSMTAP_TYPE_LTE_MAC (14), + GSMTAP_TYPE_LTE_MAC_FRAMED (15), + GSMTAP_TYPE_OSMOCORE_LOG (16), + GSMTAP_TYPE_QC_DIAG (17) + } with { variant "FIELDLENGTH(8)" }; + + type enumerated GsmtapChannel { + GSMTAP_CHANNEL_UNKNOWN (0), + GSMTAP_CHANNEL_BCCH (1), + GSMTAP_CHANNEL_CCCH (2), + GSMTAP_CHANNEL_RACH (3), + GSMTAP_CHANNEL_AGCH (4), + GSMTAP_CHANNEL_PCH (5), + GSMTAP_CHANNEL_SDCCH (6), + GSMTAP_CHANNEL_SDCCH4 (7), + GSMTAP_CHANNEL_SDCCH8 (8), + GSMTAP_CHANNEL_TCH_F (9), + GSMTAP_CHANNEL_TCH_H (10), + GSMTAP_CHANNEL_PACCH (11), + GSMTAP_CHANNEL_CBCH52 (12), + GSMTAP_CHANNEL_PDCH (13), + GSMTAP_CHANNEL_PTCCH (14), + GSMTAP_CHANNEL_CBCH51 (15) + } with { variant "FIELDLENGTH(8)" }; + + type record GsmtapHeader { + uint8_t version, + uint8_t hdr_len, + GsmtapMsgType msg_type, + uint8_t timeslot, + Arfcn arfcn, + int8_t signal_dbm, + int8_t snr_db, + uint32_t frame_number, + GsmtapChannel sub_type, + uint8_t antenna_nr, + uint8_t sub_slot, + uint8_t res + } with { variant (hdr_len) "LENGTHTO(version, hdr_len, msg_type, timeslot, arfcn, signal_dbm, snr_db, frame_number, sub_type, antenna_nr, sub_slot, res), UNIT(dword32)" } + + external function enc_GsmtapHeader(in GsmtapHeader si) return octetstring + with { extension "prototype(convert) encode(RAW)" }; + external function dec_GsmtapHeader(in octetstring stream) return GsmtapHeader + with { extension "prototype(convert) decode(RAW)" }; + + type record GsmtapMessage { + GsmtapHeader header, + octetstring payload optional + } with { variant "" }; + + external function enc_GsmtapMessage(in GsmtapMessage si) return octetstring + with { extension "prototype(convert) encode(RAW)" }; + external function dec_GsmtapMessage(in octetstring stream) return GsmtapMessage + with { extension "prototype(convert) decode(RAW)" }; + +} with { encode "RAW" }; diff --git a/sysinfo/Osmocom_Types.ttcn b/sysinfo/Osmocom_Types.ttcn index 9368626f..6fe1b577 100644 --- a/sysinfo/Osmocom_Types.ttcn +++ b/sysinfo/Osmocom_Types.ttcn @@ -1,15 +1,28 @@ module Osmocom_Types { - type integer uint32_t (0..4294967295) with { variant "unsigned 32 bit" }; + type integer uint8_t (0..255) with { variant "unsigned 8 bit" }; type integer uint16_t (0..65535) with { variant "unsigned 16 bit" }; + type integer uint32_t (0..4294967295) with { variant "unsigned 32 bit" }; + + type integer int8_t (-128..127) with { variant "8 bit" }; + type integer int16_t (-32768..32767) with { variant "16 bit" }; + type integer uint2_t (0..3) with { variant "unsigned 2 bit" }; type integer uint3_t (0..7) with { variant "unsigned 3 bit" }; type integer uint4_t (0..15) with { variant "unsigned 4 bit" }; type integer uint5_t (0..31) with { variant "unsigned 5 bit" }; type integer uint6_t (0..63) with { variant "unsigned 6 bit" }; type integer uint7_t (0..127) with { variant "unsigned 7 bit" }; - type integer uint8_t (0..255) with { variant "unsigned 8 bit" }; type integer uint9_t (0..511) with { variant "unsigned 9 bit" }; type integer uint10_t (0..1023) with { variant "unsigned 10 bit" }; type integer uint11_t (0..2047) with { variant "unsigned 11 bit" }; type integer uint12_t (0..4095) with { variant "unsigned 12 bit" }; + type integer uint13_t (0..8191) with { variant "unsigned 13 bit" }; + type integer uint14_t (0..16383) with { variant "unsigned 14 bit" }; + type integer uint15_t (0..32767) with { variant "unsigned 15 bit" }; + + type record Arfcn { + boolean pcs, + uint15_t arfcn + } with { variant "" }; + } with { encode "RAW"; variant "FIELDORDER(msb)" } -- cgit v1.2.3