aboutsummaryrefslogtreecommitdiffstats
path: root/library
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-09-28 16:03:55 +0200
committerHarald Welte <laforge@gnumonks.org>2018-10-03 21:39:10 +0000
commit0aad596264b85e7a51b8ef62b05334b3cfdb0f3a (patch)
treea8e3b951ac31242a7c0ff5f48693ecf75ef2a2b6 /library
parent98e03158784ceb4363dc3106f450bdf48b4d5b81 (diff)
L1CTL_Types: Add support to set L1 Header params during SACCH tx
Diffstat (limited to 'library')
-rw-r--r--library/GSM_RR_Types.ttcn15
-rw-r--r--library/L1CTL_Types.ttcn23
2 files changed, 38 insertions, 0 deletions
diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn
index ef209e45..675271f4 100644
--- a/library/GSM_RR_Types.ttcn
+++ b/library/GSM_RR_Types.ttcn
@@ -158,6 +158,21 @@ module GSM_RR_Types {
message_type := msg_type
}
+ /* TS 44.004 7.2.1 */
+ type record SacchL1Header {
+ uint2_t reserved,
+ boolean fpc,
+ uint5_t ms_power_lvl,
+ uint8_t actual_ta
+ } with { variant "FIELDORDER(msb)" };
+
+ template (value) SacchL1Header ts_SacchL1Header(uint5_t ms_power_lvl, boolean fpc, uint8_t actual_ta) := {
+ reserved := 0,
+ fpc := fpc,
+ ms_power_lvl := ms_power_lvl,
+ actual_ta := actual_ta
+ };
+
type record MaioHsn {
} with { variant "" };
diff --git a/library/L1CTL_Types.ttcn b/library/L1CTL_Types.ttcn
index 656f292d..39732bee 100644
--- a/library/L1CTL_Types.ttcn
+++ b/library/L1CTL_Types.ttcn
@@ -263,6 +263,11 @@ module L1CTL_Types {
OCT2 padding
} with { variant "" };
+ type record L1ctlDataReq {
+ SacchL1Header l1header optional,
+ octetstring l2_payload
+ } with { variant "" };
+
type record L1ctlH1 {
uint8_t hsn,
uint8_t maio,
@@ -320,6 +325,7 @@ module L1CTL_Types {
L1CtlCryptoReq crypto_req,
L1ctlTrafficReq traffic_req,
L1ctlTbfCfgReq tbf_cfg_req,
+ L1ctlDataReq data_req,
octetstring other
} with {
variant (other) "BYTEORDER(first)"
@@ -351,6 +357,7 @@ module L1CTL_Types {
crypto_req, header.msg_type = L1CTL_CRYPTO_REQ;
traffic_req, header.msg_type = L1CTL_TRAFFIC_REQ;
tbf_cfg_req, header.msg_type = L1CTL_TBF_CFG_REQ;
+ data_req, header.msg_type = L1CTL_DATA_REQ;
other, OTHERWISE;
)" };
@@ -542,6 +549,22 @@ module L1CTL_Types {
}
}
+ template (value) L1ctlUlMessage ts_L1CTL_DATA_REQ_SACCH(template (value) RslChannelNr chan_nr,
+ template (value) RslLinkId link_id,
+ L1ctlDataReq data_req) := {
+ header := ts_L1ctlHeader(L1CTL_DATA_REQ),
+ ul_info := {
+ chan_nr := chan_nr,
+ link_id := link_id,
+ padding := '0000'O
+ },
+ ul_info_tbf := omit,
+ ul_info_abs := omit,
+ payload := {
+ data_req := data_req
+ }
+ }
+
template (value) L1ctlUlMessage ts_L1CTL_TBF_CFG_REQ(boolean is_uplink, TfiUsfArr tfi_usf) := {
header := ts_L1ctlHeader(L1CTL_TBF_CFG_REQ),
ul_info := omit,