Permission to use, copy and distribute this documentation without modification, for any purpose and without fee or royalty is hereby granted, provided that both the above copyright notice and this permission notice appears in all copies and that the name of OpenSS7 Corporation not be used in advertising or publicity pertaining to distribution of this documentation or its contents without specific, written prior permission. OpenSS7 Corporation makes no representation about the suitability of this documentation for any purpose. It is provided “as is” without express or implied warranty.
OpenSS7 Corporation disclaims all warranties with regard to this documentation including all implied warranties of merchantability, fitness for a particular purpose, non-infringement, or title; that the contents of the document are suitable for any purpose, or that the implementation of such contents will not infringe on any third party patents, copyrights, trademarks or other rights. In no event shall OpenSS7 Corporation be liable for any direct, indirect, special or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with any use of this document or the performance or implementation of the contents thereof.
OpenSS7 Corporation is making this documentation available as a reference point for the industry. While OpenSS7 Corporation believes that these interfaces are well defined in this release of the document, minor changes may be made prior to products conforming to the interfaces being made available.
This document is a Application Programming Interface containing technical details concerning the implementation of the Mobile Application Part Interface (MAPI) for OpenSS7. It contains recommendations on software architecture as well as platform and system applicability of the Mobile Application Part Interface (MAPI).
The purpose of this document is to provide technical documentation of the Mobile Application Part Interface (MAPI). This document is intended to be included with the OpenSS7 STREAMS software package released by OpenSS7 Corporation. It is intended to assist software developers, maintainers and users of the Mobile Application Part Interface (MAPI) with understanding the software architecture and technical interfaces that are made available in the software package.
It is the intent of this document that it act as the primary source of information concerning the Mobile Application Part Interface (MAPI).
The audience for this document is software developers, maintainers and users and integrators of the Mobile Application Part Interface (MAPI).
Although the author has attempted to ensure that the information in this document is complete and correct, neither the Author nor OpenSS7 Corporation will take any responsibility in it.
Take care that you are working with a current version of this documentation: you will not be notified of updates. To ensure that you are working with a current version, check the OpenSS7 Project website for a current version.
A printed (or postscript) version of this document is an UNCONTROLLED version.
mapi.texi,v
Revision 0.9.2.5 2006/01/04 08:04:14 brian
- corrected documentation
This document specifies a STREAMS-based kernel-level instantiation of the 3GPP GSM/UMTS TS.29002 Mobile Application Part (MAP) service definition. The Mobile Application Part Interface (MAPI) enables the user of a mobile application service to access and use a wide variety of conforming mobile application service providers without specific knowledge of the provider's protocol. The service interface is designed to support any operation class of transaction protocol. This interface only specifies access to mobile application layer service providers, and does not address issues concerning mobile application layer management, protocol performance, and performance analysis tools.
This specification assumes that the reader is familiar with the 3GPP GSM/UTMS reference points and protocol stacks, Mobile Application Part services, and STREAMS.
This document specifies an interface that support the service provided by the Mobile Applications Part (MAP) specification for 3GPP GSM/UMTS as described in 3GPP TS 29.002. These specifications are targeted for use by developers and testers of protocol modules that require Mobile Applications Part services.
The Mobile Application Layer provides the means to manage the operation of a mobile network. It is responsible for the routing and management of data exchange between the MAP-User entities.
The MAPI defines the services provided by the MAP layer to the MAP-User at the boundary between the MAP layer and the MAP layer user entity. The interface consists of a set of primitives defined as STREAMS messages that provide access to the MAP layer services, and are transferred between the MAP user entity and the MAP provider. These primitives are of two types: ones that originate from the MAP user, and others that originate from the MAP provider. The primitives that originate from the MAP user make requests to the MAP provider, or respond to an event of the MAP provider. The primitives that originate from the MAP provider are either confirmation of a request or are indications to the MAP user that the event has occurred. Figure 1 shows the model of the MAPI. (See Modelling Principles.)
|
Figure 1 – Module of the MAP Interface
![]() |
The MAPI allows the MAP provider to be configured with any MAP user (such as an HLR, MSC or SGSN application) that also conforms to the MAPI. A MAP user can also be a user program that conforms to the MAPI and accesses the MAP provider using `putmsg()' and `getmsg()' system calls. 1
The features of the MAP are defined in terms of the services provided by the MAP provider, and the individual primitives that may flow between the MAP users and the MAP provider.
The services provided by the MAP are based on a number of application contexts corresponding to the 3GPP TS 29.002 Mobile Application Part application contexts. In addition, the MAP supports services for local management.
The MAP specifications also define a set of local management functions that apply to all application contexts. These services have local significance only.
Tables 1 and 2 summarizes the MAPI service primitives by their state and service.
| Service | Invoker | Performer
|
| MAP_OPEN |
| |
| MAP_DELIM |
| |
| MAP_CLOSE |
| |
| MAP_UABORT | User | User
|
| MAP_PABORT | Provider | User
|
| MAP_NOTICE |
| |
| MAP_STC1 |
| |
| MAP_STC2 |
| |
| MAP_STC3 |
| |
| MAP_STC4 |
|
| Service | Invoker | Performer
|
| MAP_ACTSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_ACTTM | HLR | VLR or SGSN
|
| MAP_ALERTSC | HLR | SMS-IWMSC
|
| MAP_ANYMOD | SCF | HLR
|
| PNA | VLR or SGSN
| |
| MAP_ANYSUB | SCF | HLR
|
| MAP_AUTH | VLR | MSC
|
| MAP_AUTHFAIL | VLR or SGSN | HLR
|
| MAP_CANCLOC | HLR | VLR or SGSN
|
| MAP_CKIEMI | VLR | MSC
|
| MSC or SGSN | EIR
| |
| MAP_DEACTSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_DEACTTM | HLR | VLR or SGSN
|
| MAP_DELSUBD | HLR | VLR or SGSN
|
| MAP_ERASECC | MSC | VLR
|
| VLR | HLR
| |
| MAP_ERASESS | MSC | VLR
|
| VLR | HLR
| |
| MAP_FAILURE | GGSN | HLR
|
| MAP_FAS | MSC-A | MSC-B
|
| MAP_FCKSSIND | HLR | VLR
|
| MAP_FGRCSIG | Anchor MSC | Relay MSC
|
| MAP_MTFSMS | SMS-GMSC | MSC or SGSN
|
| MAP_MOFSMS | MSC | SMS-IWMSC
|
| MAP_GETPASS | HLR | VLR
|
| VLR | MSC
| |
| MAP_INFORMSC | HLR | SMS-GMSC
|
| MAP_INSSUBSD | HLR | VLR or SGSN
|
| MAP_INTERGSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_ISTALERT | VMSC or GMSC | HLR
|
| MAP_ISTCMD | HLR | VMSC or GMSC
|
| MAP_MMEVENT | VLR or SGSN | SCF
|
| MAP_MSGPRSPRES | HLR | GGSN
|
| MAP_SUBSDATAMOD | HLR | SCF
|
| MAP_PREPGC | Anchor MSC | Relay MSC
|
| MAP_PREPHO | MSC-A | MSC-B
|
| MAP_PREPSH | MSC-B | MSC-A
|
| MAP_PROCAS | MSC | VLR
|
| MAP_PROCGC | Relay MSC | Anchor MSC
|
| MAP_PROCUSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_PROVRN | HLR | VLR
|
| MAP_PROVSLOC | GMLC | VMSC or SGSN
|
| MAP_PROVSUBI | VLR | SGSN
|
| MAP_PURGEMS | VLR or SGSN | HLR
|
| MAP_RDYSM | MSC | VLR
|
| VLR or SGSN | HLR
| |
| MAP_REGCC | MSC | VLR
|
| VLR | HLR
| |
| MAP_REGPW | MSC | VLR
|
| VLR | HLR
| |
| MAP_REGSS | MSC | VLR
|
| MAP_REMUSRFREE | HLR | VLR
|
| MAP_SMDELIVSTAT | SMS-GMSC | HLR
|
| MAP_RESET | HLR | VLR or SGSN
|
| MAP_RESTORE | VLR | HLR
|
| MAP_SENDGCEND | Relay MSC | Anchor MSC
|
| MAP_SENDEND | MSC-B | MSC-A
|
| MAP_SENDAUTHI | VLR or SGSN | HLR
|
| MAP_SENDIMSI | VLR | MSC
|
| MAP_SENDID | VLR | old VLR
|
| MAP_SENDSMSRI | SMS-GMSC | HLR
|
| MAP_SENDGPRSRI | GGSN | HLR
|
| MAP_SENDLCSRI | GMLC | HLR
|
| MAP_SENDRI | GMSC or SCF | HLR or NPLR
|
| MAP_SETREP | HLR | VLR
|
| MAP_STATUS | VLR | HLR
|
| MAP_SUBLOCREP | VMSC or SGSN | GMLC
|
| MAP_USSDNTFY | SCF | HLR
|
| HLR | VLR
| |
| VLR | MSC
| |
| MAP_USSDREQ | SCF | HLR
|
| HLR | VLR
| |
| VLR | MSC
| |
| MAP_UDGPRSLOC | SGSN | HLR
|
| MAP_UDLOC | VLR | HLR
|
| Service | Invoker | Performer
|
| MAP_UDLOC | VLR | HLR
|
| MAP_CANCLOC | HLR | VLR or SGSN
|
| MAP_SENDID | VLR | old VLR
|
| MAP_PURGEMS | VLR or SGSN | HLR
|
| MAP_UDGPRSLOC | SGSN | HLR
|
| MAP_MMEVENT | VLR or SGSN | SCF
|
| Service | Invoker | Performer
|
| MAP_PAGE | VLR | MSC
|
| MAP_SEARCH | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_PROCAS | MSC | VLR
|
| Service | Invoker | Performer
|
| MAP_PREPHO | MSC-A | MSC-B
|
| MAP_SENDEND | MSC-B | MSC-A
|
| MAP_PROCAS | MSC-B | MSC-A
|
| MAP_FAS | MSC-A | MSC-B
|
| MAP_PREPSH | MSC-B | MSC-A
|
| MAP_ALLOCHN | MSC | VLR
|
| MAP_SENDHOREP | VLR | MSC-B
|
| Service | Invoker | Performer
|
| MAP_AUTH | VLR | MSC
|
| MAP_SENDAUTHI | VLR or SGSN | HLR
|
| MAP_AUTHFAIL | VLR or SGSN | HLR
|
| Service | Invoker | Performer
|
| MAP_SETCM | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_CKIEMI | VLR | MSC
|
| MSC or SGSN | EIR
| |
| MAP_GETIEMI | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_INSSUBSD | HLR | VLR or SGSN
|
| MAP_DELSUBD | HLR | VLR or SGSN
|
| Service | Invoker | Performer
|
| MAP_PROVIMSI | VLR | MSC
|
| MAP_FNEWIMSI | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_RESET | HLR | VLR or SGSN
|
| MAP_FCKSSIND | HLR | VLR
|
| MAP_RESTORE | VLR | HLR
|
| Service | Invoker | Performer
|
| MAP_ANYQRY | SCF | HLR or GMLC or NPLR
|
| MAP_PROVSUBI | VLR | SGSN
|
| MAP_ANYSUB | SCF | HLR
|
| MAP_ANYMOD | SCF | HLR
|
| PNA | VLR or SGSN
| |
| MAP_SUBSDATAMOD | HLR | SCF
|
| Service | Invoker | Performer
|
| MAP_ACTTM | HLR | VLR or SGSN
|
| MAP_DEACTTM | HLR | VLR or SGSN
|
| MAP_TRACESA | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_SENDIMSI | VLR | MSC
|
| Service | Invoker | Performer
|
| MAP_SENDRI | GMSC or SCF | HLR or NPLR
|
| MAP_PROVRN | HLR | VLR
|
| MAP_RESUME | VMSC | GMSC
|
| MAP_PREPGC | Anchor MSC | Relay MSC
|
| MAP_PROCGC | Relay MSC | Anchor MSC
|
| MAP_FGRCSIG | Anchor MSC | Relay MSC
|
| MAP_SENDGCEND | Relay MSC | Anchor MSC
|
| MAP_SETREP | HLR | VLR
|
| MAP_STATUS | VLR | HLR
|
| MAP_REMUSRFREE | HLR | VLR
|
| MAP_ISTALERT | VMSC or GMSC | HLR
|
| MAP-ISTCMD | HLR | VMSC or GMSC
|
| Service | Invoker | Performer
|
| MAP_REGSS | MSC | VLR
|
| MAP_ERASESS | MSC | VLR
|
| VLR | HLR
| |
| MAP_ACTSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_DEACTSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_INTERGSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_REGPW | MSC | VLR
|
| VLR | HLR
| |
| MAP_GETPASS | HLR | VLR
|
| VLR | MSC
| |
| MAP_PROCUSS | MSC | VLR
|
| VLR | HLR
| |
| MAP_USSDREQ | SCF | HLR
|
| HLR | VLR
| |
| VLR | MSC
| |
| MAP_USSDNTFY | SCF | HLR
|
| HLR | VLR
| |
| VLR | MSC
| |
| MAP_SSINV | MSC or HLR | SCF
|
| MAP_REGCC | MSC | VLR
|
| VLR | HLR
| |
| MAP_ERASECC | MSC | VLR
|
| VLR | HLR
|
| Service | Invoker | Performer
|
| MAP_SENDSMSRI | SMS-GMSC | HLR
|
| MAP_MOFSMS | MSC | SMS-IWMSC
|
| MAP_SMDELIVSTAT | SMS-GMSC | HLR
|
| MAP_RDYSM | MSC | VLR
|
| MAP_RDYSM | VLR or SGSN | HLR
|
| MAP_ALERTSC | HLR | SMS-IWMSC
|
| MAP_INFORMSC | HLR | SMS-GMSC
|
| MAP_SENDMTSMSI | MSC | VLR
|
| MAP_SENDMOSMSI | MSC | VLR
|
| MAP_MTFSMS | SMS-GMSC | MSC or SGSN
|
| Service | Invoker | Performer
|
| MAP_SENDGPRSRI | GGSN | HLR
|
| MAP_FAILURE | GGSN | HLR
|
| MAP_MSGPRSPRES | HLR | GGSN
|
| Service | Invoker | Performer
|
| MAP_SENDLCSRI | GMLC | HLR
|
| MAP_PROVSLOC | GMLC | VMSC or SGSN
|
| MAP_SUBLOCREP | VMSC or SGSN | GMLC
|
| Service | Invoker | Performer
|
| MAP_PAGE | VLR | MSC
|
| MAP_SEARCH | VLR | MSC
|
| MAP_SENDHOREP | VLR | MSC
|
| MAP_AUTH | VLR | MSC
|
| MAP_SETCM | VLR | MSC
|
| MAP_CKIEMI | VLR | MSC
|
| MAP_GETIEMI | VLR | MSC
|
| MAP_PROVIMSI | VLR | MSC
|
| MAP_FNEWIMSI | VLR | MSC
|
| MAP_TRACESA | VLR | MSC
|
| MAP_SENDIMSI | VLR | MSC
|
| MAP_ISTCMD | HLR | MSC
|
| MAP_GETPASS | VLR | MSC
|
| MAP_USSDREQ | VLR | MSC
|
| MAP_USSDNTFY | VLR | MSC
|
| MAP_MTFSMS | SMS-GMSC | MSC
|
| MAP_PROVSLOC | GMLC | MSC
|
| Service | Invoker | Performer
|
| MAP_PROCAS | MSC | VLR
|
| MAP_CKIEMI | MSC | EIR
|
| MAP_ALLOCHN | MSC | VLR
|
| MAP_RESUME | MSC | GMSC
|
| MAP_ISTALERT | MSC | HLR
|
| MAP_REGSS | MSC | VLR
|
| MAP_ERASESS | MSC | VLR
|
| MAP_ACTSS | MSC | VLR
|
| MAP_DEACTSS | MSC | VLR
|
| MAP_INTERGSS | MSC | VLR
|
| MAP_REGPW | MSC | VLR
|
| MAP_PROCUSS | MSC | VLR
|
| MAP_SSINV | MSC | SCF
|
| MAP_REGCC | MSC | VLR
|
| MAP_ERASECC | MSC | VLR
|
| MAP_MOFSMS | MSC | SMS-IWMSC
|
| MAP_RDYSM | MSC | VLR
|
| MAP_SENDMTSMSI | MSC | VLR
|
| MAP_SENDMOSMSI | MSC | VLR
|
| MAP_SUBLOCREP | MSC | GMLC
|
| Service | Invoker | Performer
|
| MAP_PREPHO | MSC-A | MSC-B
|
| MAP_SENDEND | MSC-B | MSC-A
|
| MAP_PROCAS | MSC-B | MSC-A
|
| MAP_FAS | MSC-A | MSC-B
|
| MAP_PREPSH | MSC-B | MSC-A
|
| MAP_PREPGC | Anchor MSC | Relay MSC
|
| MAP_PROCGC | Relay MSC | Anchor MSC
|
| MAP_FGRCSIG | Anchor MSC | Relay MSC
|
| MAP_SENDGCEND | Relay MSC | Anchor MSC
|
| Service | Invoker | Performer
|
| MAP_UDLOC | VLR | HLR
|
| MAP_PURGEMS | VLR or SGSN | HLR
|
| MAP_UDGPRSLOC | SGSN | HLR
|
| MAP_SENDAUTHI | VLR or SGSN | HLR
|
| MAP_AUTHFAIL | VLR or SGSN | HLR
|
| MAP_RESTORE | VLR | HLR
|
| MAP_ANYQRY | SCF | HLR
|
| MAP_ANYSUB | SCF | HLR
|
| MAP_ANYMOD | SCF | HLR
|
| MAP_SENDRI | GMSC or SCF | HLR
|
| MAP_STATUS | VLR | HLR
|
| MAP_ISTALERT | VMSC or GMSC | HLR
|
| MAP_ERASESS | VLR | HLR
|
| MAP_ACTSS | VLR | HLR
|
| MAP_DEACTSS | VLR | HLR
|
| MAP_INTERGSS | VLR | HLR
|
| MAP_REGPW | VLR | HLR
|
| MAP_PROCUSS | VLR | HLR
|
| MAP_REGCC | VLR | HLR
|
| MAP_ERASECC | VLR | HLR
|
| MAP_SENDSMSRI | SMS-GMSC | HLR
|
| MAP_SMDELIVSTAT | SMS-GMSC | HLR
|
| MAP_RDYSM | VLR or SGSN | HLR
|
| MAP_SENDGPRSRI | GGSN | HLR
|
| MAP_FAILURE | GGSN | HLR
|
| MAP_USSDREQ | SCF | HLR
|
| MAP_SENDLCSRI | GMLC | HLR
|
| MAP_USSDNTFY | SCF | HLR
|
| Service | Invoker | Performer
|
| MAP_CANCLOC | HLR | VLR or SGSN
|
| MAP_INSSUBSD | HLR | VLR or SGSN
|
| MAP_DELSUBD | HLR | VLR or SGSN
|
| MAP_RESET | HLR | VLR or SGSN
|
| MAP_FCKSSIND | HLR | VLR
|
| MAP_SUBSDATAMOD | HLR | SCF
|
| MAP_ACTTM | HLR | VLR or SGSN
|
| MAP_DEACTTM | HLR | VLR or SGSN
|
| MAP_PROVRN | HLR | VLR
|
| MAP_SETREP | HLR | VLR
|
| MAP_REMUSRFREE | HLR | VLR
|
| MAP_ISTCMD | HLR | VMSC or GMSC
|
| MAP_GETPASS | HLR | VLR
|
| MAP_USSDREQ | HLR | VLR
|
| MAP_USSDNTFY | HLR | VLR
|
| MAP_SSINV | HLR | SCF
|
| MAP_ALERTSC | HLR | SMS-IWMSC
|
| MAP_INFORMSC | HLR | SMS-GMSC
|
| MAP_MSGPRSPRES | HLR | GGSN
|
| Service | Invoker | Performer
|
| MAP_CANCLOC | HLR | VLR
|
| MAP_PROCAS | MSC | VLR
|
| MAP_ALLOCHN | MSC | VLR
|
| MAP_INSSUBSD | HLR | VLR
|
| MAP_DELSUBD | HLR | VLR
|
| MAP_SENDID | VLR | old VLR
|
| MAP_RESET | HLR | VLR
|
| MAP_FCKSSIND | HLR | VLR
|
| MAP_ANYMOD | PNA | VLR
|
| MAP_ACTTM | HLR | VLR
|
| MAP_DEACTTM | HLR | VLR
|
| MAP_PROVRN | HLR | VLR
|
| MAP_SETREP | HLR | VLR
|
| MAP_REMUSRFREE | HLR | VLR
|
| MAP_REGSS | MSC | VLR
|
| MAP_ERASESS | MSC | VLR
|
| MAP_ACTSS | MSC | VLR
|
| MAP_DEACTSS | MSC | VLR
|
| MAP_INTERGSS | MSC | VLR
|
| MAP_REGPW | MSC | VLR
|
| MAP_GETPASS | HLR | VLR
|
| MAP_PROCUSS | MSC | VLR
|
| MAP_USSDREQ | HLR | VLR
|
| MAP_USSDNTFY | HLR | VLR
|
| MAP_REGCC | MSC | VLR
|
| MAP_ERASECC | MSC | VLR
|
| MAP_RDYSM | MSC | VLR
|
| MAP_SENDMTSMSI | MSC | VLR
|
| MAP_SENDMOSMSI | MSC | VLR
|
| Service | Invoker | Performer
|
| MAP_UDLOC | VLR | HLR
|
| MAP_SENDID | VLR | old VLR
|
| MAP_PURGEMS | VLR | HLR
|
| MAP_MMEVENT | VLR | SCF
|
| MAP_PAGE | VLR | MSC
|
| MAP_SEARCH | VLR | MSC
|
| MAP_SENDHOREP | VLR | MSC-B
|
| MAP_AUTH | VLR | MSC
|
| MAP_SENDAUTHI | VLR | HLR
|
| MAP_AUTHFAIL | VLR | HLR
|
| MAP_SETCM | VLR | MSC
|
| MAP_CKIEMI | VLR | MSC
|
| MAP_GETIEMI | VLR | MSC
|
| MAP_PROVIMSI | VLR | MSC
|
| MAP_FNEWIMSI | VLR | MSC
|
| MAP_RESTORE | VLR | HLR
|
| MAP_PROVSUBI | VLR | SGSN
|
| MAP_TRACESA | VLR | MSC
|
| MAP_SENDIMSI | VLR | MSC
|
| MAP_STATUS | VLR | HLR
|
| MAP_ERASESS | VLR | HLR
|
| MAP_ACTSS | VLR | HLR
|
| MAP_DEACTSS | VLR | HLR
|
| MAP_INTERGSS | VLR | HLR
|
| MAP_REGPW | VLR | HLR
|
| MAP_GETPASS | VLR | MSC
|
| MAP_PROCUSS | VLR | HLR
|
| MAP_USSDREQ | VLR | MSC
|
| MAP_USSDNTFY | VLR | MSC
|
| MAP_REGCC | VLR | HLR
|
| MAP_ERASECC | VLR | HLR
|
| MAP_RDYSM | VLR | HLR
|
| Service | Invoker | Performer
|
| MAP_CKIEMI | MSC or SGSN | EIR
|
| Service | Invoker | Performer
|
| MAP_CANCLOC | HLR | SGSN
|
| MAP_INSSUBSD | HLR | SGSN
|
| MAP_DELSUBD | HLR | SGSN
|
| MAP_RESET | HLR | SGSN
|
| MAP_PROVSUBI | VLR | SGSN
|
| MAP_ANYMOD | PNA | SGSN
|
| MAP_ACTTM | HLR | SGSN
|
| MAP_DEACTTM | HLR | SGSN
|
| MAP_MTFSMS | SMS-GMSC | SGSN
|
| MAP_PROVSLOC | GMLC | SGSN
|
| Service | Invoker | Performer
|
| MAP_PURGEMS | SGSN | HLR
|
| MAP_UDGPRSLOC | SGSN | HLR
|
| MAP_MMEVENT | SGSN | SCF
|
| MAP_SENDAUTHI | SGSN | HLR
|
| MAP_AUTHFAIL | SGSN | HLR
|
| MAP_CKIEMI | SGSN | EIR
|
| MAP_RDYSM | SGSN | HLR
|
| MAP_SUBLOCREP | SGSN | GMLC
|
| Service | Invoker | Performer
|
| MAP_MSGPRSPRES | HLR | GGSN
|
| Service | Invoker | Performer
|
| MAP_SENDGPRSRI | GGSN | HLR
|
| MAP_FAILURE | GGSN | HLR
|
| Service | Invoker | Performer
|
| MAP_MOFSMS | MSC | SMS-IWMSC
|
| MAP_ALERTSC | HLR | SMS-IWMSC
|
| Service | Invoker | Performer
|
| MAP_INFORMSC | HLR | SMS-GMSC
|
| Service | Invoker | Performer
|
| MAP_SENDSMSRI | SMS-GMSC | HLR
|
| MAP_SMDELIVSTAT | SMS-GMSC | HLR
|
| MAP_MTFSMS | SMS-GMSC | MSC or SGSN
|
| Service | Invoker | Performer
|
| MAP_ANYQRY | SCF | GMLC
|
| MAP_SUBLOCREP | VMSC or SGSN | GMLC
|
| Service | Invoker | Performer
|
| MAP_SENDLCSRI | GMLC | HLR
|
| MAP_PROVSLOC | GMLC | VMSC or SGSN
|
This chapter describes the services of the MAP primitives. Time-sequence diagrams that illustrate the sequence of primitives is included. (Conventions for the time-sequence diagrams are defined in ITU-T X.210). The format of the primitives will be defined later in the document.
The services defined in this section are outside the scope of the international standards. These services apply to all applications contexts and specific service primitives. They are invoked for the initialization or de-initialization of a stream connected to the MAP provider. They are also used to manage options supported by the MAP provider and to report information on the supported parameter values.
This service provides information on the options supported by the MAP provider.
MAP_INFO_REQ:
This primitive requests that the MAP provider return the values of all the supported protocol parameters. This request
may be invoked during any phase.
MAP_INFO_ACK:
This primitive is in response to the MAP_INFO_REQ primitive and returns the values of the supported protocol
parameters to the MAP user.
The sequence of primitives for mobile application part information management is shown in Figure 2.
|
Figure 2. Sequence of Primitives;
MAP Information Reporting Serivce
|
The service allows a network address and application contexts to be associated with a stream. It allows the MAP user to negotiate the number of dialogues that can remain outstanding for that MAP user (a dialogue is considered unacknowledged while it is awaiting a corresponding response or abort from the MAP user). This service also defines a mechanism that allows a stream (bound to a network address of the MAP user) to be reserved to handle remote initiated dialogues only. This stream is referred to as the listener stream.
MAP_BIND_REQ:
This primitive requests that the MAP user be bound to a particular network address and application context, and
negotiate the number of allowable outstanding open indications for that address.
MAP_BIND_ACK:
This primitive is in response to the MAP_BIND_REQ primitive and indicates to the user that the specified MAP
user has been bound to a network address and application context.
The sequence of primitives for the MAP user bind service is shown in Figure 3.
|
Figure 2. Sequence of Primitives;
MAP User Bind Service
|
This service allows the MAP user to be unbound from a network address and application context.
MAP_UNBIND_REQ:
This primitive requests that the MAP user be unbound from the network address and application context(s) to which it was
previously bound.
The sequence of primitives for MAP user unbind service is shown in Figure 4.
|
Figure 4. Sequence of Primitives;
MAP User Unbind & Receipt Acknowledgement Services
|
MAP_OK_ACK:
This primitive indicates to the MAP user that the previous MAP user originated primitive was received successfully by
the MAP provider.
An example showing the sequence of primitives for successful receipt acknowledgement is depicted in Figure 4.
This service allows the MAP user to manage the QOS parameter values and other options associated with the MAP provider.
MAP_OPTMGMT_REQ:
This primitive allows the MAP user to select default values for QoS parameters within the range supported by the MAP
provider, and to indicate the default selection of additional options supported by the MAP provider.
Figure 5 shows the sequence of primitives for MAP options management service.
|
Figure 5. Sequence of Primitives;
Options Management Service.
|
MAP_ERROR_ACK:
This primitive indicates to the MAP user that a non-fatal error has occurred in the last MAP user originated request or
response primitive (listed in Figure 6), on the stream.
Figure 6 shows the sequence of primitives for the error acknowledgement service.
|
Figure 6. Sequence of Primitives;
Error Acknowledgement Service.
|
This section describes the required MAP service primitives that define the Dialogue Handling interface.
The queue model for Dialogue Handling is discussed in more detail in CCITT X.219.
The queue module represents the operation of a MAP dialogue in the abstract by a pair of queues linking the two MAP user entities. There is one queue for each direction of information flow. Each queue represents a flow control function in one direction of transfer. The ability of a user to add objects to a queue will be determined by the behaviour of the user removing objects from that queue, and the state of the queue. The pair of queues is considered to be available for each potential MAP dialogue. Objects that are entered or removed from the queue are either as a result of interactions at the two MAP users, or as a result of MAP provider initiatives.
Table Y shows the ordering relationships among the queue model objects.
| Object X
| |||||
| Object Y | Open | Components | Delimiter | Close | Abort
|
| Open | N/A | – | – | DES |
|
| Components | N/A | – | – | DES |
|
| Deilmiter | N/A | – | – | DES |
|
| Close | N/A | – | – | DES |
|
| Abort | N/A | N/A | N/A | – |
|
A pair of queues is associated with a MAP dialogue between two MAP user entities when the MAP provider receives a
MAP_OPEN_REQ primitive at one of the MAP user interfaces resulting in the “begin” object being entered into
the queue. The queues will remain associated with the MAP dialogue until a MAP_CLOSE_REQ or indication
primitive (resulting in an “end” object) is either entered or removed from a queue. Similarly, in the queue from the
called MAP user, objects can be entered into the queue only after the “continue” object associated with the
MAP_OPEN_RES primitive has been entered into the queue. Alternatively, the called MAP user can enter a
an “end” or “abort” object into the queue instead of the “continue” object to terminate the dialogue.
The MAP dialogue establishment procedure will fail if the MAP provider is unable to establish a TCAP dialogue, or if the
destination MAP user is unable to accept the MAP_OPEN_IND.
MAP_OPEN_REQ:
This primitive requests that the MAP provider establish a dialogue to the specified destination under an application
context.
MAP_OPEN_RES:
This primitives requests that the MAP provider accept a previous dialogue indication.
MAP_OPEN_IND:
This primitive indicates to the MAP user that a dialogue request has been made within an application context by a user
at the specified source address.
MAP_OPEN_CON:
This primitive indicates to the MAP user that a dialogue request has been confirmed on the specified responding address.
The sequence of primitives for a successful MAP dialogue establishment is defined by the time sequence diagram as shown in Figure 7. The sequence of primitives for the MAP dialogue response token value determination is shown in Figure 8 (procedures for MAP response token value determination are discussed later).
|
Figure 7. Sequence of Primitives;
Successful MAP Dialogue Establishment
|
|
Figure 8. Sequence of Primitives;
MAP Dialogue Response Token Value Determination
|
Flow control within the MAP dialogue is performed by management of the queue capacity, and by allowing objects of certain types to be inserted to the queues as shown in Table 4.
| Object X
| ||||
| Object Y | Class 1 | Class 2 | Class 3 | Class 4
|
| Class 1 | Yes | Yes | Yes | Yes
|
| Class 2 | Yes | Yes | Yes | Yes
|
| Class 3 | Yes | Yes | Yes | Yes
|
| Class 4 | Yes | Yes | Yes | Yes
|
MAP_DELIM_IND:
This primitive requests that the MAP provider deliver any accumulated components from previous service specific request
or response primitives.
MAP_DELIM_IND:
This primitive indicates that the MAP provider has delivered any accumulated components belonging to the previous service
specific indication or confirmation primitive.
Figure 9 shows the sequence of primitives for successful component transfer. The sequence of primitives may remain
incomplete if a MAP_ABORT or MAP_CLOSE primitive occurs.
|
Figure 9. Sequence of Primitives;
Component Transfer.
|
The sequence of primitives in a successful Class 1 operation is defined in the time sequence diagram as shown in Figure 10.
|
Figure 10. Sequence of Primitives;
Successful Confirmation of Receipt.
|
The sequence of primitives as shown above may remain incomplete if a MAP_UABORT, MAP_PABORT or
MAP_CLOSE primitive occurs (see Table 3). A MAP user must not issue a Service Specific Response primitive
if no Service Specific Indication primitive for a confirmed service has been received, or if all such Service
Specific Indication primitives have been previously confirmed. Following a MAP_UABORT or MAP_PABORT, a
MAP user may not issue a Service Specific Response to confirm outstanding Service Specific Indication
primitives received before the abort procedure was signalled.
Note — The witholding of confirmation of a service by a MAP user can have an effect on the attainable throughput.
The sequence of primitives for component transfer is shown in the time sequence diagram in Figure 11. This sequence of
primitives may remain incomplete if a MAP_ABORT or MAP_CLOSE primitive is issued.
|
Figure 11. Sequence of Primitives;
Expedited Data Transfer.
|
The MAP dialogue release procedure is initialized by the insertion of an “abort” or “end” object into the queue. As shown in Table 3, the “abort” is destructive with respect to other objects in the queue, and eventually results in the emptying of queues and termination of the MAP dialogue.
The sequence of primitivies depends on the origin of the release action. The sequence of primitives may be:
MAP_ABORT_REQ:
This primitive requests that the MAP provider deny an outstanding request for an association (MAP_OPEN_IND) or
abort an existing association.
MAP_UABORT_IND:
This primitive indicates to the MAP user that either a request for association has been denied or an existing
association has been terminated.
MAP_PABORT_IND:
This primitive indicates to the MAP user that either a request for association has been denied or an existing
association has been terminated.
The sequence of primitives are shown in the time sequence diagrams in n Figures 16, 17, 18 and 19.
|
Figure 16. Sequence of Primitives;
MAP User Invoked Abort.
|
|
Figure 17. Sequence of Primitives;
Simultaneous MAP User Invoked Abort.
|
|
Figure 18. Sequence of Primitives;
MAP Provider Invoked Abort.
|
|
Figure 19. Sequence of Primitives;
Simultaneous MAP User and MAP Provider Invoked Abort.
|
A MAP user may reject a MAP association establishment by issuing a MAP_ABORT_REQ. The originator parameter in
the MAP_UABORT_IND primitive will indicate MAP user invoked release. The sequence of events is shown in Figure
20.
|
Figure 20. Sequence of Primitives;
MAP User Rejection of a MAP Association Establishment Attempt.
|
If the MAP provider is unable to establish a MAP association, it indicates this to the requester by a
MAP_PABORT_IND. The originator in this primitive indicates a MAP provider invoked release. This is shown in
Figure 21.
|
Figure 21. Sequence of Primitives;
MAP Provider Rejection of a MAP Association Establishement Attempt.
|
This section describes the format and parameters of the MAPI primitives (Appendix A shows the mapping of the MAPI primitives to the primitives defined in 3GPP TS 29.002 and ANSI41-D). Also, it discusses the states in which the primitive is valid, the resulting state and the acknowledgement that the primitive expects. (The state/event tables for these primitives are shown in Appendix B. The precedence tables for the MAPI primitives are shown in Appendix C.) Rules for 3GPP and ANSI conformance are described in Addendum to this document.
| SERVICE | PRIMITIVE | PARAMETERS
|
| Information | MAP_INFO_REQ |
|
| Reporting | MAP_INFO_ACK |
|
| Bind | MAP_BIND_REQ |
|
MAP_BIND_ACK |
| |
| Unbind | MAP_UNBIND_REQ |
|
| Error | MAP_ERROR_ACK |
|
| Success | MAP_OK_ACK |
|
Tables 5, 6 and 7 provide a summary of the MAP primitives and their parameters.
| SERVICE | PRIMITIVE | PARAMETERS
|
| Association | MAP_OPEN_REQ |
(Application context name, Destination address, Destination reference, Originating address, Originating reference, Specific information)
|
| Establishment | MAP_OPEN_IND |
(Application context name, Destination address, Destination reference, Originating address, Originating reference, Specific information)
|
MAP_OPEN_RES |
(Application context name, Responding address, Result, Refuse-reason, Specific information)
| |
MAP_OPEN_CON |
(Application context name, Responding address, Result, Refuse-reason, Specific information, Provider-error)
|
| SERVICE | PRIMITIVE | PARAMETERS
|
| Service | MAP_XXX_REQ |
(Specific information)
|
| Specific | MAP_XXX_IND |
(Specific information)
|
| Primitives | MAP_XXX_RES |
(Specific information)
|
MAP_XXX_CON |
(Specific information)
| |
| Delimitation | MAP_DELIM_REQ |
(none)
|
MAP_DELIM_IND |
(none)
|
| SERVICE | PRIMITIVE | PARAMETERS
|
| Association | MAP_CLOSE_REQ |
(Release method, Specific information)
|
| Termination | MAP_CLOSE_IND |
(Specific information)
|
| Assocation | MAP_ABORT_REQ |
(User reason, Diagnostic information, Specific information)
|
| Abort | MAP_UABORT_IND |
(User reason, Diagnostic information, Specific information)
|
| Abort | MAP_PABORT_IND |
(Provider reason, Source)
|
| Notice | MAP_NOTICE_IND |
()
|
| SERVICE | PRIMITIVE | PARAMETERS
|
| Class 1 | MAP_STC1_REQ |
|
MAP_STC1_IND |
| |
| Class 2 | MAP_STC2_REQ |
|
MAP_STC2_IND |
| |
| Class 3 | MAP_STC3_REQ |
|
MAP_STC3_IND |
| |
| Class 4 | MAP_STC4_REQ |
|
MAP_STC4_IND |
|
These primitives appy to all protocol classes.
This primitive requests the MAP provider to return the values of all supported protocol parameters (see MAP_INFO_ACK), and also the current state of the MAP provider. 2
The format of the message is one `M_PROTO' message block and its structure is as follows:
typedef struct {
ulong PRIM_type; /* always MAP_INFO_REQ */
} MAP_info_req_t;
This primitive is valid in any state where a local acknowledgement is not pending.
The new state remains unchanged from the old state.
This primitive requires the MAP provider to generate one of the following acknowledgements upon receipt of the pirmitive:
MAP_INFO_ACK primitive described in MAP_INFO_ACK.
This primitive indicates to the MAP users any relevant protocol-dependent parameters.
3
It should be initiated in response to the MAP_INFO_REQ primitive described above in MAP_INFO_REQ.
The format of the message is one `M_PCPROTO' message block. The format of the `M_PCPROTO' message block is as follows:
typedef struct {
ulong PRIM_type; /* always MAP_INFO_ACK */
ulong TSDU_size; /* maximum TSDU size */
ulong ETSDU_size; /* maximum ETSDU size */
ulong CDATA_size; /* connect data size */
ulong DDATA_size; /* disconnect data size */
ulong ADDR_size; /* address size */
ulong ADDR_length; /* address length */
ulong ADDR_offset; /* address offset */
ulong QOS_length; /* default QOS values length */
ulong QOS_offset; /* default QOS values offset */
ulong QOS_range_length; /* QOS range length */
ulong QOS_range_offset; /* QOS range offset */
ulong OPTIONS_flags; /* bit masking for options */
ulong TIDU_size; /* transaction interface data size */
long SERV_type; /* service type */
ulong CURRENT_state; /* current state */
ulong PROVIDER_type; /* type of provider */
ulong NODU_size; /* optimal TSDU size */
ulong PROTOID_length; /* length of bound protocol ids */
ulong PROTOID_offset; /* offset of bound protocol ids */
ulong MAPI_version; /* supported MAPI version number */
} MAP_info_ack_t;
M_PCPROTO message block of the network address
bound on the stream on which the MAP_INFO_REQ was issued (a network address is bound to a stream via a
MAP_BIND_REQ).
SENDZEROXPG4_1MAP_ADDR_REQ and
MAP_ADDR_ACK.
The following rules apply when the type of service is operations class 4:
This primitive requests that the MAP provider bind a protocol address to the stream, negotiate the number of dialogue open indications allowed to be outstanding by the MAP provider for the specified protocol address, and activate 5 the stream associated with the protocol address.
The format of the message is one `M_PROTO' message block. The format of the `M_PROTO' message block is as follows:
typedef struct {
ulong PRIM_type; /* always MAP_BIND_REQ */
ulong ADDR_length; /* length of protocol address */
ulong ADDR_offset; /* offset of protocol address */
unsigned long DIAIND_number; /* requested number of dialogue indications to be queued */
} MAP_bind_req_t;
This primitive requires the MAP provider to geenrate one of the following acknowledgements upon receipt of the primitive, and the MAP user must wait for the acknowledgement before issuing any other primitive:
MAP_BIND_ACK primitive described in
MAP_BIND_ACK.
MAP_ERROR_ACK primitive described in MAP_ERROR_ACK.
The allowable errors are as follows:
TBADADDRTNOADDRTACCESTOUTSTATETSYSERRTADDRBUSYThis primitive indicates to the MAP user that the specified protoocl address has been bound to the stream, that the specified number of dialogue open indications are allowed to be queued by the MAP provider for th specified protocol address, and that the stream associated with the specified protocol address has ben activated.
The format of the message is one `M_PCPROTO' message block. The format of the `M_PCPROTO' message block is as follows:
typedef struct {
long PRIM_type; /* always MAP_BIND_ACK */
long ADDR_length; /* length of address -- see note in sec. 1.4 */
long ADDR_offset; /* offset of address */
ulong DIAIND_number; /* dialogue open indications to be queued */
} MAP_bind_ack_t;
The following rules apply to the binding of the specified protocol address to the stream:
This primitive requests that the MAP provider unbind the protocol address associated with the stream and deactivate the stream.
The format of the message is one `M_PROTO' message block. The format of the `M_PROTO' mesage block is as follows:
typedef struct {
long PRIM_type; /* always MAP_UNBIND_REQ */
} MAP_unbind_req_t;
This primitive requires the MAP provider to generate the following acknowledgements upon receipt of the primitive and that the MAP user must wait for the acknowledgement before issuing any other primitives:
MAP_OK_ACK primitive described in
MAP_OK_ACK.
MAP_ERROR_ACK primitive described in
MAP_ERROR_ACK. The allowable errors are as follows:
TOUTSTATETSYSERRThis primitive allows the MAP user to manage the options associated with the stream.
The format of the message is one `M_PROTO' message block. The format of the `M_PROTO' message block is as follows:
typedef struct {
long PRIM_type; /* always MAP_OPTMGMT_REQ */
long OPT_length; /* options length */
long OPT_offset; /* options offset */
long MGMT_flags; /* flags */
} MAP_optmgmt_req_t;
T_NEGOTIATET_CHECKT_CURRENTT_DEFAULTFor the rules governing the requests made by this primitive, see the MAP_OPTMGMT_ACK primitive described in
MAP_OPTMGMT_ACK.
This primitive requires the MAP provider to generate one of the following acknowledgements upon receipt of the primitive and that the MAP user await the acknowledgement before issuing any othe primitives:
MAP_OPTMGMT_ACK primitive described in MAP_OPTMGMT_ACK.
MAP_ERROR_ACK primitive described in MAP_ERROR_ACK. The allowable
errors are as follows:
TACCESTOUTSTATE