Harald Welte | ddeaa57 | 2017-07-14 18:58:07 +0200 | [diff] [blame] | 1 | module GSMTAP_Types { |
| 2 | import from Osmocom_Types all; |
Vadim Yanitskiy | 1acc7bb | 2020-11-14 04:24:57 +0700 | [diff] [blame] | 3 | import from GSM_Types all; |
Harald Welte | ddeaa57 | 2017-07-14 18:58:07 +0200 | [diff] [blame] | 4 | |
| 5 | const uint8_t GSMTAP_VERSION := 2; |
| 6 | |
Harald Welte | b622a3d | 2017-07-14 22:26:33 +0200 | [diff] [blame] | 7 | const uint16_t GSMTAP_PORT := 4729; |
| 8 | |
Harald Welte | ddeaa57 | 2017-07-14 18:58:07 +0200 | [diff] [blame] | 9 | 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 Yanitskiy | 1acc7bb | 2020-11-14 04:24:57 +0700 | [diff] [blame] | 53 | GsmBandArfcn arfcn, |
Harald Welte | ddeaa57 | 2017-07-14 18:58:07 +0200 | [diff] [blame] | 54 | 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" }; |