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/.
Harald Welte gerrit-no-reply at lists.osmocom.orgHarald Welte has submitted this change and it was merged. ( https://gerrit.osmocom.org/12940 ) Change subject: Osmocom_Gb_Types: Differentiate send (value) and receive templates ...................................................................... Osmocom_Gb_Types: Differentiate send (value) and receive templates Change-Id: I90400c42d3dff0a1de0022320d76f10ac748a206 --- M library/NS_Emulation.ttcn M library/Osmocom_Gb_Types.ttcn 2 files changed, 96 insertions(+), 34 deletions(-) Approvals: Harald Welte: Looks good to me, approved Jenkins Builder: Verified diff --git a/library/NS_Emulation.ttcn b/library/NS_Emulation.ttcn index ca4d1d6..6915993 100644 --- a/library/NS_Emulation.ttcn +++ b/library/NS_Emulation.ttcn @@ -127,7 +127,7 @@ } private function f_sendReset() runs on NS_CT { - NSCP.send(t_NS_Send(g_conn_id, t_NS_RESET(NS_CAUSE_OM_INTERVENTION, config.nsvci, config.nsei))); + NSCP.send(t_NS_Send(g_conn_id, ts_NS_RESET(NS_CAUSE_OM_INTERVENTION, config.nsvci, config.nsei))); g_state := NSE_S_WAIT_RESET; } @@ -142,7 +142,7 @@ } private function f_sendBlock(NsCause cause) runs on NS_CT { - NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK(cause, config.nsvci))); + NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK(cause, config.nsvci))); Tns_block.start; } @@ -175,19 +175,19 @@ } /* Respond to BLOCK for wrong NSVCI */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, ?))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, ?))) -> value rf { log("Rx NS-BLOCK for unknown NSVCI"); /* FIXME */ } /* Respond to RESET with correct NSEI/NSVCI */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_RESET(?, config.nsvci, config.nsei))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET(?, config.nsvci, config.nsei))) -> value rf { f_change_state(NSE_S_ALIVE_BLOCKED); - NSCP.send(t_NS_Send(g_conn_id, t_NS_RESET_ACK(config.nsvci, config.nsei))); + NSCP.send(t_NS_Send(g_conn_id, ts_NS_RESET_ACK(config.nsvci, config.nsei))); } /* Respond to RESET with wrong NSEI/NSVCI */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_RESET(?, ?, ?))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET(?, ?, ?))) -> value rf { log("Rx NS-RESET for unknown NSEI/NSVCI"); /* FIXME */ } @@ -215,7 +215,7 @@ } } else if (g_state == NSE_S_WAIT_RESET) { alt { - [] NSCP.receive(t_NS_RecvFrom(t_NS_RESET_ACK(config.nsvci, config.nsei))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_RESET_ACK(config.nsvci, config.nsei))) -> value rf { f_change_state(NSE_S_ALIVE_BLOCKED); f_sendAlive(); f_sendUnblock(); @@ -224,8 +224,8 @@ } else if (g_state == NSE_S_ALIVE_BLOCKED) { alt { /* bogus block, just respond with ACK */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, config.nsvci))) -> value rf { - NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK_ACK(config.nsvci))); + [] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, config.nsvci))) -> value rf { + NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK_ACK(config.nsvci))); } /* Respond to UNBLOCK with UNBLOCK-ACK + change state */ [] NSCP.receive(t_NS_RecvFrom(t_NS_UNBLOCK)) -> value rf { @@ -249,16 +249,16 @@ NSCP.send(t_NS_Send(g_conn_id, t_NS_UNBLOCK_ACK)); } /* Respond to BLOCK with BLOCK-ACK + change state */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK(?, config.nsvci))) -> value rf { - NSCP.send(t_NS_Send(g_conn_id, t_NS_BLOCK_ACK(config.nsvci))); + [] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK(?, config.nsvci))) -> value rf { + NSCP.send(t_NS_Send(g_conn_id, ts_NS_BLOCK_ACK(config.nsvci))); Tns_block.stop; f_change_state(NSE_S_ALIVE_BLOCKED); } - [] NSCP.receive(t_NS_RecvFrom(t_NS_BLOCK_ACK(config.nsvci))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_BLOCK_ACK(config.nsvci))) -> value rf { Tns_block.stop; } /* NS-UNITDATA PDU from network to NS-UNITDATA.ind to user */ - [] NSCP.receive(t_NS_RecvFrom(t_NS_UNITDATA(?, ?, ?))) -> value rf { + [] NSCP.receive(t_NS_RecvFrom(tr_NS_UNITDATA(?, ?, ?))) -> value rf { NS_SP.send(t_NsUdInd(config.nsei, oct2int(rf.msg.pDU_NS_Unitdata.bVCI), rf.msg.pDU_NS_Unitdata.nS_SDU)); @@ -266,12 +266,12 @@ /* NS-UNITDATA.req from user to NS-UNITDATA PDU on network */ [] NS_SP.receive(t_NsUdReq(config.nsei, ?, ?, omit)) -> value ud_req { /* using raw octetstring PDU */ - NSCP.send(t_NS_Send(g_conn_id, t_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, ud_req.sdu))); + NSCP.send(t_NS_Send(g_conn_id, ts_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, ud_req.sdu))); } [] NS_SP.receive(t_NsUdReq(config.nsei, ?, omit, ?)) -> value ud_req { /* using decoded BSSGP PDU that we need to encode first */ var octetstring enc := enc_PDU_BSSGP(ud_req.bssgp); - NSCP.send(t_NS_Send(g_conn_id, t_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, enc))); + NSCP.send(t_NS_Send(g_conn_id, ts_NS_UNITDATA(t_SduCtrlB, ud_req.bvci, enc))); } } } diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn index 3de7427..c337cb4 100644 --- a/library/Osmocom_Gb_Types.ttcn +++ b/library/Osmocom_Gb_Types.ttcn @@ -67,13 +67,22 @@ NS_CAUSE_IP_TEST_FAILEDA ('00010100'B) } with { variant "FIELDLENGTH(8)" }; - template NS_SDU_ControlBits t_SduCtrlB := { + template (value) NS_SDU_ControlBits t_SduCtrlB := { rBit := '0'B, cBit := '0'B, spare := '000000'B } - function t_NS_IE_CAUSE(template NsCause cause) return template CauseNS { + template (value) CauseNS ts_NS_IE_CAUSE(NsCause cause) := { + iEI := '00'O, + ext := '1'B, + lengthIndicator := { + length1 := 1 + }, + cause := int2oct(enum2int(valueof(cause)), 1) + } + + function tr_NS_IE_CAUSE(template NsCause cause) return template CauseNS { var template CauseNS ret; ret.iEI := '00'O; ret.ext := '1'B; @@ -94,7 +103,15 @@ } } - template NS_VCI t_NS_IE_NSVCI(template Nsvci nsvci) := { + template (value) NS_VCI ts_NS_IE_NSVCI(Nsvci nsvci) := { + iEI := '01'O, + ext := '1'B, + lengthIndicator := { + length1 := 2 + }, + nS_VCI := int2oct(nsvci, 2) + } + template NS_VCI tr_NS_IE_NSVCI(template Nsvci nsvci) := { iEI := '01'O, ext := '1'B, lengthIndicator := { @@ -103,7 +120,15 @@ nS_VCI := f_oct_or_wc(nsvci, 2) } - template NSEI_NS t_NS_IE_NSEI(template Nsei nsei) := { + template (value) NSEI_NS ts_NS_IE_NSEI(Nsei nsei) := { + iEI:= '04'O, + ext := '1'B, + lengthIndicator := { + length1 := 2 + }, + nSEI := int2oct(nsei, 2) + } + template NSEI_NS tr_NS_IE_NSEI(template Nsei nsei) := { iEI:= '04'O, ext := '1'B, lengthIndicator := { @@ -112,35 +137,64 @@ nSEI := f_oct_or_wc(nsei, 2) } - template PDU_NS t_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := { + + template (value) PDU_NS ts_NS_RESET(NsCause cause, Nsvci nsvci, Nsei nsei) := { pDU_NS_Reset := { nsPduType := '02'O, - causeNS := t_NS_IE_CAUSE(cause), - nS_VCI := t_NS_IE_NSVCI(nsvci), - nSEI_NS := t_NS_IE_NSEI(nsei) + causeNS := ts_NS_IE_CAUSE(cause), + nS_VCI := ts_NS_IE_NSVCI(nsvci), + nSEI_NS := ts_NS_IE_NSEI(nsei) + } + } + template PDU_NS tr_NS_RESET(template NsCause cause, template Nsvci nsvci, template Nsei nsei) := { + pDU_NS_Reset := { + nsPduType := '02'O, + causeNS := tr_NS_IE_CAUSE(cause), + nS_VCI := tr_NS_IE_NSVCI(nsvci), + nSEI_NS := tr_NS_IE_NSEI(nsei) } } - template PDU_NS t_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := { + template (value) PDU_NS ts_NS_RESET_ACK(Nsvci nsvci, Nsei nsei) := { pDU_NS_Reset_Ack := { nsPduType := '03'O, - nS_VCI := t_NS_IE_NSVCI(nsvci), - nSEI_NS := t_NS_IE_NSEI(nsei) + nS_VCI := ts_NS_IE_NSVCI(nsvci), + nSEI_NS := ts_NS_IE_NSEI(nsei) + } + } + template PDU_NS tr_NS_RESET_ACK(template Nsvci nsvci, template Nsei nsei) := { + pDU_NS_Reset_Ack := { + nsPduType := '03'O, + nS_VCI := tr_NS_IE_NSVCI(nsvci), + nSEI_NS := tr_NS_IE_NSEI(nsei) } } - template PDU_NS t_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := { + template (value) PDU_NS ts_NS_BLOCK(NsCause cause, Nsvci nsvci) := { pDU_NS_Block := { nsPduType := '04'O, - causeNS := t_NS_IE_CAUSE(cause), - nS_VCI := t_NS_IE_NSVCI(nsvci) + causeNS := ts_NS_IE_CAUSE(cause), + nS_VCI := ts_NS_IE_NSVCI(nsvci) + } + } + template PDU_NS tr_NS_BLOCK(template NsCause cause, template Nsvci nsvci) := { + pDU_NS_Block := { + nsPduType := '04'O, + causeNS := tr_NS_IE_CAUSE(cause), + nS_VCI := tr_NS_IE_NSVCI(nsvci) } } - template PDU_NS t_NS_BLOCK_ACK(template Nsvci nsvci) := { + template (value) PDU_NS ts_NS_BLOCK_ACK(Nsvci nsvci) := { pDU_NS_Block_Ack := { nsPduType := '05'O, - nS_VCI := t_NS_IE_NSVCI(nsvci) + nS_VCI := ts_NS_IE_NSVCI(nsvci) + } + } + template PDU_NS tr_NS_BLOCK_ACK(template Nsvci nsvci) := { + pDU_NS_Block_Ack := { + nsPduType := '05'O, + nS_VCI := tr_NS_IE_NSVCI(nsvci) } } @@ -168,10 +222,10 @@ } } - template PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := { + template (value) PDU_NS ts_NS_STATUS(NsCause cause, PDU_NS pdu) := { pDU_NS_Status := { nsPduType := '08'O, - causeNS := t_NS_IE_CAUSE(cause), + causeNS := ts_NS_IE_CAUSE(cause), nS_VCI := omit, nS_PDU := { iEI := '02'O, @@ -187,7 +241,15 @@ } } - template PDU_NS t_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template + template (value) PDU_NS ts_NS_UNITDATA(template (value) NS_SDU_ControlBits bits, BssgpBvci bvci, octetstring sdu) := { + pDU_NS_Unitdata := { + nsPduType := '00'O, + nS_SDU_ControlBits := bits, + bVCI := int2oct(bvci, 2), + nS_SDU := sdu + } + } + template PDU_NS tr_NS_UNITDATA(template NS_SDU_ControlBits bits, template BssgpBvci bvci, template octetstring sdu) := { pDU_NS_Unitdata := { nsPduType := '00'O, -- To view, visit https://gerrit.osmocom.org/12940 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-ttcn3-hacks Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I90400c42d3dff0a1de0022320d76f10ac748a206 Gerrit-Change-Number: 12940 Gerrit-PatchSet: 2 Gerrit-Owner: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org> Gerrit-Reviewer: Jenkins Builder (1000002) -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190219/95cdfab2/attachment.htm>