RLCMAC: Add Rlcmac{Ul,Dl}Block unions to cover both Control + Data blocks
diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn
index 6cd6e49..6231a54 100644
--- a/library/RLCMAC_Types.ttcn
+++ b/library/RLCMAC_Types.ttcn
@@ -87,7 +87,7 @@
with { extension "prototype(convert) decode(RAW)" };
type record UlMacCtrlHeader {
- MacPayloadType pt,
+ MacPayloadType payload_type,
BIT5 spare,
boolean retry
} with { variant (retry) "FIELDLENGTH(1)" };
@@ -152,7 +152,7 @@
/* TS 44.060 10.2.2 */
type record UlMacDataHeader {
/* Octet 0 */
- MacPayloadType pt,
+ MacPayloadType payload_type,
uint4_t countdown,
boolean stall_ind,
boolean retry,
@@ -195,4 +195,32 @@
external function enc_RlcmacUlDataBlock(in RlcmacUlDataBlock si) return octetstring;
external function dec_RlcmacUlDataBlock(in octetstring stream) return RlcmacUlDataBlock;
+ type union RlcmacUlBlock {
+ RlcmacUlDataBlock data,
+ RlcmacUlCtrlBlock ctrl
+ } with {
+ variant "TAG(data, mac_hdr.payload_type = MAC_PT_RLC_DATA;
+ ctrl, mac_hdr.payload_type = MAC_PT_RLCMAC_NO_OPT;
+ ctrl, mac_hdr.payload_type = MAC_PT_RLCMAC_OPT)"
+ };
+
+ external function enc_RlcmacUlBlock(in RlcmacUlBlock si) return octetstring
+ with { extension "prototype(convert) encode(RAW)" };
+ external function dec_RlcmacUlBlock(in octetstring stream) return RlcmacUlBlock
+ with { extension "prototype(convert) decode(RAW)" };
+
+ type union RlcmacDlBlock {
+ RlcmacDlDataBlock data,
+ RlcmacDlCtrlBlock ctrl
+ } with {
+ variant "TAG(data, mac_hdr.mac_hdr.payload_type = MAC_PT_RLC_DATA;
+ ctrl, mac_hdr.payload_type = MAC_PT_RLCMAC_NO_OPT;
+ ctrl, mac_hdr.payload_type = MAC_PT_RLCMAC_OPT)"
+ };
+
+ external function enc_RlcmacDlBlock(in RlcmacDlBlock si) return octetstring
+ with { extension "prototype(convert) encode(RAW)" };
+ external function dec_RlcmacDlBlock(in octetstring stream) return RlcmacDlBlock
+ with { extension "prototype(convert) decode(RAW)" };
+
} with { encode "RAW"; variant "FIELDORDER(msb)" }