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