LibSip_SDPTypes.ttcn 10.2 KB
Newer Older
 *  @author   STF 346, STF366, STF368, STF369, STF450
 *  @desc     This module defines message, attribute, structured and simple
 *            SDP types as well constants used by LipSip constructs. <br>
 *            Note that any changes made to the definitions in this module
 *            may be overwritten by future releases of this library
 *            End users are encouraged to contact the distributers of this
 *            module regarding their modifications or additions
 *            This module is part of LibSipV2.
 *  @remark   Adding of new attributes types is ok;
 *            Adding of new optional attributes in @see SDP_attribute type
 *            is ok;
 *            Existing attribute types shall not be changed or removed -
 *            change requests shall be made to http://t-ort.etsi.org
  group Constants
  {
    group SimpleConstants
    {
        //  SDP net_type
        const charstring c_in := "IN";

        //  SDP addr_type
        const charstring c_ip4 := "IP4";
        const charstring c_ip6 := "IP6";

        // SDP_media_desc: media
        const charstring c_audio := "audio";
        const charstring c_image := "image";
        const charstring c_video := "video";
        const charstring c_text := "text";
        const charstring c_msrp := "msrp";

        // SDP_media_desc: transport
        const charstring c_rtpAvp := "RTP/AVP";
        const charstring c_rtpAvpf := "RTP/AVPF";
        const charstring c_msrpTcp := "TCP/MSRP";
        const charstring c_udptl := "Udptl";

        // SDP_attribute_list constants:
        const charstring c_local := "local";
        const charstring c_mandatory := "mandatory";
        const charstring c_optional := "optional";
        const charstring c_none := "none";
        const charstring c_qos := "qos";
        const charstring c_remote := "remote";
        const charstring c_sendrecv := "sendrecv";
        const charstring c_sendonly := "sendonly";
        const charstring c_inactive := "inactive";
        const charstring c_send := "send";
        const charstring c_recv := "recv";
        const charstring c_e2e := "e2e";
    }
  }
  group Types
  {
    group SubTypes
    {
        group AttributeTypes
        {
            type record SDP_attribute_cat {
                charstring attr_value
            }

            type record SDP_attribute_keywds {
                charstring attr_value
            }

            type record SDP_attribute_tool {
                charstring attr_value
            }

            type record SDP_attribute_ptime {
                charstring attr_value
            }

            type record SDP_attribute_recvonly {
            }

            type record SDP_attribute_sendrecv {
            }

            type record SDP_attribute_sendonly {
            }

            type record SDP_attribute_inactive {
            }

            type record SDP_attribute_orient {
                charstring attr_value
            }

            type record SDP_attribute_type {
                charstring attr_value
            }

            type record SDP_attribute_charset {
                charstring attr_value
            }

            type record SDP_attribute_sdplang {
                charstring attr_value
            }

            type record SDP_attribute_lang {
                charstring attr_value
            }

            type record SDP_attribute_framerate {
                charstring attr_value
            }

            type record SDP_attribute_quality {
                charstring attr_value
            }

            type record SDP_attribute_fmtp {
                charstring attr_value
            }

            type record SDP_attribute_curr {
                charstring preconditionType,
                charstring statusType,
                charstring direction
            }

            type record SDP_attribute_des {
                charstring preconditionType,
                charstring strength,
                charstring statusType,
                charstring direction
            }

            type record SDP_attribute_conf {
                charstring preconditionType,
                charstring statusType,
                charstring direction
            }

            type record SDP_attribute_rtpmap {
                charstring attr_value
            }

            type record SDP_attribute_rtcp {
                charstring attr_value
            }
garciay's avatar
garciay committed
            type record SDP_attribute_msrp {
                charstring attr_value
            }

            type record SDP_attribute_unknown {
                charstring name,
                charstring attr_value optional
            }


            type union SDP_attribute {
                SDP_attribute_cat             cat,
                SDP_attribute_keywds          keywds,
                SDP_attribute_tool            tool,
                SDP_attribute_ptime           ptime,
                SDP_attribute_recvonly        recvonly,
                SDP_attribute_sendrecv        sendrecv,
                SDP_attribute_sendonly        sendonly,
                SDP_attribute_inactive        inactive,
                SDP_attribute_orient          orient,
                SDP_attribute_type            sdp_type,
                SDP_attribute_charset         charset,
                SDP_attribute_sdplang         sdplang,
                SDP_attribute_lang            lang,
                SDP_attribute_framerate       framerate,
                SDP_attribute_quality         quality,
                SDP_attribute_fmtp            fmtp,
                SDP_attribute_curr            curr,
                SDP_attribute_des             des,
                SDP_attribute_conf            conf,
                SDP_attribute_rtpmap          rtpmap,
garciay's avatar
garciay committed
                SDP_attribute_msrp            msrp,
                //*  unknown has to be the last else encoding/decoding won't work!
                SDP_attribute_unknown unknown
            }
        } //*  group AttributeTypes

      type set of SDP_attribute SDP_attribute_list;

      type record SDP_bandwidth {
        charstring          modifier,
        integer             bandwidth
      }

      type set of SDP_bandwidth SDP_bandwidth_list;

      type record SDP_connection {
        charstring          net_type,
        charstring          addr_type,
      }

      type record SDP_conn_addr {
        charstring addr,
        integer ttl optional,
        integer num_of_addr optional
      }

      type set of SDP_connection SDP_connection_list;

      type record SDP_contact {
        charstring          addr_or_phone,
        charstring          disp_name optional
      }

      type SDP_contact SDP_contact_tel;

      type SDP_contact SDP_contact_email;

      type set of SDP_contact_email SDP_email_list;

      type record of charstring SDP_fmt_list ;

      type record SDP_key {
        charstring          method,
        charstring          key optional
      }

      type record SDP_media_desc {
        SDP_media_field     media_field,
        charstring          information optional,
        SDP_connection_list connections optional,
        SDP_bandwidth_list  bandwidth optional,
        SDP_key             key optional,
        SDP_attribute_list  attributes optional
      }

      type set of SDP_media_desc SDP_media_desc_list;

      type record SDP_media_port {
        integer             port_number,
        integer             num_of_ports optional
      }

      type record SDP_media_field {
        charstring          media,
        SDP_media_port      ports,
        charstring          transport,
        SDP_fmt_list        fmts
      }

      type record SDP_time{
        SDP_time_field      time_field,
        SDP_repeat_list     time_repeat optional
      }

      type record SDP_time_field{
        charstring   start_time, //*  field is numeric strings that may not fit into 32-bit signed int
        charstring   stop_time //*  field is numeric strings that may not fit into 32-bit signed int
      }

      type record SDP_repeat{
        SDP_typed_time      repeat_interval,
        SDP_typed_time      active,
        SDP_typed_time_list offsets
      }

      type set of SDP_repeat SDP_repeat_list;

      type record SDP_typed_time{
        integer        time,
        charstring     unit optional
      }

      type set of SDP_typed_time SDP_typed_time_list;

      type set of SDP_time SDP_time_list;

      type record SDP_timezone{
        charstring          adjustment_time,
        SDP_typed_time      offset
      }

      type set of SDP_timezone SDP_timezone_list;

      type record SDP_Origin{
        charstring          user_name,
        charstring          session_id,//*  field is numeric strings that may not fit into 32-bit signed int
        charstring          session_version, //*  field is numeric strings that may not fit into 32-bit signed int
        charstring          net_type,
        charstring          addr_type,
        charstring          addr
      }

      type set of SDP_contact_tel SDP_phone_list;


    group MessageTypes
    {
      type record SDP_Message{
        integer             protocol_version,
        SDP_Origin          origin,
        charstring          session_name,
        charstring          information optional,
        charstring          uri optional,
        SDP_email_list      emails optional,
        SDP_phone_list      phone_numbers optional,
        SDP_connection      connection optional,
        SDP_bandwidth_list  bandwidth optional,
        SDP_time_list       times,
        SDP_timezone_list   timezone_adjustments optional,
        SDP_key             key optional,
        SDP_attribute_list  attributes optional,
        SDP_media_desc_list media_list optional
      } with { encode "SDPCodec" }
    } //  group MessageTypes
  } //  group Types
} // end module LibSip_SDPTypes