Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang
erlang
4129-megaco-Types-and-spec-for-megaco-decode_sd...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 4129-megaco-Types-and-spec-for-megaco-decode_sdp-1.patch of Package erlang
From c034caab7694bec51c0d01746f3af342226d8078 Mon Sep 17 00:00:00 2001 From: Micael Karlberg <bmk@erlang.org> Date: Fri, 22 Dec 2023 16:20:09 +0100 Subject: [PATCH 09/46] [megaco] Types and spec for megaco:decode_sdp/1 Needed to add a ref-file for megaco_sdp, to hold the *types* exported by that module. OTP-18920 --- lib/megaco/doc/src/Makefile | 2 + lib/megaco/doc/src/files.mk | 3 +- lib/megaco/doc/src/megaco.xml | 55 ++++- lib/megaco/doc/src/megaco_sdp.xml | 303 +++++++++++++++++++++++++++ lib/megaco/doc/src/ref_man.xml | 1 + lib/megaco/doc/src/specs.xml | 1 + lib/megaco/src/app/megaco.erl | 26 ++- lib/megaco/src/engine/megaco_sdp.erl | 56 ++++- 8 files changed, 434 insertions(+), 13 deletions(-) create mode 100644 lib/megaco/doc/src/megaco_sdp.xml diff --git a/lib/megaco/doc/src/Makefile b/lib/megaco/doc/src/Makefile index ff8f88c938..aa480b409c 100644 --- a/lib/megaco/doc/src/Makefile +++ b/lib/megaco/doc/src/Makefile @@ -47,6 +47,7 @@ XML_FILES = \ SPECS_FILES = \ $(SPECDIR)/specs_megaco.xml \ $(SPECDIR)/specs_megaco_encoder.xml \ + $(SPECDIR)/specs_megaco_sdp.xml \ $(SPECDIR)/specs_megaco_user.xml TOP_SPECS_FILE = specs.xml @@ -130,3 +131,4 @@ $(HTMLDIR)/megaco_transport_mechanisms.html: megaco_transport_mechanisms.xml $(HTMLDIR)/megaco_transport.html: megaco_transport.xml $(HTMLDIR)/megaco_udp.html: megaco_udp.xml $(HTMLDIR)/megaco_user.html: megaco_user.xml +$(HTMLDIR)/megaco_sdp.html: megaco_sdp.xml diff --git a/lib/megaco/doc/src/files.mk b/lib/megaco/doc/src/files.mk index 2baeeb45ea..597f8d7739 100644 --- a/lib/megaco/doc/src/files.mk +++ b/lib/megaco/doc/src/files.mk @@ -33,7 +33,8 @@ XML_REF3_FILES = \ megaco_user.xml \ megaco_tcp.xml \ megaco_transport.xml \ - megaco_udp.xml + megaco_udp.xml \ + megaco_sdp.xml XML_PART_FILES = \ part.xml diff --git a/lib/megaco/doc/src/megaco.xml b/lib/megaco/doc/src/megaco.xml index 6791dcd112..654dc2e07d 100644 --- a/lib/megaco/doc/src/megaco.xml +++ b/lib/megaco/doc/src/megaco.xml @@ -201,6 +201,50 @@ </desc> </datatype> + <datatype> + <name name="property_parm"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="property_group"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="property_groups"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + </datatypes> <section> @@ -2124,17 +2168,8 @@ megaco_incr_timer() = #megaco_incr_timer{} </func> <func> - <name since="">decode_sdp(PP) -> {ok, SDP} | {error, Reason}</name> + <name name="decode_sdp" arity="1" clause_i="1" since=""/> <fsummary>Decode an property parameter construct</fsummary> - <type> - <v>PP = property_parm() | property_group() | property_groups() | asn1_NOVALUE</v> - <v>SDP = sdp() | decode_sdp_property_group() | decode_sdp_property_groups() | asn1_NOVALUE</v> - <v>decode_sdp() = sdp() | {property_parm(), DecodeError}</v> - <v>decode_sdp_property_group() = [decode_sdp()]</v> - <v>decode_sdp_property_groups() = [decode_sdp_property_group()]</v> - <v>DecodeError = term()</v> - <v>Reason = term()</v> - </type> <desc> <p>Decode (parse) a property parameter construct.</p> <p>When decoding <c><![CDATA[property_group()]]></c> or diff --git a/lib/megaco/doc/src/megaco_sdp.xml b/lib/megaco/doc/src/megaco_sdp.xml new file mode 100644 index 0000000000..9d6c946c30 --- /dev/null +++ b/lib/megaco/doc/src/megaco_sdp.xml @@ -0,0 +1,303 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE erlref SYSTEM "erlref.dtd"> + +<erlref> + <header> + <copyright> + <year>2023</year><year>2023</year> + <holder>Ericsson AB. All Rights Reserved.</holder> + </copyright> + <legalnotice> + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + </legalnotice> + + <title>megaco_sdp</title> + <prepared></prepared> + <responsible></responsible> + <docno></docno> + <approved></approved> + <checked></checked> + <date>2023-12-22</date> + <rev>%VSN%</rev> + <file>megaco_sdp.xml</file> + </header> + <module since="">megaco_sdp</module> + <modulesummary>SDP utility module.</modulesummary> + <description> + <p>This module contains various things related to SDP.</p> + </description> + + <datatypes> + <datatype> + <name name="property_parm"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="property_group"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="property_groups"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_v"/> + <desc> + <p> + Protocol version. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_o"/> + <desc> + <p> + Owner/creator and session identifier. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_s"/> + <desc> + <p> + Session name. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_i"/> + <desc> + <p> + Session information. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_u"/> + <desc> + <p> + URI of description. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_e"/> + <desc> + <p> + Email address. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_p"/> + <desc> + <p> + Phone number. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_c"/> + <desc> + <p> + Connection information. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_b"/> + <desc> + <p> + Bandwidth information. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_k"/> + <desc> + <p> + Encryption key. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_a"/> + <desc> + <p> + Session attribute. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_a_rtpmap"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_a_ptime"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_a_quality"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_a_fmtp"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_z"/> + <desc> + <p> + Time zone adjustment. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_t"/> + <!-- + <desc> + <p> + Time the session is active. + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_r"/> + <desc> + <p> + Repeat times. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_m"/> + <desc> + <p> + Media name and transport address. + </p> + </desc> + </datatype> + + <datatype> + <name name="sdp_property_parm"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_property_group"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + <datatype> + <name name="sdp_property_groups"/> + <!-- + <desc> + <p> + TBD + </p> + </desc> + --> + </datatype> + + </datatypes> + +</erlref> + diff --git a/lib/megaco/doc/src/ref_man.xml b/lib/megaco/doc/src/ref_man.xml index 395ac80e0d..5168e48dbd 100644 --- a/lib/megaco/doc/src/ref_man.xml +++ b/lib/megaco/doc/src/ref_man.xml @@ -45,5 +45,6 @@ <xi:include href="megaco_codec_mstone1.xml"/> <xi:include href="megaco_codec_mstone2.xml"/> <xi:include href="megaco_codec_transform.xml"/> + <xi:include href="megaco_sdp.xml"/> </application> diff --git a/lib/megaco/doc/src/specs.xml b/lib/megaco/doc/src/specs.xml index a36a772166..3e12934dd7 100644 --- a/lib/megaco/doc/src/specs.xml +++ b/lib/megaco/doc/src/specs.xml @@ -2,5 +2,6 @@ <specs xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="../specs/specs_megaco.xml"/> <xi:include href="../specs/specs_megaco_encoder.xml"/> + <xi:include href="../specs/specs_megaco_sdp.xml"/> <xi:include href="../specs/specs_megaco_user.xml"/> </specs> diff --git a/lib/megaco/src/app/megaco.erl b/lib/megaco/src/app/megaco.erl index b97c5ad377..f25c202dd5 100644 --- a/lib/megaco/src/app/megaco.erl +++ b/lib/megaco/src/app/megaco.erl @@ -108,7 +108,12 @@ action_reply/0, error_desc/0, transaction_reply/0, - protocol_version/0 + protocol_version/0, + + property_parm/0, + property_group/0, + property_groups/0, + sdp/0 ]). -type void() :: term(). @@ -169,6 +174,10 @@ -type send_handle() :: term(). +-type property_parm() :: megaco_sdp:property_parm(). +-type property_group() :: megaco_sdp:property_group(). +-type property_groups() :: megaco_sdp:property_groups(). +-type sdp() :: megaco_sdp:sdp(). -include("megaco_internal.hrl"). @@ -669,6 +678,21 @@ encode_sdp(SDP) -> %% Decode a property parm construct into a SDP construct %%----------------------------------------------------------------- +-spec decode_sdp(PP) -> {ok, SDP} | {error, Reason} when + PP :: property_parm() | + property_group() | + property_groups() | + asn1_NOVALUE, + SDP :: sdp() | + DecodeSdpPropertyGroup | + DecodeSdpPropertyGroups | + asn1_NOVALUE, + DecodeSdpPropertyGroup :: [DecodeSDP], + DecodeSdpPropertyGroups :: [DecodeSdpPropertyGroup], + DecodeSDP :: sdp() | {property_parm(), DecodeError}, + DecodeError :: term(), + Reason :: term(). + decode_sdp(PP) -> megaco_sdp:decode(PP). diff --git a/lib/megaco/src/engine/megaco_sdp.erl b/lib/megaco/src/engine/megaco_sdp.erl index ac37b353f0..20455eea41 100644 --- a/lib/megaco/src/engine/megaco_sdp.erl +++ b/lib/megaco/src/engine/megaco_sdp.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2001-2016. All Rights Reserved. +%% Copyright Ericsson AB 2001-2023. All Rights Reserved. %% %% Licensed under the Apache License, Version 2.0 (the "License"); %% you may not use this file except in compliance with the License. @@ -46,12 +46,66 @@ get_sdp_record_from_PropertyGroup/2 ]). +-export_type([ + property_parm/0, + property_group/0, + property_groups/0, + + sdp/0, + sdp_v/0, + sdp_c/0, sdp_o/0, sdp_s/0, sdp_i/0, sdp_u/0, + sdp_e/0, sdp_p/0, sdp_b/0, sdp_z/0, sdp_k/0, + sdp_a/0, sdp_a_rtpmap/0, sdp_a_ptime/0, + sdp_a_quality/0, sdp_a_fmtp/0, + sdp_t/0, sdp_r/0, sdp_m/0, + sdp_property_parm/0, + sdp_property_group/0, + sdp_property_groups/0 + ]). + %%---------------------------------------------------------------------- %% Internal exports %%---------------------------------------------------------------------- +%%---------------------------------------------------------------------- +%% Types +%%---------------------------------------------------------------------- + +-type property_parm() :: #'PropertyParm'{}. +-type property_group() :: [property_parm()]. +-type property_groups() :: [property_group()]. + +-type sdp() :: sdp_o() | sdp_s() | sdp_i() | sdp_u() | sdp_e() | + sdp_p() | sdp_c() | sdp_b() | sdp_k() | sdp_a() | + sdp_a_rtpmap() | sdp_a_ptime() | + sdp_z() | sdp_t() | sdp_r() | sdp_m(). + +-type sdp_v() :: #megaco_sdp_v{}. % Protocol version +-type sdp_o() :: #megaco_sdp_o{}. % Owner/creator and session identifier +-type sdp_s() :: #megaco_sdp_s{}. % Session name +-type sdp_i() :: #megaco_sdp_i{}. % Session information +-type sdp_u() :: #megaco_sdp_u{}. % URI of description +-type sdp_e() :: #megaco_sdp_e{}. % Email address +-type sdp_p() :: #megaco_sdp_p{}. % Phone number +-type sdp_c() :: #megaco_sdp_c{}. % Connection information +-type sdp_b() :: #megaco_sdp_b{}. % Bandwidth information +-type sdp_k() :: #megaco_sdp_k{}. % Encryption key +-type sdp_a() :: #megaco_sdp_a{}. % Session attribute +-type sdp_a_rtpmap() :: #megaco_sdp_a_rtpmap{}. +-type sdp_a_ptime() :: #megaco_sdp_a_ptime{}. +-type sdp_a_quality() :: #megaco_sdp_a_quality{}. +-type sdp_a_fmtp() :: #megaco_sdp_a_fmtp{}. +-type sdp_z() :: #megaco_sdp_z{}. % Time zone adjustment +-type sdp_t() :: #megaco_sdp_t{}. % Time the session is active +-type sdp_r() :: #megaco_sdp_r{}. % Repeat times +-type sdp_m() :: #megaco_sdp_m{}. % Media name and transport address +-type sdp_property_parm() :: sdp() | property_parm(). +-type sdp_property_group() :: [sdp_property_parm()]. +-type sdp_property_groups() :: [sdp_property_group()]. + + %%---------------------------------------------------------------------- %% Macros %%---------------------------------------------------------------------- -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor