From 9abd1289ec612e7c2f32b1110da3901a3135c8c0 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 19 Feb 2018 19:18:17 +0100 Subject: [PATCH] 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 --- library/RSL_Types.ttcn | 215 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 211 insertions(+), 4 deletions(-) diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 765a91e55..b1716fda8 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -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) := {