RSL_Types: Work around (perceived) shortcoming of TITAN RAW encoder
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 439dda3..e3740eb 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -514,8 +514,11 @@
other, OTHERWISE;
)" };
- template RSL_IE t_RSL_IE(template RSL_IE_Body body) := {
- iei := RSL_IE_CHAN_NR, /* overwritten? */
+ /* For some reason the TTCN-3 RAW codec cannot automatically figure out the IEI
+ * that it needs to set for a given union-choice (body). So we have to explicitly
+ * specify the IEI by the caller :( */
+ template RSL_IE t_RSL_IE(RSL_IE_Type iei, template RSL_IE_Body body) := {
+ iei := iei,
body := body
}
@@ -591,9 +594,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true),
msg_type := RSL_MT_DATA_REQ,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
- t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+ t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
}
}
@@ -602,9 +605,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true),
msg_type := RSL_MT_DATA_IND,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
- t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+ t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
}
}
@@ -613,9 +616,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_ERROR_IND,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
- t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
@@ -624,9 +627,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_EST_IND,
ies := {
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id}),
- t_RSL_IE(RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id}),
+ t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
}
}
@@ -635,8 +638,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_REL_REQ,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
}
}
template RSL_Message tr_RSL_REL_REQ(template RslChannelNr chan_nr,
@@ -655,8 +658,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_REL_CONF,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
}
}
@@ -665,8 +668,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_REL_IND,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{link_id := link_id})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
}
}
@@ -690,9 +693,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
- t_RSL_IE(RSL_IE_Body:{chan_mode := mode})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_ACT_TYPE, RSL_IE_Body:{act_type := t_RSL_IE_ActType}),
+ t_RSL_IE(RSL_IE_CHAN_MODE, RSL_IE_Body:{chan_mode := mode})
/* lots of optional IEs */
}
}
@@ -702,8 +705,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV_ACK,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{frame_nr := ts_RSL_IE_FrameNumber(fn)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := ts_RSL_IE_FrameNumber(fn)})
}
}
@@ -712,8 +715,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV_NACK,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
@@ -722,8 +725,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CONN_FAIL,
ies :={
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
@@ -746,7 +749,7 @@
template RSL_Message ts_RSL_RF_CHAN_REL_ACK(RslChannelNr chan_nr) :=
ts_RSL_MsgDiscType(ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
RSL_MT_RF_CHAN_REL_ACK,
- { t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}) });
+ { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) });
/* COMMON CHANNEL MANAGEMENT MESSAGES */
@@ -755,16 +758,16 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_CCCH_LOAD_IND,
ies := {
- t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
- t_RSL_IE(RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
+ t_RSL_IE(RSL_IE_RACH_LOAD, RSL_IE_Body:{rach_load := ts_RSL_IE_RachLoad(slot_ct, busy_ct, acc_ct)})
}
}
template RSL_Message ts_RSL_PAGING_LOAD_IND(uint16_t buffer_space) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_CCCH_LOAD_IND,
ies := {
- t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}),
- t_RSL_IE(RSL_IE_Body:{paging_load := buffer_space})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(0)}),
+ t_RSL_IE(RSL_IE_PAGING_LOAD, RSL_IE_Body:{paging_load := buffer_space})
}
}
@@ -773,9 +776,9 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_CHAN_RQD,
ies := {
- t_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
- t_RSL_IE(RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}),
- t_RSL_IE(RSL_IE_Body:{access_delay := acc_del})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
+ t_RSL_IE(RSL_IE_REQ_REFERENCE, RSL_IE_Body:{req_ref := ts_RSL_IE_ReqRef(ra, fn)}),
+ t_RSL_IE(RSL_IE_ACCESS_DELAY, RSL_IE_Body:{access_delay := acc_del})
}
}
@@ -784,8 +787,8 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_DELETE_IND,
ies := {
- t_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
- t_RSL_IE(RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(imm_ass)})
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_FULL_IMM_ASS_INFO, RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(imm_ass)})
}
}
@@ -817,7 +820,7 @@
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_ERROR_IND,
ies := {
- t_RSL_IE(RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}