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.
Change subject: RSL_Types: Add various IPA / Abis-IP specific IEs + templates
......................................................................
RSL_Types: Add various IPA / Abis-IP specific IEs + templates
Change-Id: I683e7c23b217a993e0d8f079e5bf1a10403420bb
---
M library/RSL_Types.ttcn
1 file changed, 226 insertions(+), 0 deletions(-)
Approvals:
Harald Welte: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 3e9baaa..a807ce2 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -487,6 +487,39 @@
RSL_SYSTEM_INFO_20 ('00101101'B)
} with { variant "FIELDLENGTH(8)" }
+ type record RSL_IE_IPA_ConnectionStats {
+ uint8_t len,
+ uint32_t tx_packets,
+ uint32_t tx_octets,
+ uint32_t rx_packets,
+ uint32_t rx_octets,
+ uint32_t lost_packets,
+ uint32_t jitter,
+ uint32_t avg_delay
+ } with { variant (len) "LENGTHTO(tx_packets,tx_octets,rx_packets,rx_octets,lost_packets,jitter,avg_delay)" }
+
+ type enumerated RSL_IPA_SpeechMode {
+ RSL_IPA_SPM_SENDRECV ('00'B),
+ RSL_IPA_SPM_RECVONLY ('01'B),
+ RSL_IPA_SPM_SENDONLY ('10'B),
+ RSL_IPA_SPM_RESERVED ('11'B)
+ } with { variant "FIELDLENGTH(2)" }
+
+ type enumerated RSL_IPA_Codec {
+ RSL_IPA_CODEC_FR ('0000'B),
+ RSL_IPA_CODEC_EFR ('0001'B),
+ RSL_IPA_CODEC_AMR_F ('0010'B),
+ RSL_IPA_CODEC_HR ('0011'B),
+ RSL_IPA_CODEC_AMR_H ('0101'B),
+ RSL_IPA_CODEC_RTP_PT ('1111'B)
+ } with { variant "FIELDLENGTH(4)" }
+
+ type record RSL_IE_IPA_SpeechMode {
+ BIT2 reserved,
+ RSL_IPA_SpeechMode mode,
+ RSL_IPA_Codec codec
+ }
+
/* union of all IE bodies */
type union RSL_IE_Body {
RslChannelNr chan_nr,
@@ -515,6 +548,16 @@
RSL_IE_RequestRef req_ref,
RSL_LV full_imm_ass_info,
RSL_LV ms_identity,
+
+ uint16_t ipa_conn_id,
+ uint16_t ipa_local_port,
+ uint16_t ipa_remote_port,
+ uint32_t ipa_local_ip,
+ uint32_t ipa_remote_ip,
+ uint8_t ipa_rtp_pt,
+ uint8_t ipa_rtp_pt2,
+ RSL_IE_IPA_ConnectionStats ipa_stats,
+ RSL_IE_IPA_SpeechMode ipa_speech_mode,
RSL_LV other
}
@@ -552,6 +595,16 @@
full_imm_ass_info, iei = RSL_IE_FULL_IMM_ASS_INFO;
ms_identity, iei = RSL_IE_MS_IDENTITY;
other, iei = RSL_IE_FULL_BCCH_INFO;
+
+ ipa_conn_id, iei = RSL_IE_IPAC_CONN_ID;
+ ipa_remote_ip, iei = RSL_IE_IPAC_REMOTE_IP;
+ ipa_remote_port, iei = RSL_IE_IPAC_REMOTE_PORT;
+ ipa_local_ip, iei = RSL_IE_IPAC_LOCAL_IP;
+ ipa_local_port, iei = RSL_IE_IPAC_LOCAL_PORT;
+ ipa_rtp_pt, iei = RSL_IE_IPAC_RTP_PAYLOAD;
+ ipa_rtp_pt2, iei = RSL_IE_IPAC_RTP_PAYLOAD2;
+ ipa_stats, iei = RSL_IE_IPAC_CONN_STAT;
+ ipa_speech_mode, iei = RSL_IE_IPAC_SPEECH_MODE;
other, OTHERWISE;
)" };
@@ -866,4 +919,177 @@
}
}
+
+ /* Abis/IP specific messages */
+
+ template RSL_Message tr_RSL_IPA_CRCX(template RslChannelNr chan_nr) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_CRCX,
+ ies := {
+ tr_RSL_IE(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,
+ uint16_t local_port, uint7_t rtp_pt2) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_CRCX_ACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_IPAC_LOCAL_IP, RSL_IE_Body:{ipa_local_ip := local_ip}),
+ t_RSL_IE(RSL_IE_IPAC_LOCAL_PORT, RSL_IE_Body:{ipa_local_port := local_port}),
+ t_RSL_IE(RSL_IE_IPAC_RTP_PAYLOAD2, 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),
+ msg_type := RSL_MT_IPAC_CRCX_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_IPA_MDCX(template RslChannelNr chan_nr,
+ template uint16_t ipa_conn_id) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_MDCX,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+ tr_RSL_IE(RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ *
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_MDCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id,
+ uint32_t remote_ip, uint16_t remote_port,
+ uint7_t rtp_pt2) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_CRCX_NACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ /* optional */
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_IPAC_REMOTE_IP, RSL_IE_Body:{ipa_remote_ip := remote_ip}),
+ t_RSL_IE(RSL_IE_IPAC_REMOTE_PORT, RSL_IE_Body:{ipa_remote_port := remote_port}),
+ /* optional: RTP Payload Type */
+ t_RSL_IE(RSL_IE_IPAC_RTP_PAYLOAD2, RSL_IE_Body:{ipa_rtp_pt2 := rtp_pt2})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_MDCX_NACK(RslChannelNr chan_nr, RSL_Cause cause,
+ template uint16_t ipa_conn_id) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_MDCX_NACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ /* optional connection ID */
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_DLCX_IND(RslChannelNr chan_nr, uint16_t ipa_conn_id,
+ RSL_IE_IPA_ConnectionStats stats, RSL_Cause cause) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_DLCX_IND,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_IPAC_CONN_STAT, RSL_IE_Body:{ipa_stats := stats}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ }
+ }
+
+ template RSL_Message tr_RSL_IPA_DLCX(template RslChannelNr chan_nr,
+ template uint16_t ipa_conn_id := omit) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_DLCX,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+ /* FIXME: optional conn_id */
+ *
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_DLCX_ACK(RslChannelNr chan_nr, template uint16_t ipa_conn_id,
+ template RSL_IE_IPA_ConnectionStats stats) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_DLCX_ACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_IPAC_CONN_STAT, RSL_IE_Body:{ipa_stats := stats})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_DLCX_NACK(RslChannelNr chan_nr, RSL_Cause cause,
+ template uint16_t ipa_conn_id) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_DLCX_NACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ /* optional connection ID */
+ t_RSL_IE(RSL_IE_IPAC_CONN_ID, RSL_IE_Body:{ipa_conn_id := ipa_conn_id}),
+ t_RSL_IE(RSL_IE_CAUSE, RSL_IE_Body:{cause := ts_RSL_IE_Cause(cause)})
+ }
+ }
+
+ template RSL_Message tr_RSL_IPA_PDCH_ACT(template RslChannelNr chan_nr) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_ACT,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_PDCH_ACT_ACK(RslChannelNr chan_nr, RSL_IE_FrameNumber fn) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_ACT_ACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}),
+ t_RSL_IE(RSL_IE_FRAME_NUMBER, RSL_IE_Body:{frame_nr := fn})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_PDCH_ACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_ACT_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_IPA_PDCH_DEACT(template RslChannelNr chan_nr) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_DEACT,
+ ies := {
+ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_PDCH_DEACT_ACK(RslChannelNr chan_nr) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_DEACT_ACK,
+ ies := {
+ t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr})
+ }
+ }
+
+ template RSL_Message ts_RSL_IPA_PDCH_DEACT_NACK(RslChannelNr chan_nr, RSL_Cause cause) := {
+ msg_disc := ts_RSL_MsgDisc(RSL_MDISC_IPACCESS, false),
+ msg_type := RSL_MT_IPAC_PDCH_DEACT_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)})
+ }
+ }
+
+
+
} with { encode "RAW" ; variant "FIELDORDER(msb)" }
--
To view, visit https://gerrit.osmocom.org/5392
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I683e7c23b217a993e0d8f079e5bf1a10403420bb
Gerrit-PatchSet: 1
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder