RSL_Types: Add templates for "BSC side"

So far, the RSL templates have been used for BSC testing, i.e.
TTCN3 behaving like a BTS.  Now we want to test the BTS, so we
have to "invert" the receive/send direction and hence also need
the inverse templates.

This doesn't add *all* of them, but a sufficiently large number for our
first testcases against OsmoBTS.

Change-Id: Ica9cfae5a691e4d967d046b04e5bb16a71a89adf
This commit is contained in:
Harald Welte 2018-02-19 19:18:17 +01:00
parent 830dc9d07b
commit 9abd1289ec
1 changed files with 211 additions and 4 deletions

View File

@ -405,11 +405,25 @@ module RSL_Types {
t2 := fn mod 26
}
function tr_RSL_IE_FrameNumber(template GsmFrameNumber fn) return template RSL_IE_FrameNumber {
if (istemplatekind(fn, "?")) {
return ?;
} else {
return ts_RSL_IE_FrameNumber(valueof(fn));
}
}
template RSL_IE_RequestRef ts_RSL_IE_ReqRef(OCT1 ra, GsmFrameNumber frame_nr) := {
ra := ra,
frame_nr := ts_RSL_IE_FrameNumber(frame_nr)
}
template RSL_IE_RequestRef tr_RSL_IE_ReqRef(template OCT1 ra, template GsmFrameNumber frame_nr) := {
ra := ra,
frame_nr := tr_RSL_IE_FrameNumber(frame_nr)
}
/* 9.3.26 */
type enumerated RSL_Cause {
/* normal event */
@ -468,6 +482,13 @@ module RSL_Types {
cause_ext := omit
}
template RSL_IE_Cause tr_RSL_IE_Cause(template RSL_Cause cause) := {
len := ?,
e := 0,
cause := cause,
cause_ext := omit
}
/* 9.3.40 */
type enumerated RSL_ChanNeeded {
RSL_CHANNEED_ANY ('00'B),
@ -749,6 +770,16 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
}
}
template RSL_Message tr_RSL_DATA_IND(template RslChannelNr chan_nr, template RslLinkId link_id,
template octetstring l3_info := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, true),
msg_type := RSL_MT_DATA_IND,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{link_id := link_id}),
tr_RSL_IE(RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)})
}
}
/* 8.3.3 BTS -> BSC */
template RSL_Message ts_RSL_ERROR_IND(RslChannelNr chan_nr, RslLinkId link_id, RSL_Cause cause) := {
@ -760,6 +791,16 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
template RSL_Message tr_RSL_ERROR_IND(template RslChannelNr chan_nr, template RslLinkId link_id,
template RSL_Cause cause := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_ERROR_IND,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{link_id := link_id}),
tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)})
}
}
/* 8.3.6 BTS -> BSC */
template RSL_Message ts_RSL_EST_IND(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info) := {
@ -771,6 +812,16 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_L3_INFO, RSL_IE_Body:{l3_info := ts_RSL_L16V(l3_info)})
}
}
template RSL_Message tr_RSL_EST_IND(template RslChannelNr chan_nr, template RslLinkId link_id,
template octetstring l3_info := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_EST_IND,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{link_id := link_id}),
tr_RSL_IE(RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)})
}
}
/* 8.3.7 BSC -> BTS */
template RSL_Message ts_RSL_REL_REQ(RslChannelNr chan_nr, RslLinkId link_id) := {
@ -801,6 +852,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
}
}
template RSL_Message tr_RSL_REL_CONF(template RslChannelNr chan_nr, template RslLinkId link_id) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_REL_CONF,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{link_id := link_id})
}
}
/* 8.3.9 BTS -> BSC */
template RSL_Message ts_RSL_REL_IND(RslChannelNr chan_nr, RslLinkId link_id) := {
@ -811,6 +870,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_LINK_IDENT, RSL_IE_Body:{link_id := link_id})
}
}
template RSL_Message tr_RSL_REL_IND(template RslChannelNr chan_nr, template RslLinkId link_id) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_RLL, false),
msg_type := RSL_MT_REL_IND,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{link_id := link_id})
}
}
/* 8.3.10 BSC -> BTS */
template RSL_Message ts_RSL_UNITDATA_REQ(RslChannelNr chan_nr, RslLinkId link_id, octetstring l3_info)
@ -848,6 +915,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := ts_RSL_IE_FrameNumber(fn)})
}
}
template RSL_Message tr_RSL_CHAN_ACT_ACK(template RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV_ACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{frame_nr := ?})
}
}
/* 8.4.3 BTS -> BSC */
template RSL_Message ts_RSL_CHAN_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
@ -858,6 +933,15 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
template RSL_Message tr_RSL_CHAN_ACT_NACK(template RslChannelNr chan_nr,
template RSL_Cause cause := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CHAN_ACTIV_NACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{cause := ?})
}
}
/* 8.4.4 BTS -> BSC */
template RSL_Message ts_RSL_CONN_FAIL_IND(RslChannelNr chan_nr, RSL_Cause cause) := {
@ -868,6 +952,15 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
template RSL_Message tr_RSL_CONN_FAIL_IND(template RslChannelNr chan_nr,
template RSL_Cause cause := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_CONN_FAIL,
ies :={
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)})
}
}
/* 8.4.5 BSC -> BTS */
template RSL_Message tr_RSL_DEACT_SACCH(template RslChannelNr chan_nr) := {
@ -877,6 +970,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
}
}
template RSL_Message ts_RSL_DEACT_SACCH(RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_DEACTIVATE_SACCH,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
}
}
/* 8.4.6 BSC ->BTS */
template RSL_Message tr_RSL_ENCR_CMD(template RslChannelNr chan_nr,
@ -893,6 +994,18 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
tr_RSL_IE(RSL_IE_Body:{l3_info := tr_RSL_L16V(l3_info)})
}
}
template RSL_Message ts_RSL_ENCR_CMD(RslChannelNr chan_nr, RslLinkId link_id,
OCT1 alg, octetstring key,
octetstring l3_info) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_ENCR_CMD,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
t_RSL_IE(RSL_IE_ENCR_INFO, RSL_IE_Body:{encr_info := tr_RSL_IE_EncrInfo(alg, key)}),
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 := tr_RSL_L16V(l3_info)})
}
}
/* 8.4.10 BTS -> BSC */
template RSL_Message ts_RSL_MODE_MODIFY_ACK(RslChannelNr chan_nr) := {
@ -902,12 +1015,33 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
}
}
template RSL_Message tr_RSL_MODE_MODIFY_ACK(template RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_MODE_MODIFY_ACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
}
}
/* 8.4.11 BTS -> BSC */
template RSL_Message ts_RSL_MODE_MODIFY_NACK(RslChannelNr chan_nr, RSL_Cause cause)
modifies ts_RSL_CHAN_ACT_NACK := {
msg_type := RSL_MT_MODE_MODIFY_NACK
template RSL_Message ts_RSL_MODE_MODIFY_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_MODE_MODIFY_NACK,
ies := {
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)})
}
}
template RSL_Message tr_RSL_MODE_MODIFY_NACK(template RslChannelNr chan_nr,
template RSL_Cause cause) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_MODE_MODIFY_NACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)})
}
}
/* 8.4.14: BTS <- BSC */
template RSL_Message tr_RSL_RF_CHAN_REL(template RslChannelNr chan_nr) := {
@ -917,6 +1051,13 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
}
}
template RSL_Message ts_RSL_RF_CHAN_REL(RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_RF_CHAN_REL,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
}
}
/* 8.4.19 BTS -> BSC */
template RSL_Message ts_RSL_RF_CHAN_REL_ACK(RslChannelNr chan_nr) :=
@ -924,6 +1065,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
RSL_MT_RF_CHAN_REL_ACK,
{ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) });
template RSL_Message tr_RSL_RF_CHAN_REL_ACK(template RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
msg_type := RSL_MT_RF_CHAN_REL_ACK,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
}
}
/* COMMON CHANNEL MANAGEMENT MESSAGES */
/* 8.5.2 BTS -> BSC */
@ -954,6 +1103,16 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_ACCESS_DELAY, RSL_IE_Body:{access_delay := acc_del})
}
}
template RSL_Message tr_RSL_CHAN_RQD(template OCT1 ra, template GsmFrameNumber fn := ?,
template uint8_t acc_del := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_CHAN_RQD,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := t_RslChanNr_RACH(0)}),
tr_RSL_IE(RSL_IE_Body:{req_ref := tr_RSL_IE_ReqRef(ra, fn)}),
tr_RSL_IE(RSL_IE_Body:{access_delay := acc_del})
}
}
/* 8.5.4 BTS -> BSC */
template RSL_Message ts_DELETE_IND(RslChannelNr chan_nr, octetstring imm_ass) := {
@ -976,6 +1135,15 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
* /* opt: channel needed, eMLPP prio */
}
}
template RSL_Message ts_RSL_PAGING_CMD(octetstring identity, uint8_t pg, uint3_t tn := 0) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_PAGING_CMD,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}),
t_RSL_IE(RSL_IE_PAGING_GROUP, RSL_IE_Body:{paging_group := pg}),
t_RSL_IE(RSL_IE_MS_IDENTITY, RSL_IE_Body:{ms_identity := ts_RSL_LV(identity)})
}
}
/* 8.5.6 BSC -> BTS */
template RSL_Message tr_RSL_IMM_ASSIGN(template uint3_t tn := ?) := {
@ -986,7 +1154,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
tr_RSL_IE(RSL_IE_Body:{full_imm_ass_info := ?})
}
}
template RSL_Message ts_RSL_IMM_ASSIGN(octetstring f_ass_inf, uint3_t tn := 0) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_CCHAN, false),
msg_type := RSL_MT_IMMEDIATE_ASSIGN_CMD,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := t_RslChanNr_PCH_AGCH(tn)}),
t_RSL_IE(RSL_IE_FULL_IMM_ASS_INFO, RSL_IE_Body:{full_imm_ass_info := ts_RSL_LV(f_ass_inf)})
}
}
/* 8.6.4 BTS -> BSC */
template RSL_Message ts_RSL_ERROR_REPORT(RSL_Cause cause) := {
@ -1008,6 +1183,14 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
*
}
}
template RSL_Message ts_RSL_IPA_CRCX(RslChannelNr chan_nr) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
msg_type := RSL_MT_IPAC_CRCX,
ies := {
t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
}
}
template RSL_Message ts_RSL_IPA_CRCX_ACK(RslChannelNr chan_nr,
uint16_t ipa_conn_id, uint32_t local_ip,
@ -1022,6 +1205,21 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_IPAC_RTP_PAYLOAD2, RSL_IE_Body:{ipa_rtp_pt2 := rtp_pt2})
}
}
template RSL_Message tr_RSL_IPA_CRCX_ACK(template RslChannelNr chan_nr,
template uint16_t ipa_conn_id,
template uint32_t local_ip,
template uint16_t local_port,
template uint7_t rtp_pt2) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
msg_type := RSL_MT_IPAC_CRCX_ACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
tr_RSL_IE(RSL_IE_Body:{ipa_local_ip := local_ip}),
tr_RSL_IE(RSL_IE_Body:{ipa_local_port := local_port}),
tr_RSL_IE(RSL_IE_Body:{ipa_rtp_pt2 := rtp_pt2})
}
}
template RSL_Message ts_RSL_IPA_CRCX_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
@ -1031,6 +1229,15 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie
t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
}
}
template RSL_Message tr_RSL_IPA_CRCX_NACK(template RslChannelNr chan_nr,
template RSL_Cause cause := ?) := {
msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
msg_type := RSL_MT_IPAC_CRCX_NACK,
ies := {
tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
tr_RSL_IE(RSL_IE_Body:{cause := tr_RSL_IE_Cause(cause)})
}
}
template RSL_Message tr_RSL_IPA_MDCX(template RslChannelNr chan_nr,
template uint16_t ipa_conn_id) := {