blob: 76e6ea3ce772139b3213d22ae64f48296f1fd0dc [file] [log] [blame]
Harald Welteddeaa572017-07-14 18:58:07 +02001module GSMTAP_Types {
2 import from Osmocom_Types all;
Vadim Yanitskiy1acc7bb2020-11-14 04:24:57 +07003 import from GSM_Types all;
Harald Welteddeaa572017-07-14 18:58:07 +02004
5 const uint8_t GSMTAP_VERSION := 2;
6
Harald Welteb622a3d2017-07-14 22:26:33 +02007 const uint16_t GSMTAP_PORT := 4729;
8
Harald Welteddeaa572017-07-14 18:58:07 +02009 type enumerated GsmtapMsgType {
10 GSMTAP_TYPE_UM (1),
11 GSMTAP_TYPE_ABIS (2),
12 GSMTAP_TYPE_UM_BURST (3),
13 GSMTAP_TYPE_SIM (4),
14 GSMTAP_TYPE_TETRA_I1 (5),
15 GSMTAP_TYPE_TETRA_I1_BURST (6),
16 GSMTAP_TYPE_WMX_BURST (7),
17 GSMTAP_TYPE_GB_LLC (8),
18 GSMTAP_TYPE_GB_SNDCP (9),
19 GSMTAP_TYPE_GMR1_UM (10),
20 GSMTAP_TYPE_UMTS_RLC_MAC (11),
21 GSMTAP_TYPE_UMTS_RRC (12),
22 GSMTAP_TYPE_LTE_RRC (13),
23 GSMTAP_TYPE_LTE_MAC (14),
24 GSMTAP_TYPE_LTE_MAC_FRAMED (15),
25 GSMTAP_TYPE_OSMOCORE_LOG (16),
26 GSMTAP_TYPE_QC_DIAG (17)
27 } with { variant "FIELDLENGTH(8)" };
28
29 type enumerated GsmtapChannel {
30 GSMTAP_CHANNEL_UNKNOWN (0),
31 GSMTAP_CHANNEL_BCCH (1),
32 GSMTAP_CHANNEL_CCCH (2),
33 GSMTAP_CHANNEL_RACH (3),
34 GSMTAP_CHANNEL_AGCH (4),
35 GSMTAP_CHANNEL_PCH (5),
36 GSMTAP_CHANNEL_SDCCH (6),
37 GSMTAP_CHANNEL_SDCCH4 (7),
38 GSMTAP_CHANNEL_SDCCH8 (8),
39 GSMTAP_CHANNEL_TCH_F (9),
40 GSMTAP_CHANNEL_TCH_H (10),
41 GSMTAP_CHANNEL_PACCH (11),
42 GSMTAP_CHANNEL_CBCH52 (12),
43 GSMTAP_CHANNEL_PDCH (13),
44 GSMTAP_CHANNEL_PTCCH (14),
45 GSMTAP_CHANNEL_CBCH51 (15)
46 } with { variant "FIELDLENGTH(8)" };
47
48 type record GsmtapHeader {
49 uint8_t version,
50 uint8_t hdr_len,
51 GsmtapMsgType msg_type,
52 uint8_t timeslot,
Vadim Yanitskiy1acc7bb2020-11-14 04:24:57 +070053 GsmBandArfcn arfcn,
Harald Welteddeaa572017-07-14 18:58:07 +020054 int8_t signal_dbm,
55 int8_t snr_db,
56 uint32_t frame_number,
57 GsmtapChannel sub_type,
58 uint8_t antenna_nr,
59 uint8_t sub_slot,
60 uint8_t res
61 } 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)" }
62
63 external function enc_GsmtapHeader(in GsmtapHeader si) return octetstring
64 with { extension "prototype(convert) encode(RAW)" };
65 external function dec_GsmtapHeader(in octetstring stream) return GsmtapHeader
66 with { extension "prototype(convert) decode(RAW)" };
67
68 type record GsmtapMessage {
69 GsmtapHeader header,
70 octetstring payload optional
71 } with { variant "" };
72
73 external function enc_GsmtapMessage(in GsmtapMessage si) return octetstring
74 with { extension "prototype(convert) encode(RAW)" };
75 external function dec_GsmtapMessage(in octetstring stream) return GsmtapMessage
76 with { extension "prototype(convert) decode(RAW)" };
77
78} with { encode "RAW" };