RSL_Types: Work around (perceived) shortcoming of TITAN RAW encoder

This commit is contained in:
Harald Welte 2017-12-12 14:55:17 +01:00
parent 3e6ad89a2b
commit 735dd07b38
1 changed files with 43 additions and 40 deletions

View File

@ -514,8 +514,11 @@ module RSL_Types {
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
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)})
}
}