Add TRXC (OsmoTRX Control) protocol types + codec port

Change-Id: I3b5e81693e5cf8ee8a2c360bde8b16c5276d2297
diff --git a/library/TRXC_CodecPort.ttcn b/library/TRXC_CodecPort.ttcn
new file mode 100644
index 0000000..6acead0
--- /dev/null
+++ b/library/TRXC_CodecPort.ttcn
@@ -0,0 +1,62 @@
+module TRXC_CodecPort {
+
+import from IPL4asp_PortType all;
+import from IPL4asp_Types all;
+import from TRXC_Types all;
+
+type record TRXC_RecvFrom {
+	ConnectionId	connId,
+	HostName	remName,
+	PortNumber	remPort,
+	HostName	locName,
+	PortNumber	locPort,
+	TrxcMessage	msg
+}
+
+template TRXC_RecvFrom tr_TRXC_RecvFrom(template TrxcMessage msg) := {
+	connId := ?,
+	remName := ?,
+	remPort := ?,
+	locName := ?,
+	locPort := ?,
+	msg := msg
+}
+
+type record TRXC_Send {
+	ConnectionId	connId,
+	TrxcMessage	msg
+}
+
+private function IPL4_to_TRXC_RecvFrom(in ASP_RecvFrom pin, out TRXC_RecvFrom pout) {
+	pout.connId := pin.connId;
+	pout.remName := pin.remName;
+	pout.remPort := pin.remPort;
+	pout.locName := pin.locName;
+	pout.locPort := pin.locPort;
+	pout.msg := dec_TrxcMessage(oct2char(pin.msg));
+} with { extension "prototype(fast)" };
+
+private function TRXC_to_IPL4_Send(in TRXC_Send pin, out ASP_Send pout) {
+	pout.connId := pin.connId;
+	pout.proto := { udp := {} };
+	pout.msg := char2oct(enc_TrxcMessage(pin.msg));
+} with { extension "prototype(fast)" };
+
+type port TRXC_CODEC_PT message {
+	out	TRXC_Send;
+	in	TRXC_RecvFrom,
+		ASP_ConnId_ReadyToRelease,
+		ASP_Event;
+} with { extension "user IPL4asp_PT
+	out(TRXC_Send -> ASP_Send: function(TRXC_to_IPL4_Send))
+	in(ASP_RecvFrom -> TRXC_RecvFrom: function(IPL4_to_TRXC_RecvFrom);
+	   ASP_ConnId_ReadyToRelease -> ASP_ConnId_ReadyToRelease: simple;
+	   ASP_Event -> ASP_Event: simple)"
+}
+
+template (value) TRXC_Send ts_TRXC_Send(ConnectionId cid, template (value) TrxcMessage msg) := {
+	connId := cid,
+	msg := msg
+}
+
+}