Symbian3/PDK/Source/GUID-B782184F-C6B4-420A-9A1C-F050A9F24ADC.dita
author Dominic Pinkman <Dominic.Pinkman@Nokia.com>
Tue, 30 Mar 2010 16:16:55 +0100
changeset 6 43e37759235e
parent 5 f345bda72bc4
child 14 578be2adaf3e
permissions -rw-r--r--
Week 12 contribution of example code"

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-B782184F-C6B4-420A-9A1C-F050A9F24ADC" xml:lang="en"><title>SIP
Overview</title><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-EB5A6E92-5BFB-441D-9C1F-3DF5FD0BDF2F"><title>Purpose</title> <p>The Multimedia Protocols Session Initiation
Protocol (SIP) framework supports SIP, Session Description Protocol (SDP),
and Signaling Compression (SigComp). SIP is an application layer signaling
protocol that creates, modifies, and terminates sessions with the users. This
overview describes the use of SIP as defined in <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">RFC 3261</xref>. It provides the information about the use
of SDP, SigComp and also the implementation-specific mechanisms like the Client
Resolver and Profile Agent engines. </p> </section>
<section id="GUID-B1874729-3EB5-4F73-A1C4-07DD1D5F93B0"><title>Required background</title> <p>This overview does not describe
how the SIP protocol works, but assumes that the user knows about SIP, SDP,
and associated protocols that set up multimedia sessions for use cases such
as VoIP. </p> </section>
<section id="GUID-15A42FCC-8832-48DE-A018-D0F33E2350D7"><title>Key concepts</title> <dl>
<dlentry>
<dt>Session Initiation Protocol</dt>
<dd><p>SIP is an application layer signaling protocol used to create, modify,
and terminate sessions with the users. The SIP subsystem architecture is based
on the generic Session Initiation Protocol, <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">RFC 3261</xref>. It indicates that the 3GPP IMS specific
SIP message flows. SIP message semantics are the responsibility of the clients,
with the 3GPP Release 5 IMS specific security mechanism implemented as an
ECOM plug-in. </p> </dd>
</dlentry>
</dl> <p>The following components or subsystems are part of the Symbian SIP
framework: </p> <ul>
<li id="GUID-122A91B3-55E3-5521-B1B3-065F5E744A21"><dl>
<dlentry>
<dt>Session Description Protocol (SDP)</dt>
<dd><p>SDP provides a standard representation for multimedia information and
a standard method to transport that information. The SDP is implemented as
an independent component and is used with transport mechanisms such as SIP.
The SDP Codec subsystem provides services to convert SDP descriptions to internal
representation and internal representations to SDP descriptions. SDP provides
an API for its clients to encode or decode SDP descriptions and to set or
get the SDP field values. For more information about the APIs supported by
the SDP Codec subsystem, see <xref href="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita">SDP
Codec API</xref>. </p> </dd>
</dlentry>
</dl> </li>
<li id="GUID-809DA7AA-1AFB-52AC-AA67-EDD218C34831"><dl>
<dlentry>
<dt>Signaling Compression</dt>
<dd><p>The Signaling Compression component provides services to compress and
decompress the text based protocols such as SIP, SDP, and Real Time Session
Protocol (RTSP). Compressors that use different compression algorithms are
dynamically determined and loaded at run-time using the ECOM architecture.
UDVM provides the decompression functionality and runs the uploaded decompression
algorithms. The component architecture allows new compressors that use a plug-in
mechanism and static dictionaries to be included in the implementation. </p> </dd>
</dlentry>
</dl> </li>
<li id="GUID-C2040FE1-CC4A-52AB-8832-C6D6B64D52F0"><dl>
<dlentry>
<dt>SIP Client Resolver</dt>
<dd><p>The SIP Client Resolver defines the architecture for resolving or identifying
the target client when it receives the SIP request from a default port. For
information about the SIP Client Resolver API, see <xref href="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita">SIP
Client Resolver API</xref>. </p> </dd>
</dlentry>
</dl> </li>
</ul> </section>
<section id="GUID-3DEB36E1-8987-43B4-8D07-864EB7C73536"><title>API summary</title> <p>The following are some of the main
APIs used in SIP communication. </p> <table id="GUID-F4063A91-4F8E-5965-9DBA-9CA72AC4A6BC">
<tgroup cols="2"><colspec colname="col0"/><colspec colname="col1"/>
<thead>
<row>
<entry>API name</entry>
<entry>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><p> <xref href="GUID-C5CBB74D-0EC0-3E22-8CF2-B3F61E1EB79E.dita"><apiname>SIP Client API</apiname></xref>  </p> </entry>
<entry><p>An API that manages SIP transactions and SIP dialogs. It sets the
security mechanism parameters, receives connection state change events, queries
supported security mechanism and signaling compression support. For more information,
see <xref href="GUID-E339A683-94E2-54E8-BB2B-286B11B0FCE3.dita">SIP Client API</xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-3433DBD2-6444-32C7-88F9-EFE0629EC3F3.dita"><apiname>SIP Codec API</apiname></xref>  </p> </entry>
<entry><p>An API that provides services for managing SIP requests and responses.
This means it sets and obtains the headers and field values. For more information,
see <xref href="GUID-CD0EF6F2-9515-5884-B979-C3C391B7DA07.dita">SIP Codec API</xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-390AECC6-C8FF-34ED-8717-7BFCC4CF92BE.dita"><apiname>SDP Codec API</apiname></xref>  </p> </entry>
<entry><p>An API that provides a mechanism to encode or decode SDP messages.
For more information, see <xref href="GUID-28636BB0-2C25-5D6C-9777-41AA4F3D8F31.dita">SDP
Codec API</xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-A346DFC5-5528-342D-89E2-A9A710AB377F.dita"><apiname>SIP Profile API</apiname></xref>  </p> </entry>
<entry><p>An API that is used to get SIP profile parameters. If a profile
is not configured for automatic registration it registers or deregisters the
specific SIP profile. It also creates, uses, or terminates SIP transactions
and dialogs using profile information. For more information, see <xref href="GUID-399EAC59-643D-5DED-AB67-9F021CA5687A.dita">SIP
Profile API</xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-8696D110-FF44-3ABA-B9F8-C314B8AFB6AC.dita"><apiname>SIP Client Resolver API</apiname></xref>  </p> </entry>
<entry><p>An ECOM plug-in API that is used by applications that use the SIP
stack to receive out of dialog incoming request, for example an Incoming VoP
call. For more information, see <xref href="GUID-A3D1684D-1DF1-5CAF-A0BB-A32685528596.dita">SIP
Client Resolver API</xref>. </p> </entry>
</row>
<row>
<entry><p> <xref href="GUID-09F69A21-5F66-3344-BD04-69D02555E9F1.dita"><apiname>SIP High Level API</apiname></xref>  </p> </entry>
<entry><p>An API that encapsulates the SIP call flows inside the <xref href="GUID-BED8A733-2ED7-31AD-A911-C1F4707C67FD.dita"><apiname>RConnection</apiname></xref> and <xref href="GUID-0AFDA357-EE44-3788-9CAB-162B874134BF.dita"><apiname>RSubConnection</apiname></xref> APIs.
For more information, see <xref href="GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita">SIP
High Level API</xref>. </p> </entry>
</row>
</tbody>
</tgroup>
</table> </section>
<section id="GUID-6DA0878C-588F-4200-9E44-E543B4C446C6"><title>Typical uses</title> <p><b>When to use which API</b> </p><p>The
following table describes when to use which API. </p><table id="GUID-AA11D59D-4373-4878-82A5-BFB2C8C3C336">
<tgroup cols="2"><colspec colname="col1"/><colspec colname="col2"/>
<thead>
<row>
<entry valign="top"><p>API name</p></entry>
<entry valign="top"><p>Usage</p></entry>
</row>
</thead>
<tbody>
<row>
<entry><p>SIP Client API </p></entry>
<entry><p>Use the SIP Client API to send and receive SIP messages, create
registrations, form and tear down dialogs initiated by INVITE, REFER and SUBSCRIBE
requests. For more information, see SIP Client API. </p></entry>
</row>
<row>
<entry><p>SIP Codec API </p></entry>
<entry><p>Use the SIP Codec API to encode and decode SIP headers and their
fields. For more information, see SIP Codec API.</p></entry>
</row>
<row>
<entry><p>SDP Codec API </p></entry>
<entry><p>Use the SDP Codec API to encode SDP descriptions into an internal
form, decode the descriptions from an internal form, set and get the SDP field
values. For more information, see SDP Codec API.</p></entry>
</row>
<row>
<entry><p>SIP Profile API </p></entry>
<entry><p>Use the SIP Profile API to register through a profile. For more
information, see SIP Profile API.</p></entry>
</row>
<row>
<entry><p>SIP Profile Agent API  </p></entry>
<entry><p>Use the SIP Profile Agent API to receive SIP profile registrations,
update and deregister events, also receive any errors reported while doing
these tasks. For more information, see SIP Profile Agent API.</p></entry>
</row>
<row>
<entry><p>SIP Client Resolver API </p></entry>
<entry><p>Use the SIP Client Resolver API to resolve or identify the target
client when SIP requests are received from the default port. For more information,
see SIP Client Resolver API. </p></entry>
</row>
<row>
<entry><p>SIP High Level API </p></entry>
<entry><p>Use the SIP High Level API to register with the SIP server, invite
a session and subscribe to events. For more information, see SIP High Level
API.</p></entry>
</row>
<row>
<entry><p>SIP NATTraversalController API </p></entry>
<entry><p>Use the SIP NAT Traversal Controller API to establish a connection
between the SIP stack and an external UNSAF protocol module. For more information,
see SIP NATTraversalController API.</p></entry>
</row>
<row>
<entry><p>System State Monitor API</p></entry>
<entry><p>Use the System State Monitor API to provide system services such
as monitoring the system state and monitoring Service Network Access Point
(SNAP) availability. For more information, see System State Monitor API.</p></entry>
</row>
</tbody>
</tgroup>
</table> </section>
<section id="GUID-A5F9894A-77C5-4455-8DCD-41ACC5E85FE8"><title>See also</title> <ul>
<li id="GUID-0E00CD92-FCD1-5EFE-87E0-847D3216401F"><p> <xref href="http://www.ietf.org/rfc/rfc3261.txt?number=3261" scope="external">SIP: Session Initiation Protocol, RFC 3261</xref>  </p> </li>
<li id="GUID-F8278257-C4CE-5FBD-9DCB-C7B47A8C5273"><p> <xref href="http://www.3gpp.org/" scope="external">3GPP TS 24.228 v.5.2.0 Signaling flows for the IP multimedia
call control based on SIP and SDP; Stage 3</xref>  </p> </li>
<li id="GUID-F7AF8C36-7D6D-557D-91BA-015DE811FDEA"><p> <xref href="http://www.3gpp.org/" scope="external"> 3GPP TS 24.229 v.5.4.0 Internet Protocol (IP) multimedia
call control protocol based on Session Initiation Protocol (SIP) and Session
Description Protocol (SDP); Stage 3</xref>  </p> </li>
</ul> </section>
</conbody></concept>