| module TRXC_Types { |
| |
| /* TRX Control protocol type definitions in TTCN-3 |
| * (C) 2018 Harald Welte <laforge@gnumonks.org> |
| * All rights reserved. |
| * |
| * Released under the terms of GNU General Public License, Version 2 or |
| * (at your option) any later version. |
| * |
| * SPDX-License-Identifier: GPL-2.0-or-later |
| */ |
| |
| import from Osmocom_Types all; |
| |
| type charstring TrxcType ("CMD", "RSP", "IND") with { |
| variant "TEXT_CODING(,convert=upper_case,'((CMD)|(RSP)|(IND))',case_insensitive)" |
| } |
| |
| type charstring TrxcVerb ("POWERON", "POWEROFF", "CLOCK", |
| "RXTUNE", "TXTUNE", "SETSLOT", "SETTSC", "SETBSIC", "SETPOWER", |
| "SETMAXDLY", "SETMAXDLYNB", "SETSLOT", "HANDOVER", "NOHANDOVER", |
| "MEASURE", "FAKE_RSSI", "FAKE_TOA", "FAKE_CI", "FAKE_TRXC_DELAY") with { |
| variant "TEXT_CODING(,convert=upper_case, |
| '((POWERON)|(POWEROFF)|(CLOCK)|(RXTUNE)|(TXTUNE)|(SETSLOT)|(SETTSC)|(SETBSIC)|(SETPOWER)|(SETMAXDLY)|(SETMAXDLYNB)|(HANDOVER)|(NOHANDOVER)|(MEASURE)|(FAKE_RSSI)|(FAKE_TOA)|(FAKE_CI)|(FAKE_TRXC_DELAY))' |
| ,case_insensitive)" |
| } |
| |
| type integer TrxcStatus; |
| type charstring TrxcParam; |
| type record of TrxcParam TrxcParams with { |
| variant "SEPARATOR(' ', ' ')" |
| } |
| |
| type record TrxcCommand { |
| TrxcVerb verb, |
| TrxcParams params optional |
| } with { |
| variant "SEPARATOR(' ', ' ')" |
| } |
| |
| type record TrxcResponse { |
| TrxcVerb verb, |
| TrxcStatus status, |
| TrxcParams params optional |
| } with { |
| variant "SEPARATOR(' ', ' ')" |
| } |
| |
| type record TrxcIndication { |
| TrxcVerb verb, |
| TrxcParams params optional |
| } with { |
| variant "SEPARATOR(' ', ' ')" |
| } |
| |
| type union TrxcMessage { |
| TrxcCommand cmd, |
| TrxcResponse rsp, |
| TrxcIndication ind |
| } with { |
| variant (cmd) "BEGIN('CMD ')" |
| variant (rsp) "BEGIN('RSP ')" |
| variant (ind) "BEGIN('IND ')" |
| } |
| |
| external function enc_TrxcMessage(in TrxcMessage id) return charstring |
| with { extension "prototype(convert) encode(TEXT)" }; |
| external function dec_TrxcMessage(in charstring id) return TrxcMessage |
| with { extension "prototype(convert) decode(TEXT)" }; |
| |
| /* rxlev2dbm(0..63) gives us [-110..-47], plus -10 dbm for noise */ |
| type integer TRXC_RSSI (-120..-47); |
| type integer TRXC_RSSI_THRESH (-120..120); |
| |
| template (value) TrxcMessage ts_TRXC_FAKE_RSSI(TRXC_RSSI rssi, TRXC_RSSI_THRESH thresh := 0) := { |
| cmd := { |
| verb := "FAKE_RSSI", |
| params := { int2str(rssi), int2str(thresh) } |
| } |
| } |
| |
| template (value) TrxcMessage ts_TRXC_FAKE_TIMING(int16_t timing, int16_t thresh := 0) := { |
| cmd := { |
| verb := "FAKE_TOA", |
| params := { int2str(timing), int2str(thresh) } |
| } |
| } |
| |
| template (value) TrxcMessage ts_TRXC_FAKE_CI(int16_t ci, int16_t thresh := 0) := { |
| cmd := { |
| verb := "FAKE_CI", |
| params := { int2str(ci), int2str(thresh) } |
| } |
| } |
| |
| template (value) TrxcMessage ts_TRXC_FAKE_TRXC_DELAY(integer delay_ms := 0) := { |
| cmd := { |
| verb := "FAKE_TRXC_DELAY", |
| params := { int2str(delay_ms) } |
| } |
| } |
| |
| |
| } with { encode "TEXT" } |