Change in osmo-ttcn3-hacks[master]: Osmocom_Gb_Types: Differentiate send (value) and receive templates

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.org
Tue Feb 19 12:28:52 UTC 2019


Harald 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>


More information about the gerrit-log mailing list