Revision: 5aba069bbd27
Author: Vinu S Renish <[email protected]>
Date: Sat Jan 12 08:26:10 2013
Log: MAP chapter edited for clarity and grammar
http://code.google.com/p/jss7/source/detail?r=5aba069bbd27
Modified:
/docs/sources/src/main/resources/en-US/Chapter-MAP.xml
=======================================
--- /docs/sources/src/main/resources/en-US/Chapter-MAP.xml Sat Jan 12
02:28:43 2013
+++ /docs/sources/src/main/resources/en-US/Chapter-MAP.xml Sat Jan 12
08:26:10 2013
@@ -13,22 +13,25 @@
<para>
Mobile application part (<acronym>MAP</acronym>) is the protocol that is
used to allow the
<acronym>GSM</acronym> network nodes within the Network Switching
Subsystem (<acronym>NSS</acronym>
- ) to communicate with each other to provide services, such as roaming
capability,
+ ) to communicate with each other in order to provide services such as
roaming capability,
text messaging (<acronym>SMS</acronym>), Unstructured Supplementary
Service Data (
- <acronym>USSD</acronym>) and subscriber authentication.
<acronym>MAP</acronym>
+ <acronym>USSD</acronym>) and subscriber authentication.
+ </para>
+ <para>
+ <acronym>MAP</acronym>
provides an application layer on which to build the services that
support a
<acronym>GSM</acronym> network. This application layer provides a
standardized set of services.
<acronym>MAP</acronym> uses the services of the
<acronym>SS7</acronym>
network, specifically the Signaling Connection Control Part
(<acronym>SCCP</acronym>
- ) and the Transaction Capabilities Application Part
(<acronym>TCAP</acronym>)
+ ) and the Transaction Capabilities Application Part
(<acronym>TCAP</acronym>).
</para>
<important>
<para>For better understanding of this chapter you must be familiar with
the specifications defined in <literal>GSM 09.02</literal>.</para>
</important>
<para>
-MAP has full implementation for USSD, SMS and Location Management Service
(LMS) Services
- and partial implementation for Mobility service (updateLocation,
sendAuthenticationInfo,
- anyTimeInterrogation, checkIMEI operations) only. You can find the
list of implemented MAP messages here: <ulink type="http"
url="http://code.google.com/p/jss7/source/browse/map/MAPMessagesImplemented.ods">MAPMessagesImplemented.ods</ulink>.
The document uses color coding to represent the status of the
implementation:
+MAP has full implementation for USSD, SMS and LMS (Location Management
Service) services
+ and partial implementation for Mobility Services (updateLocation,
sendAuthenticationInfo,
+ anyTimeInterrogation, checkIMEI operations). You can find the list of
implemented MAP messages here: <ulink type="http"
url="http://code.google.com/p/jss7/source/browse/map/MAPMessagesImplemented.ods">MAPMessagesImplemented.ods</ulink>.
The document uses color coding to represent the status of the
implementation:
<variablelist>
<varlistentry>
<term>Green</term>
@@ -55,60 +58,70 @@
<title>&THIS.APPLICATION; MAP
</title>
<para>
- The
<classname>org.mobicents.protocols.ss7.map.api.MAPStack</classname>
- interface defines the methods required to represent MAP
Protocol Stack.
- MAPStack exposes
<classname>org.mobicents.protocols.ss7.map.api.MAPProvider</classname>
- that interacts directly with MAPStack.
- This interface defines the methods that will be used by any registered
MAP User application.
- MAP user application must implement interfaces to listen MAP messages
and dialogue and component handling primitives.
- One interface is
<classname>org.mobicents.protocols.ss7.map.api.MAPDialogListener</classname>
- (listening associated with dialog events).
+ The methods required to represent the MAP Protocol Stack are defined in
the interface
<classname>org.mobicents.protocols.ss7.map.api.MAPStack</classname> which
exposes
<classname>org.mobicents.protocols.ss7.map.api.MAPProvider</classname>
+ that interacts directly with the
<classname>MAPStack</classname>.
+ This interface defines the methods that will be used by any registered
MAP-User application.
+ </para>
+ <para>
+ A MAP-User application must implement interfaces to listen for MAP
messages and also implement interfaces for dialogue and component handling
primitives. One such interface is
<classname>org.mobicents.protocols.ss7.map.api.MAPDialogListener</classname>
which must be implemented for listening associated with dialog events.
Others are one or more interfaces for listening associated with
component events based on
- <classname>org.mobicents.protocols.ss7.map.api.MAPServiceListener
interface.</classname>
- Each MAP-User interested in listening messages specific to MAP
Service implements specific MAPServiceListener.
-
+
<classname>org.mobicents.protocols.ss7.map.api.MAPServiceListener</classname>
interface.
</para>
-
<para>
- Each MAP-User interested in listening messages specific to MAP Service
implements specific <classname>MAPServiceListener</classname>.
- <itemizedlist>
- <listitem>
- <para>
- MAP-User interested only in call handling operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.callhandling.MAPServiceCallHandlingListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in LMS operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.lsm.MAPServiceLsmListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in mobility operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.mobility.MAPServiceMobilityListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in OAM operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.oam.MAPServiceOamListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in PDP context activation operations
implements
<classname>org.mobicents.protocols.ss7.map.api.service.pdpContextActivation.MAPServicePdpContextActivationListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in SMS operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.sms.MAPServiceSmsListener</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- MAP-User interested only in supplementary operations implements
<classname>org.mobicents.protocols.ss7.map.api.service.supplementary.MAPServiceSupplementaryListener</classname>
- </para>
- </listitem>
- </itemizedlist>
- MAP-User interested in all the services must implement all the service
listener class.
+ Below is a list of MAP Service Listener classes. A MAP-User interested
in listening for messages specific to a particular MAP Service must
implement the corresponding MAPServiceListener.
+
+ <variablelist>
+ <varlistentry>
+ <term>
+ LMS operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.lsm.MAPServiceLsmListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Mobility operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.mobility.MAPServiceMobilityListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>OAM operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.oam.MAPServiceOamListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PDP context activation operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.pdpContextActivation.MAPServicePdpContextActivationListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SMS operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.sms.MAPServiceSmsListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Supplementary operations
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.supplementary.MAPServiceSupplementaryListener</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ A MAP-User interested in all the services must implement all the above
Service Listener classes.
</para>
<!-- <para>
The class diagram looks like
@@ -132,9 +145,9 @@
<para>
- The
<classname>org.mobicents.protocols.ss7.map.MAPStackImpl</classname>
- is concrete implementation of
<classname>MAPStack.</classname>
- The MAP User application gets reference to MAPProvider by doing JNDI
lookup as explained in <xref linkend="design_overview_ss7_service"/>
+ The <classname>org.mobicents.protocols.ss7.map.MAPStackImpl</classname>
class
+ is a concrete implementation of
<classname>MAPStack</classname>.
+ The MAP-User application gets a reference to
<classname>MAPProvider</classname> by doing a JNDI lookup as explained in
<xref linkend="design_overview_ss7_service"/>.
</para>
<programlisting
@@ -145,35 +158,71 @@
</programlisting>
<para>
- The MAP User application should register the concrete implementation of
<classname>MAPDialogListener</classname>
- with <classname>MAPProvider</classname> to listen for incoming MAP
Dialog and MAP Primitive messages.
- The MAP User application should register the concrete implementation of
<classname>MAPServiceListener</classname>
- with corresponding <classname>MAPServiceBase </classname> to listen
for incoming MAP Service messages.
- Following MAPServiceBase are exposed by
<classname>MAPProvider</classname>.
- <itemizedlist>
- <listitem>
- <para>For call handling service
<classname>org.mobicents.protocols.ss7.map.api.service.callhandling.MAPServiceCallHandling</classname></para>
- </listitem>
- <listitem>
- <para>For LSM service
<classname>org.mobicents.protocols.ss7.map.api.service.lsm.MAPServiceLsm</classname></para>
- </listitem>
- <listitem>
- <para>For mobility service
<classname>org.mobicents.protocols.ss7.map.api.service.mobility.MAPServiceMobility</classname></para>
- </listitem>
- <listitem>
- <para>For OAM service
<classname>org.mobicents.protocols.ss7.map.api.service.oam.MAPServiceOam</classname></para>
- </listitem>
- <listitem>
- <para>For PDP context activation service
<classname>org.mobicents.protocols.ss7.map.api.service.pdpContextActivation.MAPServicePdpContextActivation</classname></para>
- </listitem>
- <listitem>
- <para>For SMS service
<classname>org.mobicents.protocols.ss7.map.api.service.sms.MAPServiceSms</classname></para>
- </listitem>
- <listitem>
- <para>For supplementary service
<classname>org.mobicents.protocols.ss7.map.api.service.supplementary.MAPServiceSupplementary</classname></para>
- </listitem>
- </itemizedlist>
+ To listen for incoming MAP Dialog and MAP Primitive messages, the
MAP-User application should register the concrete implementation of
<classname>MAPDialogListener</classname> with
<classname>MAPProvider</classname>.
</para>
+ <para>
+ To listen for incoming MAP Service messages, the MAP-User
application should register the concrete implementation of
<classname>MAPServiceListener</classname> with the corresponding
<classname>MAPServiceBase </classname>. The following
<classname>MAPServiceBase</classname> services are exposed by the
<classname>MAPProvider</classname>:
+ <variablelist>
+ <varlistentry>
+ <term>Call handling service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.callhandling.MAPServiceCallHandling</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>LSM service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.lsm.MAPServiceLsm</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Mobility service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.mobility.MAPServiceMobility</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>OAM service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.oam.MAPServiceOam</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>PDP context activation service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.pdpContextActivation.MAPServicePdpContextActivation</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>SMS service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.sms.MAPServiceSms</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Supplementary service
+ </term>
+ <listitem>
+
<para><classname>org.mobicents.protocols.ss7.map.api.service.supplementary.MAPServiceSupplementary</classname>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+
+ </para>
<programlisting language="Java" role="JAVA"><![CDATA[
public class UssdClientExample implements MAPDialogListener,
MAPServiceSupplementaryListener {
@@ -184,7 +233,7 @@
}]]>
</programlisting>
- <para>Before any MAP specific service can be used, the corresponding
service should be activated.</para>
+ <para>Prior to using any MAP specific service, the corresponding service
should be activated as shown below:</para>
<programlisting language="Java" role="JAVA"><![CDATA[
....
@@ -194,7 +243,7 @@
</programlisting>
<para>
- The MAP User Application leverages:
+ The MAP-User Application leverages:
<itemizedlist>
<listitem>
<para><classname>MAPParameterFactory</classname> to create instances
of
@@ -232,7 +281,7 @@
<title>&THIS.APPLICATION; Sending a MAP request
(processUnstructuredSS-Request as an example)</title>
<para>
- For sending a MAP request we need at the client side:
+ For sending a MAP request, you must do the following at
the client side:
</para>
<para>
- Create a new MAP Dialog
@@ -264,7 +313,7 @@
// to encode/decode this.
byte ussdDataCodingScheme = 0x0f;
// The Charset is null, here we let system use default Charset (UTF-7 as
-// explained in GSM 03.38. However if MAP User wants, it can set its own
+// explained in GSM 03.38. However if MAP-User wants, it can set its own
// impl of Charset
USSDString ussdString = paramFact.createUSSDString(ussdMessage, null);
ISDNAddressString msisdn =
client.getMAPProvider().getMAPParameterFactory().
@@ -285,7 +334,7 @@
- Wait for a response from the server
</para>
<para>
- At the server side when receiving TC-Begin message the following
sequence of events occurs:
+ At the server side, when the TC-Begin message is received, the
following sequence of events occur:
</para>
<programlisting
language="Java"
@@ -296,11 +345,11 @@
<para>
This is the request for MAP Dialog processing.
- A MAP user can reject the Dialog by invoking
mapDialog.refuse() method.
+ A MAP-User can reject the Dialog by invoking the
<literal>mapDialog.refuse()</literal> method.
</para>
<para>
- Then the incoming primitives corresponded events (one or more) occur.
In this case it is
+ This is followed by the events (one or more) corresponding to the
incoming primitives. In this case it is:
</para>
<programlisting
language="Java"
@@ -309,7 +358,7 @@
]]></programlisting>
<para>
- When processing component-depended messages you can add response
components.
+ When processing component-dependant messages, you can add response
components.
In this case it is processUnstructuredSS-Response as an
example:
</para>
<programlisting
@@ -335,10 +384,10 @@
]]></programlisting>
<para>
- If the preparing of response takes more time we should return the
control and prepare the answer asynchronously in separate thread.
+ If preparing the response takes more time, you should return the
control and prepare the answer asynchronously in a separate thread.
</para>
<para>
- If error or reject primitives are included into a TCAP message
following events occur:
+ If error or reject primitives are included in a TCAP message, the
following events occur:
</para>
<programlisting
language="Java"
@@ -349,9 +398,8 @@
]]></programlisting>
<para>
- After all incoming components have been processing
onDialogDelimiter(MAPDialog mapDialog);
- event is invoked (or onDialogClose(MAPDialog mapDialog)
in TC-END case).
- If all response components have been prepared we can tell the stack to
send response:
+ After all incoming components have been processed, the event
<literal>onDialogDelimiter(MAPDialog mapDialog);</literal> or in the case
of TC-END, <literal>onDialogClose(MAPDialog mapDialog)</literal> is invoked.
+ If all response components have been prepared you can tell the stack to
send the response:
<itemizedlist>
<listitem>
<para><classname>mapDialog.close(false);</classname> - to send
TC-END</para>
@@ -363,18 +411,15 @@
<para><classname>mapDialog.close(true);</classname> - sends TC-END
without any components (prearrangedEnd)</para>
</listitem>
</itemizedlist>
- Instead of send() and close(boolean prearrangedEnd) methods you can
invoke
- sendDelayed() or closeDelayed(boolean prearrangedEnd)
methods.
- These methods make the same as send() and close() methods, but when
these methods are invoked from MAP Service message handlers
- (component handler methods called by stack while parsing incoming
components)
- real sending and dialog closing will occur only when all incoming
components events
- and onDialogDelimiter() or onDialogClose() is processed.
+ Instead of <literal>send()</literal> and <literal>close(boolean
prearrangedEnd</literal>) methods you can invoke
+ <literal>sendDelayed()</literal> or <literal>closeDelayed(boolean
prearrangedEnd)</literal> methods.
+ These methods are similar to <literal>send()</literal> and
<literal>close()</literal> methods, but when these methods are invoked from
MAP Service message handlers (component handler methods called by stack
while parsing incoming components), real sending and dialog closing will
occur only when all incoming component events and
<literal>onDialogDelimiter() </literal> or
<literal>onDialogClose()</literal> is processed.
- If all response components have been prepared we should return the
control and
- will send a response when all components are ready.
+ If all response components have been prepared you should return the
control and
+ send a response when all components are ready.
</para>
<para>
- In the error case you can terminate a MAP dialog in any method by
invoking
+ In case of an error, you can terminate a MAP dialog in any method by
invoking
<itemizedlist>
<listitem>
<para><classname>mapDialog.abort(mapUserAbortChoice);</classname> -
sends TC-U-ABORT primitive</para>
@@ -382,7 +427,7 @@
</itemizedlist>
</para>
<para>
- If no local actions or no response from a peer for a long time,
timeouts occur and the following methods are invoked:
+ If there are no local actions or there is no response from a peer for a
long time, a timeout occurs and the following methods are invoked:
<itemizedlist>
<listitem>
<para><classname>MAPDialogListener.onDialogTimeout(MAPDialog
mapDialog);</classname></para>
@@ -393,9 +438,9 @@
</itemizedlist>
</para>
<para>
- In <classname>onDialogTimeout()</classname> method you can invoke
<classname>mapDialog.keepAlive();</classname> to prevent closing a Dialog.
+ In the <classname>onDialogTimeout()</classname> method you can invoke
<classname>mapDialog.keepAlive();</classname> to prevent a Dialog from
closing.
For preventing an Invoke timeout you should invoke
<classname>resetInvokeTimer(Long invokeId);</classname>
- (before onInvokeTimeout() occured).
+ before <classname>onInvokeTimeout()</classname> occurs.
</para>
</section>
@@ -403,8 +448,6 @@
<section
id="map_usage_example">
<title>&THIS.APPLICATION; MAP Usage</title>
- <para>The complete example looks like</para>
-
<programlisting
language="Java"
role="JAVA"><![CDATA[
@@ -499,7 +542,7 @@
CBSDataCodingScheme ussdDataCodingScheme = new
CBSDataCodingSchemeImpl(0x0f);
// The Charset is null, here we let system use default Charset
(UTF-7 as
- // explained in GSM 03.38. However if MAP User wants, it can
set its own
+ // explained in GSM 03.38. However if MAP-User wants, it can
set its own
// impl of Charset
USSDString ussdString = paramFact.createUSSDString(ussdMessage, null,
null);