This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22731 ) Change subject: Osmocom_Gb_Types: Fix tons of template restriction warnings ...................................................................... Osmocom_Gb_Types: Fix tons of template restriction warnings Change-Id: I3da153ce5e83b231501e74b958fcac9f10c00849 --- M gbproxy/GBProxy_Tests.ttcn M library/BSSGP_Emulation.ttcnpp M library/Osmocom_Gb_Types.ttcn M library/RAW_NS.ttcnpp 4 files changed, 275 insertions(+), 143 deletions(-) Approvals: Jenkins Builder: Verified laforge: Looks good to me, approved diff --git a/gbproxy/GBProxy_Tests.ttcn b/gbproxy/GBProxy_Tests.ttcn index ad8874c..0f3b4cb 100644 --- a/gbproxy/GBProxy_Tests.ttcn +++ b/gbproxy/GBProxy_Tests.ttcn @@ -1105,7 +1105,7 @@ ts_BSSGP_DL_UD(g_pars.tlli, payload, omit, ts_BSSGP_IMSI(g_pars.imsi)); /* we cannot use pdu_tx as there are some subtle differences in the length field :/ */ var template (present) PDU_BSSGP pdu_rx := - tr_BSSGP_DL_UD(g_pars.tlli, payload, tr_BSSGP_IMSI(g_pars.imsi)); + tr_BSSGP_DL_UD(g_pars.tlli, payload, ts_BSSGP_IMSI(g_pars.imsi)); log("DL-UNITDATA(payload_size=", i); f_sgsn2pcu(pdu_tx, pdu_rx); @@ -2691,11 +2691,11 @@ f_init(); f_global_init_ptp(); - var template (value) PDU_BSSGP pdu_tx := t_BVC_FC_BVC(10240, 2000, 1024, 1000, '01'O); + var template (value) PDU_BSSGP pdu_tx := ts_BVC_FC_BVC(10240, 2000, 1024, 1000, '01'O); /* we cannot use pdu_tx as there are some subtle differences in the length field :/ */ var template (present) PDU_BSSGP pdu_rx := tr_BVC_FC_BVC(10240, 2000, 1024, 1000, '01'O); - var template (omit) PDU_BSSGP ack_tx := - t_BVC_FC_BVC_ACK(pdu_tx.pDU_BSSGP_FLOW_CONTROL_BVC.tag.unstructured_Value); + var template (value) PDU_BSSGP ack_tx := + ts_BVC_FC_BVC_ACK(pdu_tx.pDU_BSSGP_FLOW_CONTROL_BVC.tag.unstructured_Value); /* Send a FC-BVC from BSS to gbproxy, expect an ACK in response */ G_PCU[0].send(pdu_tx); @@ -3030,11 +3030,11 @@ cont_tx := ts_RAN_Information_Error_RIM_Container(ts_RIM_Application_Identity(RIM_APP_ID_NACC), ts_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), - omit, valueof(t_BVC_UNBLOCK(23))); + omit, valueof(ts_BVC_UNBLOCK(23))); cont_rx := tr_RAN_Information_Error_RIM_Container(tr_RIM_Application_Identity(RIM_APP_ID_NACC), - t_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), - omit, enc_PDU_BSSGP(valueof(t_BVC_UNBLOCK(23)))); + ts_BSSGP_CAUSE(BSSGP_CAUSE_EQUIMENT_FAILURE), + omit, enc_PDU_BSSGP(valueof(tr_BVC_UNBLOCK(23)))); f_rim_pcu2sgsn(ts_PDU_BSSGP_RAN_INFORMATION_ERROR(dst := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_sgsn), src := ts_RIM_Routing_Information(RIM_ADDR_GERAN_CELL_ID, ra_pcu), diff --git a/library/BSSGP_Emulation.ttcnpp b/library/BSSGP_Emulation.ttcnpp index 4b93a26..1f32cc2 100644 --- a/library/BSSGP_Emulation.ttcnpp +++ b/library/BSSGP_Emulation.ttcnpp @@ -439,16 +439,16 @@ } /* any BLOCK or UNBLOCK for the SIGNALING BVCI are illegal */ - [] BSCP.receive(f_BnsUdInd(t_BVC_BLOCK(0, ?), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_BLOCK(0, ?), 0)) -> value udi { setverdict(fail, "Rx BVC-BLOCK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_UNBLOCK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-UNBLOCK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_BLOCK_ACK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_BLOCK_ACK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-BLOCK-ACK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK_ACK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_UNBLOCK_ACK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-UNBLOCK-ACK illegal for BVCI=0: ", udi); } @@ -495,21 +495,21 @@ } /* any BLOCK or UNBLOCK for the SIGNALING BVCI are illegal */ - [] BSCP.receive(f_BnsUdInd(t_BVC_BLOCK(0, ?), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_BLOCK(0, ?), 0)) -> value udi { setverdict(fail, "Rx BVC-BLOCK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_UNBLOCK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-UNBLOCK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_BLOCK_ACK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_BLOCK_ACK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-BLOCK-ACK illegal for BVCI=0: ", udi); } - [] BSCP.receive(f_BnsUdInd(t_BVC_UNBLOCK_ACK(0), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_UNBLOCK_ACK(0), 0)) -> value udi { setverdict(fail, "Rx BVC-UNBLOCK-ACK illegal for BVCI=0: ", udi); } /* Respond to BLOCK for wrong BVCI */ - [] BSCP.receive(f_BnsUdInd(t_BVC_BLOCK(?, ?), 0)) -> value udi { + [] BSCP.receive(f_BnsUdInd(tr_BVC_BLOCK(?, ?), 0)) -> value udi { setverdict(fail, "Rx BVC-BLOCK for unknown BVCI"); BSCP.send(f_BnsUdReq(ts_BSSGP_STATUS(0, BSSGP_CAUSE_BVCI_UNKNOWN, udi.bssgp), 0, 0)); } @@ -1015,13 +1015,13 @@ } private function f_ptp_sendUnblock() runs on BSSGP_BVC_CT { - BVC.send(ts_ptp_BnsUdReq(t_BVC_UNBLOCK(g_cfg.bvci), 0, g_bvc_lsp)); + BVC.send(ts_ptp_BnsUdReq(ts_BVC_UNBLOCK(g_cfg.bvci), 0, g_bvc_lsp)); g_t1_waits_for_block_ack := false; g_T1.start; } private function f_ptp_sendBlock(BssgpCause cause) runs on BSSGP_BVC_CT { - BVC.send(ts_ptp_BnsUdReq(t_BVC_BLOCK(g_cfg.bvci, cause), 0, g_bvc_lsp)); + BVC.send(ts_ptp_BnsUdReq(ts_BVC_BLOCK(g_cfg.bvci, cause), 0, g_bvc_lsp)); g_t1_waits_for_block_ack := true; g_T1.start; g_last_block_cause := cause; @@ -1055,14 +1055,14 @@ private altstep as_ptp_blocked() runs on BSSGP_BVC_CT { var NsUnitdataIndication udi; - [g_T1.running and not g_t1_waits_for_block_ack] BVC.receive(tr_ptp_BnsUdInd(t_BVC_UNBLOCK_ACK(g_cfg.bvci), 0)) { + [g_T1.running and not g_t1_waits_for_block_ack] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_UNBLOCK_ACK(g_cfg.bvci), 0)) { g_T1.stop; f_ptp_change_state(BVC_S_UNBLOCKED); } /* Inbound BVC-UNBLOCK from peer */ - [g_sgsn_role] BVC.receive(tr_ptp_BnsUdInd(t_BVC_UNBLOCK(g_cfg.bvci), 0)) { - BVC.send(ts_ptp_BnsUdReq(t_BVC_UNBLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); + [g_sgsn_role] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_UNBLOCK(g_cfg.bvci), 0)) { + BVC.send(ts_ptp_BnsUdReq(ts_BVC_UNBLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); f_ptp_change_state(BVC_S_UNBLOCKED); } @@ -1104,17 +1104,17 @@ #endif /* bogus unblock, just respond with ACK */ - [] BVC.receive(tr_ptp_BnsUdInd(t_BVC_UNBLOCK(g_cfg.bvci), 0)) -> value udi { - BVC.send(ts_ptp_BnsUdReq(t_BVC_UNBLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); + [] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_UNBLOCK(g_cfg.bvci), 0)) -> value udi { + BVC.send(ts_ptp_BnsUdReq(ts_BVC_UNBLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); } /* Respond to BLOCK with BLOCK-ACK + change state */ - [] BVC.receive(tr_ptp_BnsUdInd(t_BVC_BLOCK(g_cfg.bvci, ?), 0)) -> value udi { - BVC.send(ts_ptp_BnsUdReq(t_BVC_BLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); + [] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_BLOCK(g_cfg.bvci, ?), 0)) -> value udi { + BVC.send(ts_ptp_BnsUdReq(ts_BVC_BLOCK_ACK(g_cfg.bvci), 0, g_bvc_lsp)); g_T1.stop; f_ptp_change_state(BVC_S_BLOCKED); } /* BLOCK-ACK before T1 timeout: mark as blocked */ - [g_T1.running and g_t1_waits_for_block_ack] BVC.receive(tr_ptp_BnsUdInd(t_BVC_BLOCK_ACK(g_cfg.bvci), 0)) -> value udi { + [g_T1.running and g_t1_waits_for_block_ack] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_BLOCK_ACK(g_cfg.bvci), 0)) -> value udi { g_T1.stop; f_ptp_change_state(BVC_S_BLOCKED); } @@ -1134,11 +1134,11 @@ } else { /* simply acknowledge all per-BVC Flow Control Messages */ var OCT1 tag := udi.bssgp.pDU_BSSGP_FLOW_CONTROL_BVC.tag.unstructured_Value; - BVC.send(ts_ptp_BnsUdReq(t_BVC_FC_BVC_ACK(tag), g_cfg.bvci, g_bvc_lsp)); + BVC.send(ts_ptp_BnsUdReq(ts_BVC_FC_BVC_ACK(tag), g_cfg.bvci, g_bvc_lsp)); } } - [not g_sgsn_role] BVC.receive(tr_ptp_BnsUdInd(t_BVC_FC_BVC_ACK(?), g_cfg.bvci)) -> value udi { + [not g_sgsn_role] BVC.receive(tr_ptp_BnsUdInd(tr_BVC_FC_BVC_ACK(?), g_cfg.bvci)) -> value udi { if (GLOBAL.checkstate("Connected")) { GLOBAL.send(udi.bssgp); } else { diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn index 82f2aca..687a073 100644 --- a/library/Osmocom_Gb_Types.ttcn +++ b/library/Osmocom_Gb_Types.ttcn @@ -816,7 +816,7 @@ BSSGP_CAUSE_NOT_ALL_REQUESTED_PFC_CREATED ('3c'H) } with { variant "FIELDLENGTH(8)" }; - private function t_FLUSH_ACTION(template OCT1 act) + private function tr_FLUSH_ACTION(template OCT1 act) return template Flush_Action { var template Flush_Action r; if (istemplatekind(act, "omit")) { @@ -835,7 +835,16 @@ return r; } } - private function t_NO_OCT_AFF(template integer oct_aff) + template (value) Flush_Action ts_FLUSH_ACTION(template (value) OCT1 act) := { + iEI := '0C'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + actionValue := act + } + + private function tr_NO_OCT_AFF(template integer oct_aff) return template Number_of_octets_affected { var template Number_of_octets_affected r; if (istemplatekind(oct_aff, "omit")) { @@ -854,8 +863,16 @@ return r; } } + template (value) Number_of_octets_affected ts_NO_OCT_AFF(template (value) integer oct_aff) := { + iEI := '25'O, + ext := '1'B, + lengthIndicator := { + length1 := 3 + }, + number_of_octets_transfered_or_deleted := int2oct(valueof(oct_aff), 3) + } - private function t_LLC_FRAMES_DISCARDED(template integer frames_discarded) + private function tr_LLC_FRAMES_DISCARDED(template integer frames_discarded) return template LLC_Frames_Discarded { var template LLC_Frames_Discarded r; if (istemplatekind(frames_discarded, "omit")) { @@ -874,8 +891,17 @@ return r; } } + template (value) LLC_Frames_Discarded ts_LLC_FRAMES_DISCARDED(template (value) integer frames_discarded) := { + iEI := '0F'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + number_of_frames_discarded := int2hex(valueof(frames_discarded), 2) + } - private function t_BSSGP_BVCI(template BssgpBvci bvci) + + private function tr_BSSGP_BVCI(template BssgpBvci bvci) return template BVCI { var template BVCI r; if (istemplatekind(bvci, "omit")) { @@ -894,7 +920,24 @@ return r; } } - private function t_BSSGP_NSEI(template Nsei nsei) + template (value) BVCI ts_BSSGP_BVCI(template (value) BssgpBvci bvci) := { + iEI := '04'O, + ext := '1'B, + lengthIndicator := { + length1 := 2 + }, + unstructured_value := int2oct(valueof(bvci), 2) + } + private function f_ts_BSSGP_BVCI(template (omit) BssgpBvci bvci) + return template (omit) BVCI { + if (istemplatekind(bvci, "omit")) { + return omit; + } else { + return ts_BSSGP_BVCI(valueof(bvci)); + } + } + + private function t_BSSGP_NSEI(template Nsei nsei) return template NSEI_BSSGP { var template NSEI_BSSGP r; if (istemplatekind(nsei, "omit")) { @@ -913,6 +956,22 @@ return r; } } + template (value) NSEI_BSSGP ts_BSSGP_NSEI(template (value) Nsei nsei) := { + iEI:= '3E'O, + ext := '1'B, + lengthIndicator := { + length1 := 2 + }, + nSEI := int2oct(valueof(nsei), 2) + } + private function f_ts_BSSGP_NSEI(template (omit) Nsei nsei) + return template (omit) NSEI_BSSGP { + if (istemplatekind(nsei, "omit")) { + return omit; + } else { + return ts_BSSGP_NSEI(valueof(nsei)); + } + } template (value) TLLI_BSSGP ts_BSSGP_TLLI(template (value) GprsTlli tlli) := { iEI := '1F'O, @@ -922,7 +981,7 @@ }, tLLI_Value := tlli } - template TLLI_BSSGP tr_BSSGP_TLLI(template GprsTlli tlli) := { + template (present) TLLI_BSSGP tr_BSSGP_TLLI(template (present) GprsTlli tlli) := { iEI := '1F'O, ext := '1'B, lengthIndicator := { @@ -964,7 +1023,7 @@ suspend_Reference_Number_value := susp_ref } - template IMSI_BSSGP tr_BSSGP_IMSI(template hexstring imsi) := { + template (present) IMSI_BSSGP tr_BSSGP_IMSI(template (present) hexstring imsi) := { iEI := '0D'O, ext := '1'B, lengthIndicator := ?, @@ -973,7 +1032,7 @@ digits := imsi } - template IMSI_BSSGP ts_BSSGP_IMSI(hexstring imsi) := { + template (value) IMSI_BSSGP ts_BSSGP_IMSI(hexstring imsi) := { iEI := '0D'O, ext := '1'B, lengthIndicator := { length1 := 0 /* overwritten */ }, @@ -1066,7 +1125,7 @@ } return ret; } - function t_BSSGP_CAUSE(template BssgpCause cause) return template Cause_BSSGP { + function tr_BSSGP_CAUSE(template BssgpCause cause) return template Cause_BSSGP { var template Cause_BSSGP ret; ret.iEI := '07'O; ret.ext := '1'B; @@ -1079,7 +1138,7 @@ return ret; } - function t_BSSGP_IE_CellId(template BssgpCellId cid) return template Cell_Identifier { + function tr_BSSGP_IE_CellId(template BssgpCellId cid) return template Cell_Identifier { var template Cell_Identifier ret := { iEI := '08'O, ext := '1'B, @@ -1122,6 +1181,27 @@ } return ret; } + template (value) Cell_Identifier ts_BSSGP_IE_CellId(template (value) BssgpCellId cid) := { + iEI := '08'O, + ext := '1'B, + lengthIndicator := { length1 := 8 }, + mccDigit1 := cid.ra_id.lai.mcc_mnc[0], + mccDigit2 := cid.ra_id.lai.mcc_mnc[1], + mccDigit3 := cid.ra_id.lai.mcc_mnc[2], + mncDigit3 := cid.ra_id.lai.mcc_mnc[3], + mncDigit1 := cid.ra_id.lai.mcc_mnc[4], + mncDigit2 := cid.ra_id.lai.mcc_mnc[5], + lac := int2oct(valueof(cid.ra_id.lai.lac), 2), + rac := int2oct(valueof(cid.ra_id.rac), 1), + cI_value := int2oct(valueof(cid.cell_id), 2) + } + function f_ts_BSSGP_IE_CellId(template (omit) BssgpCellId cid) return template (omit) Cell_Identifier { + if (istemplatekind(cid, "omit")) { + return omit; + } else { + return ts_BSSGP_IE_CellId(valueof(cid)); + } + } template (value) Tag ts_BSSGP_IE_Tag(OCT1 tag) := { iEI := '1E'O, @@ -1161,12 +1241,12 @@ /* 10.4.12 */ template PDU_BSSGP ts_BVC_RESET(BssgpCause cause, BssgpBvci bvci, - template BssgpCellId cell_id) := { + template (omit) BssgpCellId cell_id) := { pDU_BSSGP_BVC_RESET := { bssgpPduType := '22'O, - bVCI := t_BSSGP_BVCI(bvci), + bVCI := ts_BSSGP_BVCI(bvci), cause := ts_BSSGP_CAUSE(cause), - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + cell_Identifier := f_ts_BSSGP_IE_CellId(cell_id), feature_bitmap := omit, extended_Feature_Bitmap := omit } @@ -1175,20 +1255,20 @@ template BssgpCellId cell_id) := { pDU_BSSGP_BVC_RESET := { bssgpPduType := '22'O, - bVCI := t_BSSGP_BVCI(bvci), - cause := t_BSSGP_CAUSE(cause), - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + bVCI := tr_BSSGP_BVCI(bvci), + cause := tr_BSSGP_CAUSE(cause), + cell_Identifier := tr_BSSGP_IE_CellId(cell_id), feature_bitmap := *, extended_Feature_Bitmap := * } } /* 10.4.13 */ - template PDU_BSSGP ts_BVC_RESET_ACK(BssgpBvci bvci, template BssgpCellId cell_id) := { + template PDU_BSSGP ts_BVC_RESET_ACK(BssgpBvci bvci, template (omit) BssgpCellId cell_id) := { pDU_BSSGP_BVC_RESET_ACK := { bssgpPduType := '23'O, - bVCI := t_BSSGP_BVCI(bvci), - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + bVCI := ts_BSSGP_BVCI(bvci), + cell_Identifier := f_ts_BSSGP_IE_CellId(cell_id), feature_bitmap := omit, extended_Feature_Bitmap := omit } @@ -1196,8 +1276,8 @@ template PDU_BSSGP tr_BVC_RESET_ACK(template BssgpBvci bvci, template BssgpCellId cell_id) := { pDU_BSSGP_BVC_RESET_ACK := { bssgpPduType := '23'O, - bVCI := t_BSSGP_BVCI(bvci), - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + bVCI := tr_BSSGP_BVCI(bvci), + cell_Identifier := tr_BSSGP_IE_CellId(cell_id), feature_bitmap := *, extended_Feature_Bitmap := * } @@ -1205,40 +1285,67 @@ /* 10.4.10 */ - template PDU_BSSGP t_BVC_UNBLOCK(template BssgpBvci bvci) := { + template (present) PDU_BSSGP tr_BVC_UNBLOCK(template (present) BssgpBvci bvci) := { pDU_BSSGP_BVC_UNBLOCK := { bssgpPduType := '24'O, - bVCI := t_BSSGP_BVCI(bvci) + bVCI := tr_BSSGP_BVCI(bvci) + } + } + template (value) PDU_BSSGP ts_BVC_UNBLOCK(template (value) BssgpBvci bvci) := { + pDU_BSSGP_BVC_UNBLOCK := { + bssgpPduType := '24'O, + bVCI := ts_BSSGP_BVCI(bvci) } } /* 10.4.11 */ - template PDU_BSSGP t_BVC_UNBLOCK_ACK(template BssgpBvci bvci) := { + template (present) PDU_BSSGP tr_BVC_UNBLOCK_ACK(template (present) BssgpBvci bvci) := { pDU_BSSGP_BVC_UNBLOCK_ACK := { bssgpPduType := '25'O, - bVCI := t_BSSGP_BVCI(bvci) + bVCI := tr_BSSGP_BVCI(bvci) + } + } + template (value) PDU_BSSGP ts_BVC_UNBLOCK_ACK(template (value) BssgpBvci bvci) := { + pDU_BSSGP_BVC_UNBLOCK_ACK := { + bssgpPduType := '25'O, + bVCI := ts_BSSGP_BVCI(bvci) } } /* 10.4.8 */ - template PDU_BSSGP t_BVC_BLOCK(template BssgpBvci bvci, template BssgpCause cause) := { + template (present) PDU_BSSGP tr_BVC_BLOCK(template (present) BssgpBvci bvci, + template (present) BssgpCause cause) := { pDU_BSSGP_BVC_BLOCK := { bssgpPduType := '20'O, - bVCI := t_BSSGP_BVCI(bvci), - cause := t_BSSGP_CAUSE(cause) + bVCI := tr_BSSGP_BVCI(bvci), + cause := tr_BSSGP_CAUSE(cause) + } + } + template (value) PDU_BSSGP ts_BVC_BLOCK(template (value) BssgpBvci bvci, + template (value) BssgpCause cause) := { + pDU_BSSGP_BVC_BLOCK := { + bssgpPduType := '20'O, + bVCI := ts_BSSGP_BVCI(bvci), + cause := ts_BSSGP_CAUSE(cause) } } /* 10.4.9 */ - template PDU_BSSGP t_BVC_BLOCK_ACK(template BssgpBvci bvci) := { + template (present) PDU_BSSGP tr_BVC_BLOCK_ACK(template (present) BssgpBvci bvci) := { pDU_BSSGP_BVC_BLOCK_ACK := { bssgpPduType := '21'O, - bVCI := t_BSSGP_BVCI(bvci) + bVCI := tr_BSSGP_BVCI(bvci) + } + } + template (value) PDU_BSSGP ts_BVC_BLOCK_ACK(template (value) BssgpBvci bvci) := { + pDU_BSSGP_BVC_BLOCK_ACK := { + bssgpPduType := '21'O, + bVCI := ts_BSSGP_BVCI(bvci) } } /* 10.4.4 */ - template PDU_BSSGP t_BVC_FC_BVC(uint16_t bmax, uint16_t bucket_leak_rate, + template (value) PDU_BSSGP ts_BVC_FC_BVC(uint16_t bmax, uint16_t bucket_leak_rate, uint16_t bmax_default_ms, uint16_t r_default_ms, OCT1 tag) := { pDU_BSSGP_FLOW_CONTROL_BVC := { bssgpPduType := '26'O, @@ -1256,7 +1363,7 @@ lengthIndicator := { length1 := 2 }, - bmax := f_oct_or_wc(bmax, 2) + bmax := int2oct(bmax, 2) }, bucket_Leak_Rate := { iEI := '03'O, @@ -1264,7 +1371,7 @@ lengthIndicator := { length1 := 2 }, - r_Value := f_oct_or_wc(bucket_leak_rate, 2) + r_Value := int2oct(bucket_leak_rate, 2) }, bmax_default_MS := { iEI := '01'O, @@ -1272,7 +1379,7 @@ lengthIndicator := { length1 := 2 }, - bmax := f_oct_or_wc(bmax_default_ms, 2) + bmax := int2oct(bmax_default_ms, 2) }, r_default_MS := { iEI := '1C'O, @@ -1280,7 +1387,7 @@ lengthIndicator := { length1 := 2 }, - r_default_MS_value := f_oct_or_wc(r_default_ms, 2) + r_default_MS_value := int2oct(r_default_ms, 2) }, bucket_Full_Ratio := omit, bVC_Measurement := omit, @@ -1341,7 +1448,20 @@ } /* 10.4.5 */ - template PDU_BSSGP t_BVC_FC_BVC_ACK(template OCT1 tag) := { + template (present) PDU_BSSGP tr_BVC_FC_BVC_ACK(template (present) OCT1 tag) := { + pDU_BSSGP_FLOW_CONTROL_BVC_ACK := { + bssgpPduType := '27'O, + tag := { + iEI := '1E'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + unstructured_Value := tag + } + } + } + template (value) PDU_BSSGP ts_BVC_FC_BVC_ACK(template (value) OCT1 tag) := { pDU_BSSGP_FLOW_CONTROL_BVC_ACK := { bssgpPduType := '27'O, tag := { @@ -1395,7 +1515,7 @@ template (present) OCT1 tag := ?) := { pDU_BSSGP_FLOW_CONTROL_MS := { bssgpPduType := '28'O, - tLLI := ts_BSSGP_TLLI(tlli), + tLLI := tr_BSSGP_TLLI(tlli), tag := { iEI := '1E'O, ext := '1'B, @@ -1460,12 +1580,13 @@ } /* 10.4.14 */ - template PDU_BSSGP ts_BSSGP_STATUS(template (omit) BssgpBvci bvci, template BssgpCause cause, - PDU_BSSGP pdu) := { + template (value) PDU_BSSGP ts_BSSGP_STATUS(template (omit) BssgpBvci bvci, + template (value) BssgpCause cause, + PDU_BSSGP pdu) := { pDU_BSSGP_STATUS := { bssgpPduType := '41'O, - cause := t_BSSGP_CAUSE(cause), - bVCI := t_BSSGP_BVCI(bvci), + cause := ts_BSSGP_CAUSE(cause), + bVCI := f_ts_BSSGP_BVCI(bvci), pDU_in_Error := { iEI := '15'O, ext := '1'B, @@ -1480,8 +1601,8 @@ template octetstring pdu := ?) := { pDU_BSSGP_STATUS := { bssgpPduType := '41'O, - cause := t_BSSGP_CAUSE(cause), - bVCI := t_BSSGP_BVCI(bvci), + cause := tr_BSSGP_CAUSE(cause), + bVCI := tr_BSSGP_BVCI(bvci), pDU_in_Error := { iEI := '15'O, ext := '1'B, @@ -1596,7 +1717,7 @@ peakBitRateGranularity := '00'B } - template QoS_Profile ts_QoS_TLV(template QoS_Profile_V qos) := { + template (value) QoS_Profile ts_QoS_TLV(template (value) QoS_Profile_V qos) := { iEI := '18'O, ext := '1'B, lengthIndicator := { length1 := 3 }, @@ -1608,13 +1729,13 @@ peakBitRateGranularity := qos.peakBitRateGranularity } - template PDU_Lifetime t_DefaultLifetime(uint16_t delay := 65535) := { + template (value) PDU_Lifetime t_DefaultLifetime(uint16_t delay := 65535) := { iEI := '16'O, ext := '1'B, lengthIndicator := { length1 := 2 }, - delay_Value := f_oct_or_wc(delay, 2) + delay_Value := int2oct(delay, 2) } template DRX_Parameters t_defaultDRXparam := { @@ -1662,7 +1783,7 @@ } /* 10.2.1 */ - template PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu, + template (value) PDU_BSSGP ts_BSSGP_DL_UD(GprsTlli tlli, octetstring pdu, template (omit) MSRadioAccessCapabilityV_BSSGP racap := omit, template (omit) IMSI_BSSGP imsi := omit) := { pDU_BSSGP_DL_UNITDATA := { @@ -1693,8 +1814,8 @@ initialLLC_PDU := omit } } - template PDU_BSSGP tr_BSSGP_DL_UD(template (present) GprsTlli tlli, template (present) octetstring pdu, - template IMSI_BSSGP imsi := omit) := { + template (present) PDU_BSSGP tr_BSSGP_DL_UD(template (present) GprsTlli tlli, template (present) octetstring pdu, + template (omit) IMSI_BSSGP imsi := omit) := { pDU_BSSGP_DL_UNITDATA := { bssgpPduType := '00'O, tLLI_current := tlli, @@ -1725,12 +1846,12 @@ } /* 10.2.2 */ - template PDU_BSSGP ts_BSSGP_UL_UD(GprsTlli tlli, BssgpCellId cell_id, octetstring payload) := { + template (value) PDU_BSSGP ts_BSSGP_UL_UD(GprsTlli tlli, BssgpCellId cell_id, octetstring payload) := { pDU_BSSGP_UL_UNITDATA := { bssgpPduType := '01'O, tLLI := tlli, qoS_Profile := t_defaultQos, - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + cell_Identifier := ts_BSSGP_IE_CellId(cell_id), pFI := omit, lSA_Identifier_List := omit, redirect_Attempt_Flag := omit, @@ -1749,7 +1870,7 @@ bssgpPduType := '01'O, tLLI := tlli, qoS_Profile := ?, - cell_Identifier := t_BSSGP_IE_CellId(cell_id), + cell_Identifier := tr_BSSGP_IE_CellId(cell_id), pFI := *, lSA_Identifier_List := *, redirect_Attempt_Flag := *, @@ -1770,7 +1891,7 @@ iMSI := ?, dRX_Parameters := ?, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) }, tLLI := *, channel_needed := *, @@ -1779,13 +1900,13 @@ global_CN_Id := * } } - template PDU_BSSGP ts_BSSGP_CS_PAGING_IMSI(BssgpBvci bvci, hexstring imsi) := { + template (value) PDU_BSSGP ts_BSSGP_CS_PAGING_IMSI(BssgpBvci bvci, hexstring imsi) := { pDU_BSSGP_PAGING_CS := { bssgpPduType := '07'O, iMSI := ts_BSSGP_IMSI(imsi), dRX_Parameters := t_defaultDRXparam, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) }, tLLI := omit, channel_needed := omit, @@ -1794,13 +1915,13 @@ global_CN_Id := omit } } - template PDU_BSSGP ts_BSSGP_CS_PAGING_PTMSI(BssgpBvci bvci, hexstring imsi, GsmTmsi tmsi) := { + template (value) PDU_BSSGP ts_BSSGP_CS_PAGING_PTMSI(BssgpBvci bvci, hexstring imsi, GsmTmsi tmsi) := { pDU_BSSGP_PAGING_CS := { bssgpPduType := '07'O, iMSI := ts_BSSGP_IMSI(imsi), dRX_Parameters := t_defaultDRXparam, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) }, tLLI := omit, channel_needed := omit, @@ -1817,7 +1938,7 @@ iMSI := ?, dRX_Parameters := *, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := tr_BSSGP_BVCI(bvci) }, pFI := *, aBQP := *, @@ -1826,13 +1947,13 @@ eDRX_Paremeters := * } } - template PDU_BSSGP ts_BSSGP_PS_PAGING_IMSI(BssgpBvci bvci, hexstring imsi) := { + template (value) PDU_BSSGP ts_BSSGP_PS_PAGING_IMSI(BssgpBvci bvci, hexstring imsi) := { pDU_BSSGP_PAGING_PS := { bssgpPduType := '06'O, iMSI := ts_BSSGP_IMSI(imsi), dRX_Parameters := omit, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) }, pFI := omit, aBQP := omit, @@ -1841,13 +1962,13 @@ eDRX_Paremeters := omit } } - template PDU_BSSGP ts_BSSGP_PS_PAGING_PTMSI(BssgpBvci bvci, hexstring imsi, GsmTmsi tmsi) := { + template (value) PDU_BSSGP ts_BSSGP_PS_PAGING_PTMSI(BssgpBvci bvci, hexstring imsi, GsmTmsi tmsi) := { pDU_BSSGP_PAGING_PS := { bssgpPduType := '06'O, iMSI := ts_BSSGP_IMSI(imsi), dRX_Parameters := omit, paging_Field4 := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) }, pFI := omit, aBQP := omit, @@ -1877,7 +1998,7 @@ } template (value) Paging_Field4 ts_BssgpP4Bvci(BssgpBvci bvci) := { - bVCI := t_BSSGP_BVCI(bvci) + bVCI := ts_BSSGP_BVCI(bvci) } template (value) Location_Area ts_BSSGP_LA_ID(GSM_Types.LocationAreaIdentification input) := { @@ -1941,7 +2062,7 @@ routeing_Area := ts_BSSGP_RA_ID(ra_id) } } - template PDU_BSSGP tr_BSSGP_SUSPEND(template GprsTlli tlli, RoutingAreaIdentification ra_id) := { + template PDU_BSSGP tr_BSSGP_SUSPEND(template (present) GprsTlli tlli, RoutingAreaIdentification ra_id) := { pDU_BSSGP_SUSPEND := { bssgpPduType := '0B'O, tLLI := tr_BSSGP_TLLI(tlli), @@ -1985,7 +2106,7 @@ bssgpPduType := '0D'O, tLLI := tr_BSSGP_TLLI(tlli), routeing_Area := ts_BSSGP_RA_ID(ra_id), - cause := t_BSSGP_CAUSE(cause) + cause := tr_BSSGP_CAUSE(cause) } } @@ -2000,7 +2121,7 @@ suspend_Reference_Number := ts_BSSGP_SUSP_REF(susp_ref) } } - template PDU_BSSGP tr_BSSGP_RESUME(template GprsTlli tlli, RoutingAreaIdentification ra_id, + template PDU_BSSGP tr_BSSGP_RESUME(template (present) GprsTlli tlli, RoutingAreaIdentification ra_id, template OCT1 susp_ref) := { pDU_BSSGP_RESUME := { bssgpPduType := '0E'O, @@ -2019,7 +2140,7 @@ routeing_Area := ts_BSSGP_RA_ID(ra_id) } } - template PDU_BSSGP tr_BSSGP_RESUME_ACK(template GprsTlli tlli, + template PDU_BSSGP tr_BSSGP_RESUME_ACK(template (present) GprsTlli tlli, RoutingAreaIdentification ra_id) := { pDU_BSSGP_RESUME_ACK := { bssgpPduType := '0F'O, @@ -2038,14 +2159,14 @@ cause := ts_BSSGP_CAUSE(cause) } } - template PDU_BSSGP tr_BSSGP_RESUME_NACK(template GprsTlli tlli, + template PDU_BSSGP tr_BSSGP_RESUME_NACK(template (present) GprsTlli tlli, RoutingAreaIdentification ra_id, template BssgpCause cause) := { pDU_BSSGP_RESUME_NACK := { bssgpPduType := '10'O, tLLI := tr_BSSGP_TLLI(tlli), routeing_Area := ts_BSSGP_RA_ID(ra_id), - cause := t_BSSGP_CAUSE(cause) + cause := tr_BSSGP_CAUSE(cause) } } @@ -2181,7 +2302,7 @@ if (istemplatekind(mccmnc, "omit")) { return omit; } else { - return ts_BSSGP_PlmnId(mccmnc); + return ts_BSSGP_PlmnId(valueof(mccmnc)); } } private function f_tr_BSSGP_PlmnId(template BcdMccMnc mccmnc) @@ -2193,7 +2314,7 @@ } else if (istemplatekind(mccmnc, "?")) { return ?; } else { - return ts_BSSGP_PlmnId(mccmnc); + return ts_BSSGP_PlmnId(valueof(mccmnc)); } } @@ -2220,20 +2341,20 @@ pDU_BSSGP_FLUSH_LL := { bssgpPduType := '2A'O, tLLI := ts_BSSGP_TLLI(tlli), - bVCI_old := t_BSSGP_BVCI(bvci_old), - bVCI_new := t_BSSGP_BVCI(bvci_new), - nSEI := t_BSSGP_NSEI(nsei) + bVCI_old := ts_BSSGP_BVCI(bvci_old), + bVCI_new := f_ts_BSSGP_BVCI(bvci_new), + nSEI := f_ts_BSSGP_NSEI(nsei) } } - template PDU_BSSGP tr_BSSGP_FLUSH_LL(template GprsTlli tlli, template BssgpBvci bvci_old, + template PDU_BSSGP tr_BSSGP_FLUSH_LL(template (present) GprsTlli tlli, template BssgpBvci bvci_old, template (omit) BssgpBvci bvci_new := omit, template (omit) Nsei nsei := omit) := { pDU_BSSGP_FLUSH_LL := { bssgpPduType := '2A'O, tLLI := tr_BSSGP_TLLI(tlli), - bVCI_old := t_BSSGP_BVCI(bvci_old), - bVCI_new := t_BSSGP_BVCI(bvci_new), - nSEI := t_BSSGP_NSEI(nsei) + bVCI_old := tr_BSSGP_BVCI(bvci_old), + bVCI_new := f_ts_BSSGP_BVCI(bvci_new), + nSEI := f_ts_BSSGP_NSEI(nsei) } } @@ -2245,23 +2366,23 @@ pDU_BSSGP_FLUSH_LL_ACK := { bssgpPduType := '2B'O, tLLI := ts_BSSGP_TLLI(tlli), - flush_Action := t_FLUSH_ACTION(act), - bVCI_new := t_BSSGP_BVCI(bvci_new), - number_of_octets_affected := t_NO_OCT_AFF(oct_affected), - nSEI := t_BSSGP_NSEI(nsei) + flush_Action := ts_FLUSH_ACTION(act), + bVCI_new := f_ts_BSSGP_BVCI(bvci_new), + number_of_octets_affected := ts_NO_OCT_AFF(oct_affected), + nSEI := f_ts_BSSGP_NSEI(nsei) } } - template PDU_BSSGP tr_BSSGP_FLUSH_LL_ACK(template GprsTlli tlli, template OCT1 act, + template PDU_BSSGP tr_BSSGP_FLUSH_LL_ACK(template (present) GprsTlli tlli, template OCT1 act, template integer oct_affected, template (omit) BssgpBvci bvci_new := omit, template (omit) Nsei nsei := omit) := { pDU_BSSGP_FLUSH_LL_ACK := { bssgpPduType := '2B'O, - tLLI := ts_BSSGP_TLLI(tlli), - flush_Action := t_FLUSH_ACTION(act), - bVCI_new := t_BSSGP_BVCI(bvci_new), - number_of_octets_affected := t_NO_OCT_AFF(oct_affected), - nSEI := t_BSSGP_NSEI(nsei) + tLLI := tr_BSSGP_TLLI(tlli), + flush_Action := tr_FLUSH_ACTION(act), + bVCI_new := f_ts_BSSGP_BVCI(bvci_new), + number_of_octets_affected := tr_NO_OCT_AFF(oct_affected), + nSEI := f_ts_BSSGP_NSEI(nsei) } } @@ -2272,21 +2393,21 @@ pDU_BSSGP_LLC_DISCARDED := { bssgpPduType := '2C'O, tLLI := ts_BSSGP_TLLI(tlli), - lLC_Frames_Discarded := t_LLC_FRAMES_DISCARDED(frames_discarded), - bVCI := t_BSSGP_BVCI(bvci), - number_of_octets_deleted := t_NO_OCT_AFF(oct_deleted), + lLC_Frames_Discarded := ts_LLC_FRAMES_DISCARDED(frames_discarded), + bVCI := ts_BSSGP_BVCI(bvci), + number_of_octets_deleted := ts_NO_OCT_AFF(oct_deleted), pFI := omit } } - template PDU_BSSGP tr_BSSGP_LLC_DISCARDED(template GprsTlli tlli, template integer frames_discarded, + template PDU_BSSGP tr_BSSGP_LLC_DISCARDED(template (present) GprsTlli tlli, template integer frames_discarded, template BssgpBvci bvci, template integer oct_deleted) := { pDU_BSSGP_LLC_DISCARDED := { bssgpPduType := '2C'O, - tLLI := ts_BSSGP_TLLI(tlli), - lLC_Frames_Discarded := t_LLC_FRAMES_DISCARDED(frames_discarded), - bVCI := t_BSSGP_BVCI(bvci), - number_of_octets_deleted := t_NO_OCT_AFF(oct_deleted), + tLLI := tr_BSSGP_TLLI(tlli), + lLC_Frames_Discarded := tr_LLC_FRAMES_DISCARDED(frames_discarded), + bVCI := tr_BSSGP_BVCI(bvci), + number_of_octets_deleted := tr_NO_OCT_AFF(oct_deleted), pFI := * } } @@ -2304,7 +2425,7 @@ template MSRadioAccessCapabilityV_BSSGP racap) := { pDU_BSSGP_RA_CAPABILITY := { bssgpPduType := '02'O, - tLLI := ts_BSSGP_TLLI(tlli), + tLLI := tr_BSSGP_TLLI(tlli), mS_Radio_Access_Capability := tr_BSSGP_IE_MSRAcap(racap) } } @@ -2319,10 +2440,10 @@ } } template (present) PDU_BSSGP tr_BSSGP_RA_CAP_UPD(template (present) GprsTlli tlli, - template OCT1 tag) := { + template (present) OCT1 tag) := { pDU_BSSGP_RA_CAPABILITY_UPDATE := { bssgpPduType := '08'O, - tLLI := ts_BSSGP_TLLI(tlli), + tLLI := tr_BSSGP_TLLI(tlli), tag := tr_BSSGP_IE_Tag(tag) } } @@ -2342,11 +2463,11 @@ } } template (present) PDU_BSSGP - tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template OCT1 tag, template (present) OCT1 cause, + tr_BSSGP_RA_CAP_UPD_ACK(template (present) GprsTlli tlli, template (present) OCT1 tag, template (present) OCT1 cause, template MSRadioAccessCapabilityV_BSSGP racap := omit) := { pDU_BSSGP_RA_CAPABILITY_UPDATE_ACK := { bssgpPduType := '09'O, - tLLI := ts_BSSGP_TLLI(tlli), + tLLI := tr_BSSGP_TLLI(tlli), tag := tr_BSSGP_IE_Tag(tag), iMSI := omit, rA_Cap_UPDATE_CAUSE := tr_BSSGP_IE_RACU_Cause(cause), @@ -2375,7 +2496,7 @@ return ret; } function tr_BSSGP_RADIO_CAUSE(template BssgpRadioCause cause) return template (present) Radio_Cause { - var template Radio_Cause ret; + var template (present) Radio_Cause ret; ret.iEI := '19'O; ret.ext := '1'B; ret.lengthIndicator := { length1 := 1 }; @@ -2832,7 +2953,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid) + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid) } template RAN_Information_Request_Application_Container_NACC tr_RAN_Information_Request_Application_Container_NACC(template BssgpCellId cid := ?) := { @@ -2841,7 +2962,7 @@ lengthIndicator := { length1 := ? }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid) + reporting_Cell_Identifier := tr_Cell_Identifier_V(cid) } /* 3GPP TS 48.018 11.3.63.1.2 */ @@ -2852,7 +2973,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid) + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid) } /* 3GPP TS 48.018 11.3.63.1.3 */ @@ -2863,7 +2984,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid) + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid) } /* 3GPP TS 48.018 11.3.63.2.1 */ @@ -2874,7 +2995,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid), + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid), typeBit := bool2bit(psi_type), number_of_SI_PSI := int2bit(si_psi_num, 7), sI_PSI := si_psi @@ -2886,7 +3007,7 @@ ret.iEI := '4E'O; ret.ext := '1'B; ret.lengthIndicator := { length1 := ? }; - ret.reporting_Cell_Identifier := t_Cell_Identifier_V(cid); + ret.reporting_Cell_Identifier := tr_Cell_Identifier_V(cid); if (istemplatekind(psi_type, "*")) { ret.typeBit := *; } else if (istemplatekind(psi_type, "?")) { @@ -2913,7 +3034,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid), + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid), sI3 := si3 } @@ -2925,7 +3046,7 @@ lengthIndicator := { length1 := 0 /* overwritten */ }, - reporting_Cell_Identifier := t_Cell_Identifier_V(cid), + reporting_Cell_Identifier := ts_Cell_Identifier_V(cid), mBMS_data_channel_report := data_ch_report } @@ -3244,7 +3365,7 @@ } template RIM_Routing_Address t_RIM_Routing_Address_cid(template BssgpCellId cid := ?) := { - cell_Identifier := t_Cell_Identifier_V(cid) + cell_Identifier := tr_Cell_Identifier_V(cid) } template RIM_Routing_Address t_RIM_Routing_Address_rncid(template BssgpCellId cid := ?, template integer rnc_id := ?) := { globalRNCID := t_GlobalRNC_ID_BSSGP(cid, rnc_id) @@ -3256,7 +3377,7 @@ eHRPD_SectorID := sector } - function t_Cell_Identifier_V(template BssgpCellId cid) return template Cell_Identifier_V { + function tr_Cell_Identifier_V(template BssgpCellId cid) return template Cell_Identifier_V { var template Cell_Identifier_V ret := { mccDigit1 := ?, mccDigit2 := ?, @@ -3296,6 +3417,17 @@ } return ret; } + template (value) Cell_Identifier_V ts_Cell_Identifier_V(template (value) BssgpCellId cid) := { + mccDigit1 := cid.ra_id.lai.mcc_mnc[0], + mccDigit2 := cid.ra_id.lai.mcc_mnc[1], + mccDigit3 := cid.ra_id.lai.mcc_mnc[2], + mncDigit3 := cid.ra_id.lai.mcc_mnc[3], + mncDigit1 := cid.ra_id.lai.mcc_mnc[4], + mncDigit2 := cid.ra_id.lai.mcc_mnc[5], + lac := int2oct(valueof(cid.ra_id.lai.lac), 2), + rac := int2oct(valueof(cid.ra_id.rac), 1), + cI_value := int2oct(valueof(cid.cell_id), 2) + } function t_GlobalRNC_ID_BSSGP(template BssgpCellId cid, template integer rnc_id) return template GlobalRNC_ID_BSSGP { var template GlobalRNC_ID_BSSGP ret := { diff --git a/library/RAW_NS.ttcnpp b/library/RAW_NS.ttcnpp index 81836c7..2aaa770 100644 --- a/library/RAW_NS.ttcnpp +++ b/library/RAW_NS.ttcnpp @@ -213,9 +213,9 @@ /* Receive a BSSGP UNBLOCK for given BVCI and ACK it */ altstep as_rx_bvc_unblock_tx_ack(BssgpBvci bvci, boolean oneshot := false, integer idx := 0) runs on RAW_NS_CT { var PDU_NS ns_rf; - [] NSCP[idx].receive(tr_NS_UNITDATA(t_SduCtrlB, 0, decmatch t_BVC_UNBLOCK(bvci))) -> value ns_rf { + [] NSCP[idx].receive(tr_NS_UNITDATA(t_SduCtrlB, 0, decmatch tr_BVC_UNBLOCK(bvci))) -> value ns_rf { var PDU_BSSGP bssgp_rx := dec_PDU_BSSGP(ns_rf.pDU_NS_Unitdata.nS_SDU); - var PDU_BSSGP bssgp_tx := valueof(t_BVC_UNBLOCK_ACK(bvci)); + var PDU_BSSGP bssgp_tx := valueof(ts_BVC_UNBLOCK_ACK(bvci)); NSCP[idx].send(ts_NS_UNITDATA(t_SduCtrlB, 0, enc_PDU_BSSGP(bssgp_tx))); if (not oneshot) { repeat; } } @@ -229,7 +229,7 @@ -> value ns_rf { var PDU_BSSGP bssgp_rx := dec_PDU_BSSGP(ns_rf.pDU_NS_Unitdata.nS_SDU); var OCT1 tag := bssgp_rx.pDU_BSSGP_FLOW_CONTROL_BVC.tag.unstructured_Value; - var PDU_BSSGP bssgp_tx := valueof(t_BVC_FC_BVC_ACK(tag)); + var PDU_BSSGP bssgp_tx := valueof(ts_BVC_FC_BVC_ACK(tag)); NSCP[idx].send(ts_NS_UNITDATA(t_SduCtrlB, bvci, enc_PDU_BSSGP(bssgp_tx))); if (not oneshot) { repeat; } } -- To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/22731 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-Change-Id: I3da153ce5e83b231501e74b958fcac9f10c00849 Gerrit-Change-Number: 22731 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pespin at sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: laforge <laforge at osmocom.org> Gerrit-MessageType: merged -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210208/9c2f8526/attachment.htm>