-
Version: v1.4.3
-
Version Date: 2025-02-11
-
Prepared By: Audio, Telephony, and Automotive Working Group
Version History
Version |
Date |
Comments |
---|---|---|
v1.4 |
2017-06-27 |
Adopted by the Bluetooth SIG Board of Directors. |
v1.4.1 |
2019-01-21 |
Adopted by the Bluetooth SIG Board of Directors. |
v1.4.2 |
2019-08-13 |
Adopted by the Bluetooth SIG Board of Directors. |
v1.4.3 |
2025-02-11 |
Adopted by the Bluetooth SIG Board of Directors. |
Acknowledgments
Name |
Company |
---|---|
Michael Buntscheck |
Berner & Mattner Systemtechnik GmbH |
Holger Lenz |
Berner & Mattner Systemtechnik GmbH |
Joachim Mertz |
Berner & Mattner Systemtechnik GmbH |
Rüdiger Mosig |
Berner & Mattner Systemtechnik GmbH |
Dominik Sollfrank |
Berner & Mattner Systemtechnik GmbH |
Norman Geilhardt |
Berner & Mattner Systemtechnik GmbH |
Olivia Bellamou-Huet |
Berner & Mattner Systemtechnik GmbH |
Cory Cater |
BlackBerry Limited |
Rob Hulvey |
Broadcom Corporation |
David Hughes |
Broadcom Corporation |
Jiawei Chen |
Broadcom Corporation |
Burch Seymour |
Continental Automotive Systems |
Thomas Carmody |
Qualcomm, Inc. |
Meshach Rajsingh |
Qualcomm, Inc. |
Stefan Hohl |
Daimler AG |
Souichi Saito |
Denso Corporation |
Don Liechty |
Sybase CIS |
Dietmar Heinzelmann |
Harman Becker |
Hari Karunai |
Harman International |
Brent Kitchen |
iAnywhere Solutions Inc. |
Denis Kenzior |
Intel Corporation |
Chen Penggang |
IVT Wireless Limited |
Thomas Karlsson |
Mecel AB |
Anil Vutukuru |
MindTree Limited |
John Barr |
Motorola |
Michael Carter |
Motorola |
Leonard Hinds |
Motorola |
Tony Mansour |
Motorola |
Lois She |
Motorola |
Andrew Tzakis |
Motorola |
Venki Vajja |
Motorola |
Stephen Raxter |
National Analysis Center, Inc. |
Stephane Bouet |
Nissan Motor Co., Ltd. |
Jamie McHardy |
Nokia Corporation |
Jurgen Schnitzler |
Nokia Corporation |
Brian Tracy |
Nokia Corporation |
Patrick Clauberg |
Novero |
Erik Berrio |
OpenSynergy GmbH |
Kevin Hendrix |
OpenSynergy GmbH |
Jay Perumal |
Qualcomm, Inc. |
Mesh Davaraj |
Qualcomm, Inc. |
Josselin de la Broise |
Parrot S.A. |
Kyle Penri-Williams |
Parrot S.A. |
Scott Walsh |
Plantronics Inc. |
Terry Bourk |
RF Micro Devices |
Kim Schulz |
Samsung Electronics Co., Ltd. |
Casper Bonde |
Samsung Electronics Co., Ltd. |
Trine Borgbjerg Jensen |
Samsung Electronics Co., Ltd. |
Erwin Weinans |
Sony Ericsson |
Tim Reilly |
Stonestreet One, LLC |
Tim Howes |
Symbian |
Amir Yassur |
Texas Instruments Incorporated |
Kentaro Nagahama |
Toshiba Corporation |
Robert Maling |
Toyota Motor Corporation |
Akira Miyajima |
Toyota Motor Corporation |
Ryan Bruner |
Visteon Corporation |
Use of this specification is your acknowledgement that you agree to and will comply with the following notices and disclaimers. You are advised to seek appropriate legal, engineering, and other professional advice regarding the use, interpretation, and effect of this specification.
Use of Bluetooth specifications by members of Bluetooth SIG is governed by the membership and other related agreements between Bluetooth SIG and its members, including those agreements posted on Bluetooth SIG’s website located at www.bluetooth.com. Any use of this specification by a member that is not in compliance with the applicable membership and other related agreements is prohibited and, among other things, may result in (i) termination of the applicable agreements and (ii) liability for infringement of the intellectual property rights of Bluetooth SIG and its members. This specification may provide options, because, for example, some products do not implement every portion of the specification. All content within the specification, including notes, appendices, figures, tables, message sequence charts, examples, sample data, and each option identified is intended to be within the bounds of the Scope as defined in the Bluetooth Patent/Copyright License Agreement (“PCLA”). Also, the identification of options for implementing a portion of the specification is intended to provide design flexibility without establishing, for purposes of the PCLA, that any of these options is a “technically reasonable non-infringing alternative.”
Use of this specification by anyone who is not a member of Bluetooth SIG is prohibited and is an infringement of the intellectual property rights of Bluetooth SIG and its members. The furnishing of this specification does not grant any license to any intellectual property of Bluetooth SIG or its members. THIS SPECIFICATION IS PROVIDED “AS IS” AND BLUETOOTH SIG, ITS MEMBERS AND THEIR AFFILIATES MAKE NO REPRESENTATIONS OR WARRANTIES AND DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, TITLE, NON-INFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR THAT THE CONTENT OF THIS SPECIFICATION IS FREE OF ERRORS. For the avoidance of doubt, Bluetooth SIG has not made any search or investigation as to third parties that may claim rights in or to any specifications or any intellectual property that may be required to implement any specifications and it disclaims any obligation or duty to do so.
TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, BLUETOOTH SIG, ITS MEMBERS AND THEIR AFFILIATES DISCLAIM ALL LIABILITY ARISING OUT OF OR RELATING TO USE OF THIS SPECIFICATION AND ANY INFORMATION CONTAINED IN THIS SPECIFICATION, INCLUDING LOST REVENUE, PROFITS, DATA OR PROGRAMS, OR BUSINESS INTERRUPTION, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, AND EVEN IF BLUETOOTH SIG, ITS MEMBERS OR THEIR AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF THE DAMAGES.
Products equipped with Bluetooth wireless technology ("Bluetooth Products") and their combination, operation, use, implementation, and distribution may be subject to regulatory controls under the laws and regulations of numerous countries that regulate products that use wireless non-licensed spectrum. Examples include airline regulations, telecommunications regulations, technology transfer controls, and health and safety regulations. You are solely responsible for complying with all applicable laws and regulations and for obtaining any and all required authorizations, permits, or licenses in connection with your use of this specification and development, manufacture, and distribution of Bluetooth Products. Nothing in this specification provides any information or assistance in connection with complying with applicable laws or regulations or obtaining required authorizations, permits, or licenses.
Bluetooth SIG is not required to adopt any specification or portion thereof. If this specification is not the final version adopted by Bluetooth SIG’s Board of Directors, it may not be adopted. Any specification adopted by Bluetooth SIG’s Board of Directors may be withdrawn, replaced, or modified at any time. Bluetooth SIG reserves the right to change or alter final specifications in accordance with its membership and operating agreements.
Copyright © 2004–2025. All copyrights in the Bluetooth Specifications themselves are owned by Apple Inc., Ericsson AB, Intel Corporation, Google LLC, Lenovo (Singapore) Pte. Ltd., Microsoft Corporation, Nokia Corporation, and Toshiba Corporation. The Bluetooth word mark and logos are owned by Bluetooth SIG, Inc. Other third-party brands and names are the property of their respective owners.
1. Introduction
1.1. Scope
Mobile messaging is becoming increasingly important. Across the globe, record traffic growth in established messaging markets combined with a number of newer emerging markets caused a volume growth of mobile messaging far beyond anticipated levels. The rapid development of the smartphone market underlines the increasing importance of mobile messaging and therefore the provision of a profile to address messaging use cases.
The Message Access Profile (MAP) defines the features and procedures that shall be used by devices that exchange message objects. It is based on a Client-Server interaction model where the Client initiates the transactions.
In general, MAP can be used to combine the messaging capabilities of a messaging server device and the user interface capabilities of a client device for notifying, browsing, reading, deleting, generating, and sending messages.
For instance, the Message Access Profile can be used in the following use cases:
-
Access a mobile phone in the car by using the car’s display or audio system to avoid cumbersome handling of the mobile phone while driving, providing acoustical announcements of email or SMS reception and Text2Speech output of messages, etc.
-
Provide message access to a mobile messaging device using any available PC or notebook to leverage the superior display and input capabilities of the computer.
-
Enable messaging to any stationary or mobile devices with IO capability (e.g., TVs, message panels, digital picture frames, eBooks, pagers, portable navigation systems, or wearable Bluetooth devices).
In all use cases mentioned above, the messaging client uses the messaging server's capabilities to access a remote network and its message repository; thus, the technical requirements for the client can be very restricted.
This MAP version supports message types such as SMS, MMS, email, and instant messages (IM) to and from cellular or other networks. Future versions may additionally support other message types, such as cell-broadcast messages, and may add further functionality.
1.2. Profile Dependencies
Interoperability between devices from different manufacturers is provided for a specific service and usage model if the devices conform to a Bluetooth SIG defined profile specification. A profile defines a selection of messages and procedures (generally termed capabilities) from the Bluetooth SIG specifications and gives an unambiguous description of the air interface for specified service(s) and usage model(s).
A profile is dependent upon another profile if it reuses parts of that profile by explicitly referencing it. The Bluetooth profile structure and the dependencies of MAP are depicted in Figure 1.1. A profile has dependencies on the adjoined profile(s).

As indicated in Figure 1.1, the Message Access Profile is dependent upon the Generic Object Exchange Profile [2], the Serial Port Profile [11], and the Generic Access Profile (see Volume 3, Part C in [1]). The Serial Port Profile is required when interacting with GOEP 1.1 devices.
This profile is designed to share contact information with a collocated implementation of the Phone Book Access Profile (PBAP) v1.2 or later [18]. Full contact details of a sender, receiver, or Instant Messaging conversation participant may be shared. The interface between this profile and PBAP is implementation dependent and not defined here.
1.3. Symbols and Conventions
1.3.1. Requirements Status Symbols
For the feature definition tables in Section 4, the following symbols are used:
-
"M" for mandatory to support
-
"O" for optional to support
-
"X" for excluded (used for capabilities that may be supported by the unit but shall never be used in this use case)
-
"C" for conditional to support
-
"N/A" for not applicable (in the given context it is impossible to use this capability)
Some excluded capabilities are mandatory, according to the relevant Bluetooth specification. These are features that may degrade operation of devices in this use case. Therefore, these features shall never be activated while a unit is operating as a unit within this use case.
1.3.2. Signaling Diagram Conventions
The signaling diagrams in this specification are examples only. Within the diagrams, the following conventions are used to describe procedures:
![]() |
1.4. Change History
This section summarizes changes at a moderate level of detail and should not be considered representative of every change made.
1.4.1. Changes from v1.4.2 to v1.4.3
Section |
Errata |
---|---|
Front matter |
18776, 18791 |
1.3.2: Signaling Diagram Conventions |
18776 |
2.6: Conformance |
23840 |
3.1.6.2: Messages-Listing Object (x-bt/MAP-msg-listing): Version 1.1 |
11797 |
6.3.3: OBEX Error Codes |
18776 |
11: References |
22347 |
1.5. Language
1.5.1. Language conventions
The Bluetooth SIG has established the following conventions for use of the words shall, must, will, should, may, can, is, and note in the development of specifications:
shall |
is required to – used to define requirements. |
must |
is used to express: a natural consequence of a previously stated mandatory requirement. OR an indisputable statement of fact (one that is always true regardless of the circumstances). |
will |
it is true that – only used in statements of fact. |
should |
is recommended that – used to indicate that among several possibilities one is recommended as particularly suitable, but not required. |
may |
is permitted to – used to allow options. |
can |
is able to – used to relate statements in a causal manner. |
is |
is defined as – used to further explain elements that are previously required or allowed. |
note |
Used to indicate text that is included for informational purposes only and is not required in order to implement the specification. Each note is clearly designated as a “Note” and set off in a separate paragraph. |
For clarity of the definition of those terms, see Core Specification Volume 1, Part E, Section 1.
1.5.2. Reserved for Future Use
Where a field in a packet, Protocol Data Unit (PDU), or other data structure is described as "Reserved for Future Use" (irrespective of whether in uppercase or lowercase), the device creating the structure shall set its value to zero unless otherwise specified. Any device receiving or interpreting the structure shall ignore that field; in particular, it shall not reject the structure because of the value of the field.
Where a field, parameter, or other variable object can take a range of values, and some values are described as "Reserved for Future Use," a device sending the object shall not set the object to those values. A device receiving an object with such a value should reject it, and any data structure containing it, as being erroneous; however, this does not apply in a context where the object is described as being ignored or it is specified to ignore unrecognized values.
When a field value is a bit field, unassigned bits can be marked as Reserved for Future Use and shall be set to 0. Implementations that receive a message that contains a Reserved for Future Use bit that is set to 1 shall process the message as if that bit was set to 0, except where specified otherwise.
The acronym RFU is equivalent to Reserved for Future Use.
1.5.3. Prohibited
When a field value is an enumeration, unassigned values can be marked as “Prohibited.” These values shall never be used by an implementation, and any message received that includes a Prohibited value shall be ignored and shall not be processed and shall not be responded to.
Where a field, parameter, or other variable object can take a range of values, and some values are described as “Prohibited,” devices shall not set the object to any of those Prohibited values. A device receiving an object with such a value should reject it, and any data structure containing it, as being erroneous.
“Prohibited” is never abbreviated.
2. Profile Overview
2.1. Profile Stack
Figure 2.1 shows the protocols and entities used in this profile:
![]() |
MAS = Message Access service, MNS = Message Notification service (see Section 5.10); bMessages are application objects used by MAP for message transport (see Section 3).
The L2CAP interoperability requirements are defined in GOEP v2.0 or later [2]. The MAP v1.2 profile requires backwards compatibility with previous versions of MAP that were based on GOEP v1.1. The procedures for backward compatibility defined in Section 6.2 of GOEP v2.0 or later shall be used. All the underlying MAP OBEX connections (MAS and MNS) between two devices shall use a single version of GOEP at the time. When OBEX over RFCOMM is used (GOEP v1.1), then only a subset of features shall be used. Support for either GOEP v1.1 and/or GOEP v2.0 or later is advertised in the SDP entries.
2.2. Configuration and Roles
The following roles are defined for this profile:
-
Message Server Equipment (MSE) – is the device that provides the message repository engine (i.e., has the ability to provide a client unit with messages that are stored in this device and notifications of changes in its message repository).
-
Message Client Equipment (MCE) – is the device that uses the message repository engine of the MSE for browsing and displaying existing messages and to upload messages created on the MCE to the MSE.
These terms are used in the rest of this document to designate these roles.
The figures below show typical configurations of devices for which the Message Access Profile is applicable:
-
Hands-Free Configuration:
In Figure 2.2, the Hands-Free unit in the car receives/sends messages from/to a mobile phone, which provides capabilities both for network access and message repository (Hands-Free Use Case).
-
PC Use Case:
Figure 2.3 shows a configuration with a PC acting as a MAP client such that the user is able to use its PC as an IO device for the messages stored in the cellular phone.
In any case, the mobile phone acts as the MSE, whereas the other devices are having the MCE role.
![]() |
![]() |
This MAP version does not consider the configuration where the MSE is in a SIM Access Profile (SAP) session with the MCE and the network access functionality is on the MCE side. This SAP use case will be covered by a dedicated whitepaper.
2.3. Message Types
The following message types are supported by this profile:
-
EMAIL: emails on RFC5322 or MIME type basis
-
SMS: short messages for cellular or other networks [8], [10]
-
MMS: 3GPP MMS messages [9]
-
IM: Instant Messages on MIME type basis (see Section 3.1.3.2)
These terms are used in the rest of this document to designate these roles.
2.4. Profile Fundamentals
The MCE device shall use the services of the MSE device only after successfully creating a secure connection. This includes exchanging security initialization messages, creating link keys, and enabling encryption. Security mode 2 or 3 shall be supported for devices implementing the Bluetooth 2.0+EDR or earlier specifications. Security mode 4 shall be supported for devices implementing the Bluetooth 2.1+EDR or later specifications.
Either the MSE or MCE may initiate bonding. At a minimum, the MSE shall support Inquiry and Paging and the MCE shall support Inquiry Scan and Page Scan in order to initiate bonding. Either device can initiate the link establishment.
Only the MCE can start a MAP session on OBEX level (OBEX services MAS and MNS, see also Section 4.6).
2.5. Bluetooth Security
The two devices shall create a secure connection using the GAP authentication procedure as described in the Generic Access Profile (see Volume 3, Part C in [1]). This procedure shall include alternatively entering a Bluetooth Passkey code for legacy devices or Secure Simple Pairing and will include creation of link keys. For the first case, a fixed passkey may also be used during the GAP bonding procedure.
The Message Access Profile mandates the use of several Bluetooth security features:
-
Bonding: The MCE and MSE shall be bonded before setting up a Message Access Profile connection. Security Mode 4 shall be used if supported by both MSE and MCE. Each of the four association models of Secure Simple Pairing may be used (see Volume 1, Part A, Section 5 and Volume 2, Part H, Section 7 in [1]), where it is recommended to use authenticated link keys (i.e., using the association models 'Numeric Comparison', 'Out Of Band', or 'Passkey Entry').
For legacy devices, either security mode 2 or 3 shall be used for the Message Access Profile connection.
-
Encryption: The link between MCE and MSE shall be encrypted using Bluetooth encryption.
-
Bluetooth Passkey: When using security mode 2 or 3, the MCE and MSE shall prohibit the use of a zero-length Bluetooth passkey.
Furthermore, for devices complying with the Message Access Profile:
-
Link keys: Combination keys shall be used for Message Access Profile connections.
-
Encryption key length: The length of the encryption key should be at least 64 bits. For increased security, use of the maximum length allowed given regional regulation is encouraged.
2.6. Conformance
Each capability of this specification shall be supported in the specified manner. This specification may provide options for design flexibility, because, for example, some products do not implement every portion of the specification. For each implementation option that is supported, it shall be supported as specified.
3. Application Layer
3.1. Message Access Profile Objects and Formats
3.1.1. Handle
When exchanging message listings or message objects, the MCE and MSE shall use locally unique identifiers, called handles, to identify individual messages. The MSE device shall assign a handle to each message. The handle shall be a 64 bit unsigned integer whose value is defined by the MSE.
Each handle shall be locally unique across all messages on the MSE. This means that the handle, when presented to the MCE, shall unambiguously identify one and only one message. If an MCE is connected to two MSEs, it is responsible for keeping track of the handles per MSE, as in such case two identical handles may exist each in a different context.
If the MSE supports the features ‘Database Identifier’ and ‘Persistent Message Handles’ (see Section 4):
-
The message handles shall be persistent across connections for a given value of the database identification property.
-
Previously assigned message handles shall only be reused when the database identification property has been regenerated.
-
If the unique handles are reused, a new value of the database identification property shall be generated. More information about the database identification property can be found in Section 3.1.14.
If ‘Database Identifier’ and ‘Persistent Message Handles’ features are not supported by the MSE, then each handle shall be valid during the entire duration of a MAP session. After the end of a MAP session (e.g., initiated by the user or caused by a link loss), the handle is not guaranteed to be valid anymore. Thus, an MCE shall not reuse a handle obtained in a previous MAP session.
A MAP session starts by establishing a Message Access service connection. The duration of the MAP session shall be defined as the time during which at least one Message Access Service connection or Message Notification Service connection is ongoing (see also MAP OBEX definitions in Section 6.1).
3.1.2. Character Set
The character set used for the attributes of the Message Access Profile objects bMessage, Folder-Listing, Messages-Listing, and Event-Report (see Sections 3.1.3, 3.1.5, 3.1.6, and 3.1.7) shall be UTF-8.
Special charset and encoding conventions are defined for the bMessage-parameter <bmessage-body-content> containing the message object itself (see Section 3.1.3).
3.1.3. Message Format (x-bt/message)
The MCE and MSE shall only send messages in the format of the lowest message format version stated in the MapSupportedFeatures bits by the devices.
The MCE shall ignore all unknown attributes and values of a message object.
3.1.3.1. Message Format (x-bt/message): Version 1.0
Exchanged messages shall use the bMessage format. The bMessage object encapsulates the delivered message objects and additionally provides a suitable set of properties with helpful information. The general encoding characteristics as defined for vCards in Section 2 of [4] shall be applied. The formal BNF definition of the bMessage format is as follows:
<bmessage-object>::= { "BEGIN:BMSG" <CRLF> <bmessage-property> [<bmessage-originator>]? <bmessage-envelope> "END:BMSG" <CRLF> } <bmessage-property>::=<bmessage-version-property> <bmessage-readstatus-property> <bmessage-type-property> <bmessage-folder-property> <bmessage-version-property>::="VERSION:" <common-digit>*"."<common-digit>* <CRLF> <bmessage-readstatus-property>::="STATUS:" 'readstatus' <CRLF> <bmessage-type-property>::="TYPE:" 'type' <CRLF> <bmessage-folder-property>::="FOLDER:" 'foldername' <CRLF> <bmessage-originator>::= <vcard> <CRLF> <bmessage-envelope> ::= { "BEGIN:BENV" <CRLF> [<bmessage-recipient>]* <bmessage-envelope> | <bmessage-content> "END:BENV" <CRLF> } <bmessage-recipient> ::= <vcard> <CRLF> <bmessage-content>::= { "BEGIN:BBODY"<CRLF> [<bmessage-body-part-ID> <CRLF>] <bmessage-body-property> <bmessage-body-content>* <CRLF> "END:BBODY"<CRLF> } <bmessage-body-part-ID>::="PARTID:" 'Part-ID' <bmessage-body-property>::=[<bmessage-body-encoding-property>] [<bmessage-body-charset-property>] [<bmessage-body-language-property>] <bmessage-body-content-length-property> <bmessage-body-encoding-property>::="ENCODING:"'encoding' <CRLF> <bmessage-body-charset-property>::="CHARSET:"'charset' <CRLF> <bmessage-body-language-property>::="LANGUAGE:"'language' <CRLF> <bmessage-body-content-length-property>::= "LENGTH:" <common-digit>* <CRLF>
<bmessage-body-content>::={ "BEGIN:MSG"<CRLF> 'message'<CRLF> "END:MSG"<CRLF> }
The following conventions shall be applied for the bMessage properties:
bmessage-version-property:
The value for this property shall be "VERSION:1.0 <CRLF>", which is the present bMessage version 1.0.
bmessage-originator:
This property includes a vCard identifying the originator (i.e., the original sender of the message (see also definition of 'vCard' property below)).
For an email, the following rules shall apply:
-
If the ‘Sender:’ field is provided:
-
This property shall contain the information pertaining to the ‘Sender:’ field.
-
If additional fields such as ‘From:’ and/or ‘Reply-To:’ are provided, these shall be included in the body-content.
-
-
If the ‘Sender:’ field is not provided:
-
This property shall contain the information pertaining to the ‘From:’ field.
-
If an additional field such as ‘Reply-To:’ is provided, this shall be included in the body-content.
-
bmessage-recipient:
This property includes a vCard identifying the recipient of the messages (see also definition of 'vCard' property below).
In the case of an email, all the recipients in the MIME 'to:' field shall have their own bmessage-recipient property. When sending a message, the MSE shall also parse the MIME 'cc:' and 'bcc:' fields and apply the correct behavior for those recipients as defined in 5322 [14].
bmessage-readstatus-property:
The property value shall be either "READ" or "UNREAD", indicating whether a message has been read or not by the MCE. During a MAP session, the MCE shall be responsible for setting this status (see Sections 4.2 and 5.7). An MSE shall not change this status during a MAP session without initiation by the user or a connected MCE device. The initial status when starting a MAP session is 'read' if the message has already been read on the MSE.
bmessage-type-property:
The property value shall be one of the following:
bmessage-folder-property:
This is the folder name including the path where the bMessage is located in. Any folder within the MSE folder structure may be used for this property as described in Section 3.1.3.2 (e.g., "telecom/msg/inbox"). This property shall be restricted to 512 bytes. If the path and folder description exceeds this length, the name of the addressed folder and the highest possible folder layers above shall be delivered. If the bMessage is used for an upload (PushMessage function, see Section 5.8), the MCE should send an empty bmessage-folder-property and the MSE should discard this property to avoid redundancy with the ‘name’ header’ of the PushMessage function.
bmessage-body-part-ID:
This property shall be used if and only if the content of the related message cannot be delivered completely within one <bmessage-content> object (i.e., in case of a fragmented email). The part-ID of the first <bmessage-content> object shall be 0; the following <bmessage-content> objects shall have a part-ID incremented by 1 each. The range of this value shall be 0 to 65535 accordingly, restricting the number of fractions to this maximum.
bmessage-body-charset-property:
This is the character set used by the message object contained by <bmessage-body-content>. This property shall be used only if the message contains textual content. For detailed requirements, see description of the <bmessage-body-content property> below.
bmessage-body-encoding-property:
This is the encoding used by the message object contained by <bmessage-body-content>. The property shall have one of the following values:
-
GSM-SMS [13]: "G-7BIT" (GSM 7 bit Default Alphabet), "G-7BITEXT" (GSM 7 bit Alphabet with national language extension), "G-UCS2", and "G-8BIT".
-
CDMA-SMS [12]: "C-8BIT" (Octet, unspecified), "C-EPM" (Extended Protocol Message), "C-7ASCII (7-bit ASCII), "C-IA5" (IA5), "C-UNICODE" (UNICODE), "C-SJIS" (Shift-JIS), "C-KOREAN" (Korean), "C-LATINHEB” (Latin/Hebrew), and “C-LATIN” (Latin).
For detailed requirements, see description of the <bmessage-body-content> property below.
bmessage-body-language-property:
This is the language of the message. This property may be used if the message includes textual content. The property shall have one of the following values:
vCard:
The allowed properties for a vCard [4], [5] in a bMessage shall be the following:
For version 2.1: |
||
VERSION, N, TEL, EMAIL (VERSION and N shall be included, TEL and EMAIL may be used) |
||
For version 3.0: |
||
VERSION, N, FN, TEL, EMAIL (VERSION, N, and FN shall be included; TEL and EMAIL may be used) |
||
Furthermore, the 'recipient' attribute of bMessages delivered by the MCE to the MSE for sending shall include:
|
All the other vCard properties shall not be used. The properties may be empty if not known (e.g., N/FN in case of an SMS).
bmessage-envelope:
The maximum level of <bmessage-envelope> encapsulation shall be three. If the message originally received by the MSE has more than three encapsulation levels, the MSE shall deliver the upper three levels (i.e., the most recent ones).
![]() |
bmessage-body-content-length-property:
This is the overall length of the related <bmessage-body-content> objects(s) in bytes, where the length counting starts with the "B" of the first occurrence of "BEGIN:MSG" and ends with the <CRLF> of the last occurrence of "END:MSG"<CRLF>.
bmessage-body-content:
The <bmessage-body-content> shall be constructed according to the type of message contained therein as indicated by the mandatory <bmessage-type-property>. The conversion shall be done by the MSE according to the following requirements:
-
When generating a bMessage, all occurrences of <CRLF>'END:MSG' in a <bmessage-body-content> after any encoding or encapsulation shall be replaced by <CRLF>'/END:MSG'; occurrences of <CRLF>'/END:MSG' shall be replaced by <CRLF>'//END:MSG'; and so on. Adding an escape character shall increase the LENGTH field by 1. Similarly, when parsing a <bmessage-body-content>, all occurrences of <CRLF>'/END:MSG' shall have a '/' removed before any further decoding or processing.
-
If the message is an MMS (bMessage-type "MMS"):
-
If the bMessage is uploaded from the MCE to the MSE, the <bmessage-body-content> shall be formatted as an email specified in RFC5322 [14] and MIME RFC2045-RFC2047 [6].
-
If the message is downloaded by the MCE from the MSE, the original MMS message shall be converted into email format following the RFC4356 specification before being used as <bmessage-body-content>.
-
Furthermore, for the <bmessage-body-content>, the requirements described hereunder for the bMessage-type "EMAIL" shall be applied.
-
-
If the message is an email (bMessage-type "EMAIL") or an MMS converted to email format as described above (bMessage-type "MMS"):
-
The <bmessage-body-content> contains the message formatted as specified in RFC5322 and MIME RFC2045-RFC2047.
-
The message object contained in <bmessage-body-content> shall be coded using the following rules:
-
If the message or (in case of a multipart-message) a part of the message includes textual content (MIME type/subtype = text/xxx), the contained message text shall be coded in UTF-8 charset:
-
The related <bmessage-body-charset-property> shall be "UTF-8".
-
If the bMessage is downloaded from the MSE to the MCE, the MSE shall transcode the included text to UTF-8 charset before delivery.
-
If the bMessage is uploaded from the MCE to the MSE, the MSE may transcode the text of the message from UTF-8 to any charset required (e.g., before sending to the network).
-
If the bMessage is uploaded from the MCE to the MSE, the MSE must add the "From" attribute of the included email (if it is not present in the email) before sending it. This situation may occur if the MCE does not know this email address.”
-
-
If the message or (in case of a multipart-message) all parts of the message include only non-textual content (MIME type/subtype other than text/…)
-
The contained message or the message part shall not be transcoded to UTF-8.
-
The related <bmessage-body-charset-property> shall not be used.
-
-
In any case, the encoding method used for the <bmessage-body-content> shall be 8-Bit:
-
No other encoding methods (e.g., QuotedPrintable or Base64) shall be used.
-
Accordingly, the only authorized value of the related <bmessage-body-encoding-property> shall be "8BIT".
-
If the bMessage is downloaded from the MSE to the MCE, the MSE shall transcode it to 8-Bit encoding before it is delivered.
-
If the bMessage is uploaded from the MCE to the MSE, the MSE may transcode the message encoding from 8-Bit encoding to any encoding required (e.g., before sending to the network).
-
-
-
If the original message is a GSM-SMS or a CDMA-SMS (bMessage-types "SMS_GSM" or "SMS_CDMA"):
-
Only SMS related to the following two SMS-PDUs [8], [10], [16] shall be used by MAP:
-
SMS-Deliver PDUs received from the network
-
SMS-Submit PDUs for submission to the network
-
-
Two kinds of formats for the <bmessage-body-content> are supported for the transmission of bMessages between MCE and MSE. The MSE shall support both formats; the MCE may choose either of these formats (see also definitions of functions getMessage and pushMessage in Section 4.6):
-
<bmessage-body-content> includes the text of the SMS coded in UTF-8:
-
This kind of bMessage coding may be used when the transmitted message includes textual content (e.g., 7-bit or UCS-2 encoding for GSM). It shall not be used if the message includes only binary content.
-
The bMessage shall contain exactly one <bmessage-body-content> object, which includes a text string with the message text coded in UTF-8 charset.
-
Accordingly, the related <bmessage-body-charset-property> shall be "UTF-8".
-
The <bmessage-body-encoding-property> shall not be used.
-
If the bMessage is downloaded from the MSE to the MCE, the MSE shall transcode the textual parts of the related SMS-Deliver PDU to UTF-8 charset before delivery.
-
If the bMessage is uploaded from the MCE to the MSE for sending, the MSE shall use the UTF-8 coded text in <bmessage-body-content> and the other parameters delivered by the related <bmessage-object> to produce an SMS-Submit PDU or concatenated SMS PDUs (if the delivered text is too long).
-
-
SMS PDU object in <bmessage-body-content>:
-
This kind of bMessage coding shall be used for SMS with binary content and may be used for SMS with textual content. The <bmessage-body-charset-property> shall not be used.
-
In case of a non-concatenated SMS (single PDU), the bMessage shall contain exactly one <bmessage-body-content> object, which includes the SMS PDU.
-
In the case of GSM-SMS where a GSM 04.11 [16] SC address is followed by a GSM 03.40 [8] TPDU in hexadecimal format, MSE/MCE converts each octet of the Transfer Layer Protocol data unit into a two-character, IRA [17] encoded, hexadecimal number (e.g., octet with decimal value 42 is presented to TE as a two-character hexadecimal value, 2A. The IRA encodings are decimal 50 and 65 or hexadecimal 32 and 41).
-
In the case of CDMA-SMS where a 3GPP2 C.S0015-0 [10] Transport Layer Message is in hexadecimal format, MSE/MCE converts each octet of the Transfer Layer Protocol data unit into a two-character, IRA [17] encoded, hexadecimal number (e.g., octet with decimal value 42 is presented to TE as a two-character hexadecimal value, 2A. The IRA encodings are decimal 50 and 65 or hexadecimal 32 and 41).
-
In the case of a concatenated SMS (multiple PDU), the bMessage shall contain several <bmessage-body-content> objects, each with a PDU of the concatenated SMS. If the bMessage is uploaded from the MCE to the MSE for sending, the MCE shall order the contained <bmessage-body-content> objects as required for sending. If the bMessage is downloaded by the MCE from the MSE, the MSE shall order the contained <bmessage-body-content> objects in the same way like the SMS PDUs of the original concatenated SMS.
-
-
-
-
Hereunder is an example of a bMessage of the type EMAIL with status UNREAD:
BEGIN:BMSG VERSION:1.0 STATUS:UNREAD TYPE:EMAIL FOLDER:TELECOM/MSG/INBOX BEGIN:VCARD VERSION:2.1 N:Mat EMAIL:ma@abc.edu END:VCARD BEGIN:BENV BEGIN:VCARD VERSION:2.1 N:Tanaka EMAIL:tanaka@def.edu END:VCARD BEGIN:BENV BEGIN:VCARD VERSION:2.1 N:Laurent EMAIL:laurent@ghi.edu END:VCARD BEGIN:BBODY ENCODING:8BIT LENGTH:125 BEGIN:MSG Date: 20 Jun 96 Subject: Fish From: tanaka@def.edu To: laurent@ghi.edu Let's go fishing! BR, Mat END:MSG END:BBODY END:BENV END:BENV END:BMSG
Below is an example of a bMessage embedded with a native SMS-Deliver PDU containing the message “Let’s go fishing!”.
BEGIN:BMSG VERSION:1.0 STATUS:UNREAD TYPE:SMS_GSM FOLDER:TELECOM/MSG/INBOX BEGIN:VCARD VERSION:2.1 N:Joachim TEL:00498912345678 END:VCARD BEGIN:BENV BEGIN:BBODY ENCODING:G-7BIT LENGTH: 96 BEGIN:MSG 0191000E9100949821436587000011303231 12928211CC32FD34079DDF20737A8E4EBBCF21 END:MSG END:BBODY END:BENV END:BMSG
3.1.3.2. Message Format (x-bt/message): Version 1.1
Support for ‘Message Format Version 1.1’ is advertised in the MapSupportedFeatures bits (see Sections 7.1.1, 7.1.2, and 6.4.1). To support backward compatibility, none of the additional attribute names and values shall be included in a bMessage that is sent to an MCE or MSE device that does not advertise support for ‘Message format Version 1.1’ in its MapSupportedFeatures bits.
The MSE shall not return messages of type ’IM’ if the MCE does not claim support for ‘Message Format Version 1.1’ in its MapSupportedFeatures bits.
If the ‘Message Format Version 1.1’ MapSupportedFeatures bit is set on the MCE and MSE device, then the bMessage object shall be defined according to the following DTD (Document Type Definition [15]):
<bmessage-object>::= { "BEGIN:BMSG" <CRLF> <bmessage-property> [<bmessage-originator>]? <bmessage-envelope> "END:BMSG" <CRLF> } <bmessage-property>::=<bmessage-version-property> <bmessage-readstatus-property> <bmessage-type-property> <bmessage-folder-property> <bmessage-extendeddata-property> <bmessage-version-property>::="VERSION:" <common-digit>*"."<common-digit>* <CRLF> <bmessage-readstatus-property>::="STATUS:" 'readstatus' <CRLF> <bmessage-type-property>::="TYPE:" 'type' <CRLF> <bmessage-folder-property>::="FOLDER:" 'foldername' <CRLF> <bmessage-extendeddata-property>::="EXTENDEDDATA:" 'extendeddata' <CRLF> <bmessage-originator>::= <vcard> <CRLF> <bmessage-envelope> ::= { "BEGIN:BENV" <CRLF> [<bmessage-recipient>]* <bmessage-envelope> | <bmessage-content> "END:BENV" <CRLF> } <bmessage-recipient> ::= <vcard> <CRLF> <bmessage-content>::= { "BEGIN:BBODY"<CRLF> [<bmessage-body-part-ID> <CRLF>] <bmessage-body-property> <bmessage-body-content>* <CRLF> "END:BBODY"<CRLF> } <bmessage-body-part-ID>::="PARTID:" 'Part-ID' <bmessage-body-property>::=[<bmessage-body-encoding-property>] [<bmessage-body-charset-property>] [<bmessage-body-language-property>] <bmessage-body-content-length-property> <bmessage-body-encoding-property>::="ENCODING:"'encoding' <CRLF> <bmessage-body-charset-property>::="CHARSET:"'charset' <CRLF> <bmessage-body-language-property>::="LANGUAGE:"'language' <CRLF> <bmessage-body-content-length-property>::= "LENGTH:" <common-digit>* <CRLF> <bmessage-body-content>::={ "BEGIN:MSG"<CRLF> 'message'<CRLF> "END:MSG"<CRLF> }
The conventions of ‘Message Format Version 1.0’ apply to ‘Message Format Version 1.1’ (see Section 3.1.3). The rest of this section defines only the additions to ‘Message Format Version 1.1’.
The following conventions shall be applied for the ‘bMessage Format Version 1.1’ properties:
bmessage-version-property:
The value for this property shall be "VERSION:1.1<CRLF>" if the MSE and MCE support the feature ‘Message Format Version 1.1’.
bmessage-type-property:
-
’IM’ for instant messages on MIME type basis.
The property value ‘IM’ shall only be used if the MSE and MCE support the ‘Message Format Version 1.1’ feature.
vCard:
-
The following properties are additionally allowed:
-
X-BT-UID: A 128-bit value as a 32-character ASCII hexadecimal string that uniquely identifies a contact in the Phonebook Access Profile main phonebook.
-
X-BT-UCI: Contains a reference that allows a client application on the MSE to identify a user.
For additional details about the definition of these properties, please refer to the Phonebook Access Profile v1.2 or later [18].
-
bMessage-extendeddata-property:
-
The extended data of a message may be anything that is somehow linked with a message (i.e., someone liked a message, gave +1, number of followers, etc.). The format shall comply with the definition in Section 3.1.13.
bmessage-body-encoding-property:
-
For IM: [6] "8BIT" (for 8-Bit Clean encoding).
bmessage-body-content:
-
If the message is an instant message (bMessage-type "IM"):
-
The same rules as for an email (bMessage-type “EMAIL”) apply. Please refer to Section 3.1.3.
-
The values of “From” and “To” shall be equivalent to the UCI identifier in the vCard of the message.
-
Example of a bMessage with the type IM:
BEGIN:BMSG VERSION:1.1 STATUS:UNREAD TYPE:IM FOLDER:TELECOM/MSG/INBOX EXTENDEDDATA:0:3; BEGIN:VCARD VERSION:2.1 N:L;Marry X-BT-UCI:whateverapp:497654321@s.whateverapp.net END:VCARD BEGIN:BENV BEGIN:VCARD VERSION:2.1 N:S.;Alois X-BT-UCI:whateverapp:4912345@s.whateverapp.net END:VCARD BEGIN:BBODY ENCODING:8BIT LENGTH: BEGIN:MSG Date: Fri, 1 Aug 2014 01:29:12 +01:00 From: whateverapp:497654321@s.whateverapp.net To: whateverapp:4912345@s.whateverapp.net Content-Type: text/plain; Happy birthday END:MSG END:BBODY END:BENV END:BMSG
3.1.4. Folders Structure
Figure 3.2 is an example of the folder architecture that the MSE presents to the MCE. This folder structure is only the representation used by MAP. The folder structure does not necessarily have to exist in the same way on the MSE device.
![]() |
The following folders shall be present at the MSE's message repository representation (bold characters in Figure 3.2):
-
telecom/msg/inbox: This folder shall contain all the messages that have been received by the MSE, at least during the period of the current MAP session, and which have not been shifted to other folders on the MSE device This folder shall be called 'Inbox' folder hereinafter.
-
telecom/msg/sent: This folder shall contain messages that were successfully sent to the network by the MSE, at least during the period of the current MAP session. In particular, these messages have been queued in the 'Outbox' folder before sending and are shifted by the MSE to this folder after transmission. This folder shall be called 'Sent' folder hereinafter.
-
telecom/msg/deleted: This folder shall contain the messages that have been deleted on the MSE, at least during the period of the current MAP session. This folder shall be called 'Deleted' folder hereinafter.
The following folder shall be present if and only if the MSE device has the capability to transmit messages to a remote network. In particular, it shall be present also during temporal disturbances of the transmission process (e.g., by network problems).
-
telecom/msg/outbox: This folder shall contain all the messages that are queued for transmission by the MSE, at least during the period of the current MAP session. This folder shall be called 'Outbox' folder hereinafter. In particular, the MCE shall only upload messages for sending to this folder. If a message has been transmitted to the network, it shall be shifted by the MSE to the 'Sent' folder (sending success). If a message cannot be sent for any reason, these messages shall remain in the 'Outbox' folder.
The telecom/msg/draft folder is the repository for messages that have not been sent and may require further editing. If a comparable folder is present on the MSE, it shall be presented to the MCE and its name shall be ‘Draft’.
In addition to the above fixed folders, the profile also supports user-defined folders.
If folders have a real representation on the MSE device, the folders presented by the MAP-MSE should contain (if possible) the same messages as in the real folder structure (e.g., the Sent folder) as long as this recommendation does not conflict with mandatory requirements.
If the MSE device owns more than one message repository (e.g., several email accounts), it may present these multiple message repositories by multiple MAS Instances (see also Sections 3.1.7.2 and 6.5).
3.1.5. Folder-Listing Object (x-obex/folder-listing)
The Folder-Listing object is defined in Section 9.1 of [7] and shall be encoded in UTF-8. In the context of the MAP profile, the Folder-Listing object shall not contain message entries. It shall only contain folder entries located in the current folder level.
The devices shall ignore all unknown attributes and values of a 'Folder-Listing' object.
3.1.6. Messages-Listing Object (x-bt/MAP-msg-listing)
The Messages-Listing object is an XML object and shall be encoded in UTF-8.
The MCE and MSE shall only send messages in the format of the lowest message format version, which is stated in the MAPSupportedFeatures bits by both devices. For example, if the MSE supports version 1.1 and the MCE supports only version 1.0, only the message in version 1.0 shall be sent. Only when both the MSE and MCE states support message format version 1.1, then messages shall be sent in format version 1.1.
The entries of the Messages-Listing object shall be sorted by the value of the "datetime" parameter (see below). Sort order shall be in descending order, with the newest message being transferred first.
The devices shall ignore all unknown attributes and values of a 'Messages-Listing' object.
3.1.6.1. Messages-Listing Object (x-bt/MAP-msg-listing): Version 1.0
The Messages-Listing object is defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the MAP Messages-Listing Object--> <!DOCTYPE MAP-msg-listing [ <!ELEMENT MAP-msg-listing ( msg )* > <!ATTLIST MAP-msg-listing version CDATA #FIXED "1.0"> <!ELEMENT msg EMPTY> <!ATTLIST msg handle CDATA #REQUIRED subject CDATA #REQUIRED datetime CDATA #REQUIRED sender_name CDATA #IMPLIED sender_addressing CDATA #IMPLIED replyto_addressing CDATA #IMPLIED recipient_name CDATA #IMPLIED recipient_addressing CDATA #REQUIRED type CDATA #REQUIRED size CDATA #REQUIRED text (yes|no) "no" reception_status CDATA #REQUIRED attachment_size CDATA #REQUIRED priority (yes|no) "no" read (yes|no) "no" sent (yes|no) "no" protected (yes|no) "no" > ]>
where the parameters shall be used as described below:
-
"handle" is the message handle in hexadecimal representation with up to 16 digits; leading zero digits may be used so the MCE shall accept both handles with and without leading zeros (e.g.,"00000012345678AB" or "12345678AB").
-
"subject" is the summary of the message. This parameter shall not exceed 256 bytes. The content of this parameter is left to the implementer's decision. Typically, in case the original message has a title, the subject should contain the title of the original message. If the original message does not have any title, the implementer may use the first words of the message as "subject" value. The subject may be a blank string ("").
-
"datetime" is the timestamp of the message in format "YYYYMMDDTHHMMSS" as defined for the OBEX "time" header in Section 2.2 of [7]. Local Time time basis and 24 hours representation shall be used. If the message in the MSE internal repository does not have a 4-digit year representation, the MSE shall complete it to 4 digits in a suitable way. If the sending time is included in the message, it shall be used for this parameter; otherwise the reception time of the MSE shall be used.
If the feature “UTC Offset Timestamp Format” is supported by the MSE and MCE, then the timestamp shall comply with the format defined in Section 3.1.10.
-
"sender_name" is the name of the sender of the message when it is known by the MSE device. This parameter shall not exceed 256 bytes and shall be truncated to the first 255 bytes if required. If a sender name is included in the original message, the MSE shall use this information for the content of this attribute; otherwise the content of this parameter is left to the implementer's decision (e.g., the MSE may use a phonebook entry for "sender_name").
-
"sender_addressing" is the addressing information of the sender. In the case of an email, this is the sender's email address ("From:" field). In the case of an SMS, this is the sender's phone number in canonical form (Section 2.4.1 of [4]). In the case of an MMS, this is the senders email address or phone number. This parameter shall not exceed 256 bytes. If the sender address of the original message is longer than 256 bytes, it shall be truncated to the first 256 bytes. If the sender is not known (e.g., in case of a suppressed sender address), this parameter may be left empty.
-
"replyto_addressing" is the address information for replies to the sender. This parameter shall be used only for emails to deliver the sender's reply-to email address ("Reply-To:" field). This parameter shall not exceed 256 bytes. If the reply-to address of the original message is longer than 256 bytes, it shall be truncated to the first 256 bytes. If the reply-to address is not present in the email, this parameter shall be left empty.
-
"recipient_name" is the name of the recipient of the message when it is known by the MSE device. This parameter shall not exceed 256 bytes and shall be truncated to the first 256 bytes if required.
-
"recipient_addressing" is the addressing information of the recipient. In the case of an email, this is the recipient's email address or a list of email addresses, each delimited by ";" (ASCII x3B). In the case of an SMS, this is the recipient's phone number in canonical form (Section 2.4.1 of [4]). In the case of an MMS, this is the recipient's email address or phone number. This parameter shall not exceed 256 bytes. If the recipient is not known (e.g., in case of a draft message), this parameter may be left empty. If the recipient address of the original message is longer than 256 bytes, it shall be truncated to the first 256 bytes.
-
"type" gives the type of the message. The following types are supported by the present profile:
"EMAIL": |
e-mail RFC5322 or MIME RFC2045-47 type basis |
|
"SMS_GSM": |
GSM short message |
|
"SMS_CDMA": |
CDMA short message |
|
"MMS": |
3GPP MMS |
At least one of these types shall be supported by the MSE.
-
"reception_status": Gives the status of reception of the message. The parameter shall have one of the values:
"complete": Complete message has been received by the MSE
"fractioned": Only a part of the message has been received by the MSE (e.g., fractioned email of push-service)
"notification": Only a notification of the message has been received by the MSE
-
"size": The overall size in bytes of the original message as received from the network. The MCE implementation has to take into account that the size of the message delivered in a bMessage may be different from this size due to transcoding effects (see Section 3.1.3).
-
"attachment_size": The overall size of the attachments in bytes. Value = 0 indicates that the message has no attachments.
-
"text": Value "yes" indicates the original message or (in case of multipart-messages) that a part of the message includes textual content; "no" indicates that the message has no textual content, only binary.
-
"read": Value "yes" indicates that the message has already been read on the MSE; "no" indicates that the message has not yet been read (see also bmessage-readstatus-property in Section 3.1.3).
-
"sent": Value "yes" indicates that the message has already been sent to the recipient; "no" indicates that the message has not yet been sent.
-
"protected": Value "yes" indicates that the message or a part of the message (e.g., attachment) is protected by a DRM scheme; "no" indicates that the message is not protected by DRM.
-
"priority": Value "yes" indicates that the message is of high priority; "no" indicates that the message is not of high priority.
The parameters above shall not occur in the Messages-Listing object if its delivery is suppressed actively by the parameter-mask attribute in the GetMessagesListing function (see Section 5.5). In particular, Messages-Listing parameters marked as REQUIRED in the DTD above may be masked out.
Example of Messages-Listing object:
<MAP-msg-listing version = "1.0"> <msg handle = "20000100001" subject = "Hello" datetime = "20071213T130510" sender_name = "Jamie" sender_addressing = "+1-987-6543210" recipient_addressing = "+1-0123-456789" type = "SMS_GSM" size = "256" attachment_size = "0" priority = "no" read = "yes" sent = "no" protected = "no"/> <msg handle = "20000100002" subject = "Guten Tag" datetime = "20071214T092200" sender_name = "Dmitri" sender_addressing = "8765432109" recipient_addressing = "+49-9012-345678" type = "SMS_GSM" size = "512" attachment_size = "3000" priority = "no" read = "no" sent = "yes" protected = "no"/> <msg handle = "20000100003" subject = "Ohayougozaimasu" datetime = "20071215T134326" sender_name = "Andy" sender_addressing = "+49-7654-321098" recipient_addressing = "+49-89-01234567" type = "SMS_GSM" size = "256" attachment_size = "0" priority = "no" read = "yes" sent = "no" protected = "no"/> <msg handle = "20000100000" subject = "Bonjour" datetime = "20071215T171204" sender_name = "Marc" sender_addressing = "marc@carworkinggroup.bluetooth" recipient_addressing = "burch@carworkinggroup.bluetooth" type = "EMAIL" size = "1032" attachment_size = "0" priority = "yes" read = "yes" sent = "no" protected = "yes"/> </MAP-msg-listing>
3.1.6.2. Messages-Listing Object (x-bt/MAP-msg-listing): Version 1.1
Support for ‘Messages-Listing Format Version 1.1’ is advertised in the MapSupportedFeatures bits. To support backward compatibility, none of the additional attribute names and values shall be included in a Messages-Listing Object that is sent to an MCE device that does not advertise support for ‘Messages-Listing Format Version 1.1’ in its MapSupportedFeatures bits.
The MSE shall not include messages of type ’IM’ if the MCE does not claim support for ‘Message Format Version 1.1’ and ‘Messages-Listing Format Version 1.1’ in its MapSupportedFeatures bits.
If the ‘Messages-Listing Format Version 1.1’ MapSupportedFeatures bit is set on the MCE and MSE device, then the Messages-Listing Object shall be defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the MAP Messages-Listing Object--> <!DOCTYPE MAP-msg-listing [ <!ELEMENT MAP-msg-listing ( msg )* > <!ATTLIST MAP-msg-listing version CDATA #FIXED "1.1"> <!ELEMENT msg EMPTY> <!ATTLIST msg handle CDATA #REQUIRED subject CDATA #REQUIRED datetime CDATA #REQUIRED sender_name CDATA #IMPLIED sender_addressing CDATA #IMPLIED replyto_addressing CDATA #IMPLIED recipient_name CDATA #IMPLIED recipient_addressing CDATA #REQUIRED type CDATA #REQUIRED size CDATA #REQUIRED text (yes|no) "no" reception_status CDATA #REQUIRED attachment_size CDATA #REQUIRED priority (yes|no) "no" read (yes|no) "no" sent (yes|no) "no" protected (yes|no) "no" delivery_status CDATA #IMPLIED conversation_id CDATA #IMPLIED conversation_name CDATA #IMPLIED direction CDATA #IMPLIED attachment_mime_types CDATA #IMPLIED > ]>
The attribute rules described in Messages-Listing Object Version 1.0 (see Section 3.1.6) apply as well as the following additional parameters and values:
-
"type":
-
’IM’: Instant Message
-
-
"datetime": If the feature ‘UTC Offset Timestamp Format’ is supported, the timestamp shall comply with the format specified in Section 3.1.10. If the feature is not supported, the timestamp shall comply with the datetime definition in Section 3.1.6.
-
“sender_addressing”: In the case of an instant message, this is the sender’s UCI identifier (“From:” field).
-
“recipient_addressing”: In the case of an instant message, this is the recipient’s UCI identifier or a list of UCI identifiers, each delimited by “;” (ASCII x3B). If the UCI contains the delimiter character, it shall be escaped by a “\” character (ASCII x5C).
-
"delivery_status": Provides the status of delivery of the message. If the MSE generally has no knowledge about the delivery status, this parameter shall be “unknown”. The parameter shall have one of the following values:
-
“delivered”: The complete message has been delivered to the recipient. This is the final status of a message and corresponds to the event DeliverySuccess.
-
“sent”: The complete message has been sent from the MSE to the remote network. This status corresponds to the event SendingSuccess.
-
“unknown”: This value shall be used if the MSE has no knowledge about the delivery status of the message.
-
-
“conversation_id”: The identification of the conversation. The format shall comply with the format defined in Section 3.1.16. The conversation_id corresponds to an id of a Conversation-Listing (see Section 3.1.9).
-
“conversation_name”: The human readable name of the conversation. This parameter shall not exceed 256 bytes including escape sequences. If the conversation has no name, this parameter shall be empty (“”).
If the parameter "type" with the value "IM" (Instant Message) will be used, then the "conversation_id" type is mandatory.
-
“direction”: This attribute shall indicate the direction of the message. The direction shall have one of the following values:
-
“incoming”: For all incoming messages.
-
”outgoing”: For all messages that are currently in the process of being sent and all messages that have been successfully sent.
-
”outgoingdraft”: For all outgoing draft messages.
-
”outgoingpending”: For all messages including messages that have been attempted to be sent but have failed.
-
If the parameter "type" with the value "IM" (Instant Message) will be used, then the "direction" type is mandatory.
-
attachment_mime_types: The MIME type (see [6]) of the attachment(s). If there are multiple attachments, the MIME types shall be separated by a comma “,”. If there is no attachment, this parameter shall be empty (“”).
Below is an example of a Messages-Listing object to be used when the connected MCE supports ‘Extended Messages-Listing 1.1’.
<MAP-msg-listing version="1.1"> <msg handle="20000100001" subject="Welcome Clara Nicole” datetime="20140706T095000-0400" sender_name="Max" sender_addressing="4924689753@s.whateverapp.net" recipient_addressing="" type="IM" size="256" attachment_size="0" priority="no" read="no" sent="no" protected="no" conversation_id=”E1E2E3E4F1F2F3F4A1A2A3A4B1B2B3B4” direction=”incoming” /> <msg handle = "20000100002" subject= "What’s the progress Max?" datetime="20140705T092200+0100" sender_name="Jonas" sender_addressing="4913579864@s.whateverapp.net" recipient_addressing = "" type="IM" size="512" attachment_size="8671724" priority="no" read="yes" sent="yes" protected="no" conversation_id=”E1E2E3E4F1F2F3F4A1A2A3A4B1B2B3B4” direction=”incoming” attachment_mime_types=”video/mpeg”/> </MAP-msg-listing>
3.1.7. MAP-Event-Report Object
The MAP-Event-Report object is an XML object including the description of exactly one event. The MAP-Event-Report object shall be encoded in UTF-8.
The MCE shall ignore all unknown attributes and values of a 'MAP-Event-Report' object.
Depending on the MAP-Event-Report version and the Event type, a different set of attributes shall be included in the Event-Report. Table 3.1 illustrates the attributes that shall be included in a specific event type and the attributes that shall be contained in the different versions of a MAP-Event-Report. MAP-Event-Report Version 1.2 may contain all the attributes from MAP-Event-Report Version 1.1, and MAP-Event-Report Version 1.1 may contain all the attributes from MAP-Event-Report Version 1.0.
To support backward compatibility, none of the additional attribute names and values shall be included in a MAP-Event-Report that is sent to an MCE device that does not advertise support for “Extended Event Reports 1.1” or “Extended Event Reports 1.2” in its MapSupportedFeatures bits.
MAP-Event-Report Version 1.0 |
1.1 |
1.2 |
|||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
NewMessage |
DeliverySuccess |
SendingSuccess |
DeliveryFailure |
SendingFailure |
MemoryFull |
MemoryAvailable |
MessageDeleted |
MessageShift |
ReadStatusChanged |
MessageRemoved |
MessageExtendedData-Changed |
ParticipantPresence-Changed |
ParticipantChatState-Changed |
ConversationChanged |
type |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
handle |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||
folder |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||
old_folder |
✔ |
||||||||||||||
msg_type |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||||
datetime |
✔ |
✔ |
|||||||||||||
subject |
✔ |
||||||||||||||
sender_name |
✔ |
✔ |
✔ |
✔ |
|||||||||||
priority |
✔ |
||||||||||||||
conversation_name |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
|||
conversation_id |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
✔ |
||
presence_availability |
✔ |
✔ |
|||||||||||||
presence_text |
✔ |
✔ |
|||||||||||||
last_activity |
✔ |
✔ |
✔ |
||||||||||||
chat_state |
✔ |
✔ |
|||||||||||||
read_status |
✔ |
✔ |
|||||||||||||
extended_data |
✔ |
||||||||||||||
participant_uci |
✔ |
✔ |
✔ |
✔ |
✔ |
||||||||||
contact_uid |
✔ |
✔ |
✔ |
✔ |
✔ |
The following parameters and values shall apply:
-
type: The first column of Table 3.2 shows the MAP-Event-Report version in which the value was introduced.
MAP-Event-Report Version |
Value |
Description |
---|---|---|
1.0 |
NewMessage |
Indicates that a new message has been received by the MSE device. This event type shall also be used if a new message is created locally (drafts, outbox, etc.) or if it replaces an old one on the MSE (e.g., a Replace-SMS [8]). In this last case, the MSE shall send the NewMessage, including the same handle as used for the replaced message where the readstatus-property of the related bMessage object shall be set to "UNREAD". For concatenated SMS, the MSE shall send a 'NewMessage' event notification when it has received the final part (see also Section 4.1). |
DeliverySuccess |
Indicates that a message has been successfully delivered to its intended recipient. |
|
SendingSuccess |
Indicates that a message has been successfully sent to a remote network. |
|
DeliveryFailure |
Indicates that the delivery of a message to its intended recipient failed. This event type shall not be applied for emails. It should be reported not more than once for a message. |
|
SendingFailure |
Indicates that sending the message to the remote network failed. The MSE may send this several times for one message if the 'Retry' application parameter of the PushMessage function (see Section 5.8) has been set to 'ON' by the MCE (i.e., each time the MSE's delivery to the network has failed). |
|
MemoryFull |
Indicates that the memory of the MSE device is full and will not allow any new arriving messages to be received and stored. This event should be sent if the memory becomes full during the MAP session and at the setup of the MNS connection if the memory is already full. |
|
MemoryAvailable |
Indicates that the memory of the MSE device is ready again to receive new messages. This event shall be sent only if there was a "MemoryFull" event before. |
|
MessageDeleted |
Indicates that a message has been deleted from the reported folder on the MSE and has therefore been shifted to the 'Deleted' folder. For an irrevocable deletion of a message, please use the event type “MessageRemoved”. |
|
MessageShift |
Indicates that a message has been shifted on the MSE from one folder (indicated by the "old_folder" parameter) to another folder (indicated by the "folder" parameter). |
|
1.1 |
ReadStatusChanged |
Indicates that the 'read' status of a message (see Section 3.1.6) has been changed on the MSE. |
1.2 |
MessageExtendedDataChanged |
Indicates that the extended data of a message has changed. See Section 3.1.13 for more details. |
MessageRemoved |
Indicates that a message has been irrevocably removed from the reported folder. |
|
ConversationChanged |
Indicates that contact information from a participant (uci, display_name, last activity, x_bt_uid, name, see Section 3.1.9) was updated or that a participant has joined, left, or been deleted from a specific conversation. On any completion of changes apart from presence and chat state changes to a participant or the addition or removal of a participant from a conversation, the MSE shall send this event type. |
|
ParticipantPresenceChanged |
This value shall be supported if the ‘Participant Presence Change Reporting’ feature is supported by the MCE and MSE. Indicates the change of the presence of a specific participant. When the presence of an instant messaging participant (including the owner) changes, the MSE shall send this event type. |
|
ParticipantChatStateChanged |
This value shall be supported if the ‘Participant Chat State Change Reporting’ feature is supported by the MCE and MSE. Indicates the change of the chat state of a specific participant in a specific conversation. When the chat state or the last activity of an instant messaging participant (including the owner) changes, the MSE shall send this event type. |
-
handle:
-
Is the handle of the message that the "type" indication refers to.
-
For a NewMessage event, "handle" is the handle that was assigned by the MSE device to the newly received message.
-
For a DeliverySuccess, a SendingSuccess, a DeliveryFailure, or a SendingFailure, "handle" is the handle of the message that was successfully or unsuccessfully delivered or sent.
-
"handle" is not used when the event "type" is "MemoryFull", MemoryAvailable", “ParticipantPresenceChanged, “ParticipantChatStateChanged”, or “ConversationChanged”.
-
-
folder:
-
Shall be the name of the folder including the path in which the corresponding message has been filed by the MSE (e.g., "TELECOM/MSG/INBOX", see also Section 3.1.4).
-
In the case of the event type “MessageDeleted” or “MessageRemoved”, the folder should be the name of the folder including the path from which the message has been deleted from.
-
This parameter shall be restricted to 512 bytes.
-
If the path and folder description exceeds this length, the name of the addressed folder and the highest possible folder layers above shall be delivered.
-
The "folder" parameter shall not be used when the event "type" is "MemoryFull", "MemoryAvailable", “ConversationChanged”, “ParticipantPresenceChanged”, or “ParticipantChatStateChanged”.
-
-
old_folder:
-
Shall be used only in the case of a message shift (MessageShift event type) to indicate the folder on the MSE from which the message has been shifted out.
-
The same formatting conventions as for the "folder" parameter shall be fulfilled.
-
-
msg_type:
-
Provides the type of the message.
-
"msg_type" is not used when the event "type" is "MemoryFull", "MemoryAvailable", “ConversationChanged”, “ParticipantPresenceChanged”, or “ParticipantChatStateChanged”.
-
The following message types are supported. The first column of Table 3.3 shows the MAP-Event-Report version in which the types were introduced.
-
MAP-Event-Report Version |
Value |
Description |
---|---|---|
1.0 |
|
e-mail RFC5322 or MIME type basis |
SMS_GSM |
GSM short message |
|
SMS_CDMA |
CDMA short message |
|
MMS |
3GPP MMS |
|
1.2 |
IM |
Instant Message on MIME type basis |
-
datetime:
-
Shall be used only if the event “type” is “NewMessage” or “MessageExtendedDataChanged”.
-
This attribute is the timestamp of the message in format "YYYYMMDDTHHMMSS" as defined for the OBEX "time" header in Section 2.2 of the IrDA OBEX Specification Version 1.5 [19].
-
Local Time time basis and 24 hours representation shall be used.
-
If the message in the MSE internal repository does not have a 4-digit year representation, the MSE shall extend it to 4 digits in a suitable way.
-
If the sending time is included in the message, it shall be used for this attribute; otherwise the reception time of the MSE shall be used.
-
If the MSE and MCE support the feature “UTC Offset Timestamp Format”, the format shall apply to the format definition in Section 3.1.10.
-
-
subject:
-
Shall be used only if the event “type” is “NewMessage”.
-
This attribute is the summary of the message.
-
This parameter shall not exceed 256 bytes, including escape sequences.
-
The content of this parameter is left to the implementer's decision. Typically, in the case where the original message has a title, the subject should contain the title of the original message.
-
If the original message does not have a title, the implementer may use the first words of the message as the "subject" value.
-
The subject may be a blank string ("").
-
-
sender_name:
-
Shall be used only if the event “type” is “NewMessage”, “MessageExtendedDataChanged”, “ParticipantPresenceChanged”, or “ParticipantChatStateChanged”. This attribute is the name of the sender of the message when it is known by the MSE device.
-
If the event “type” is “ParticipantPresenceChanged” or “ParticipantChatStateChanged”, then this attribute shall be the name of the participant for whom the chat state or presence changed.
-
This parameter shall not exceed 256 bytes, including escape sequences.
-
If a sender name is included in the original message, the MSE shall use this information for the content of this attribute; otherwise the content of this parameter is left to the implementer's decision (e.g., the MSE may use a phonebook entry as the "sender_name").
-
-
priority:
-
Shall be used only in the case of a new message event. Value "yes" indicates that the message is of high priority; "no" indicates that the message is not of high priority.
-
-
conversation_name:
-
Shall not be used when the event "type" is “MemoryFull” or “MemoryAvailable”.
-
This attribute contains the human readable name of the conversation. If the conversation has no name, this parameter shall be empty (“”).
-
This parameter shall not exceed 256 bytes, including escape sequences.
-
-
conversation_id:
-
Shall not be used when the event "type" is “MemoryFull” or “MemoryAvailable”.
-
If this attribute is not present in the event-report and the “type” is “ParticipantChatStateChanged” or “ParticipantPresenceChanged”, the chat state shall be regarded as conversation independent.
-
The unique identification of the conversation. The format shall comply with the format defined in Section 3.1.16.
-
-
presence_availability:
-
Shall be used only if the event “type” is “ConversationChanged” (only if it indicates an addition or removal of a participant) or “ParticipantPresenceChanged”.
-
This attribute contains the Presence Availability in the format defined in Section 3.1.11.
-
-
presence_text:
-
Shall be used only if the event “type” is “ConversationChanged” (only if it indicates an addition or removal of a participant) or “ParticipantPresenceChanged”.
-
This attribute contains the Presence Text in the format defined in Section 3.1.11.
-
-
last_activity:
-
Shall be used only if the event “type” is “ConversationChanged”, “ParticipantChatStateChanged”, or “ParticipantPresenceChanged”.
-
This attribute contains the timestamp of the last activity of the participant in the format defined in Section 3.1.10.
-
-
chat_state:
-
Shall be used only if the event “type” is “ConversationChanged” (only if it indicates an addition or removal of a participant) or “ParticipantChatStateChanged”.
-
This attribute contains the Chat state in the format defined in Section 3.1.12.
-
-
read_status:
-
Shall be used only if the event “type” is “NewMessage” or “ReadStatusChanged”.
-
This attribute contains the read-status of the message.
-
The value shall be “yes” if the read-status is read.
-
The value shall be “no” if the read-status is unread.
-
If the MSE has no knowledge about the read-status, the attribute shall not be present.
-
-
extended_data:
-
Shall be used only if the event “type” is “MessageExtendedDataChanged”.
-
This attribute contains the message extended data in the format defined in Section 3.1.13.
-
-
participant_uci:
-
Shall be used only if the event “type” is “NewMessage”, “ConversationChanged”, “MessageExtendedDataChanged”, “ParticipantPresenceChanged”, or “ParticipantChatStateChanged” event.
-
This attribute shall contain the sender’s participant UCI according to the participant list of a conversation (see Section 3.1.9). This may also be the UCI of the owner.
-
If for some reason the MSE has no knowledge about the UCI of the sender, this attribute shall not be present.
-
If this attribute is present in the event type “ConversationChanged”, the participant was either added or removed from the conversation.
-
-
contact_uid:
-
Shall be used only if the event “type” is “NewMessage”, “ConversationChanged”, “MessageExtendedDataChanged”, “ParticipantPresenceChanged”, or “ParticipantChatStateChanged” event.
-
This attribute shall contain the sender’s contact UID according to the participant list of a conversation (see Section 3.1.9). If for some reason the MSE has no knowledge about the UID of the sender, this attribute shall not be present.
-
If this attribute is present in the event type “ConversationChanged”, the participant with this UID was either added or removed from the conversation.
-
3.1.7.1. Legacy MAP-Event-Report: Version 1.0
The MAP-Event-Report object Version 1.0 is an XML defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the OBEX MAP-Event-Report object--> <!DOCTYPE MAP-event-report [ <!ELEMENT MAP-event-report ( event ) > <!ATTLIST MAP-event-report version CDATA #FIXED "1.0"> <!ELEMENT event EMPTY> <!ATTLIST event type CDATA #REQUIRED handle CDATA #IMPLIED folder CDATA #IMPLIED old_folder CDATA #IMPLIED msg_type CDATA #IMPLIED > ]>
The values of the attributes are described in Section 3.1.7.
Below is an example of a Message Event object to be used when the connected MCE does not support Extended Event Reports.
<MAP-event-report version = "1.0"> <event type = "NewMessage" handle = "12345678" folder = "TELECOM/MSG/INBOX" msg_type = "SMS_CDMA" /> </MAP-event-report>
3.1.7.2. Extended MAP-Event-Report: Version 1.1
Support for Extended Event Reports 1.1 is advertised in the MapSupportedFeatures bits. To support backward compatibility, none of the additional attribute names and values shall be included in a MAP-Event-Report that is sent to an MCE device that does not advertise support for “Extended Event Reports 1.1” in its MapSupportedFeatures bits.
The MCE shall ignore all unknown attributes and values of a 'MAP-Event-Report' object.
If the ‘Extended Event Reports 1.1’ MapSupportedFeatures bit is set, then the MAP-Event-Report object shall be an XML defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the OBEX MAP-Event-Report object--> <!DOCTYPE MAP-event-report [ <!ELEMENT MAP-event-report ( event ) > <!ATTLIST MAP-event-report version CDATA #FIXED "1.1"> <!ELEMENT event EMPTY> <!ATTLIST event type CDATA #REQUIRED handle CDATA #IMPLIED folder CDATA #IMPLIED old_folder CDATA #IMPLIED msg_type CDATA #IMPLIED datetime CDATA #IMPLIED subject CDATA #IMPLIED sender_name CDATA #IMPLIED priority CDATA #IMPLIED > ]>
The values of the attributes are described in section 3.1.7.
Below is an example of Message Event object to be used when the connected MCE supports MAP event Reports 1.1.
<MAP-event-report version = "1.1"> <event type = "NewMessage" handle = "12345678" folder ="TELECOM/MSG/INBOX" msg_type = "SMS_CDMA" subject = "Hello" datetime = "20110221T130510" sender_name = "Jamie" priority = "yes" /> </MAP-event-report>
3.1.7.3. Extended MAP-Event-Report: Version 1.2
Support for Extended Event Reports 1.2 is advertised in the MapSupportedFeatures bits.
The MCE shall ignore all unknown attributes and values of a 'MAP-Event-Report' object.
If at least one of the features, ‘Participant Presence Change Reporting’ or ‘Participant Chat State Change Notification’ is supported by the MSE and MCE, then ‘Extended Event Reports 1.2’ shall be used (see Section 4).
If the ‘Extended Event Reports 1.2’ MapSupportedFeatures bit is set, then the MAP-Event-Report object shall be an XML defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the OBEX MAP-Event-Report object--> <!DOCTYPE MAP-event-report[ <!ELEMENT MAP-event-report ( event ) > <!ATTLIST MAP-event-report version CDATA #FIXED "1.2"> <!ELEMENT event EMPTY> <!ATTLIST event type CDATA #REQUIRED handle CDATA #IMPLIED folder CDATA #IMPLIED old_folder CDATA #IMPLIED msg_type CDATA #IMPLIED datetime CDATA #IMPLIED subject CDATA #IMPLIED sender_name CDATA #IMPLIED priority CDATA #IMPLIED conversation_name CDATA #IMPLIED conversation_id CDATA #IMPLIED presence_availability CDATA #IMPLIED presence_text CDATA #IMPLIED last_activity CDATA #IMPLIED chat_state CDATA #IMPLIED read_status (yes|no) "no" #IMPLIED participant_uci CDATA #IMPLIED extended_data CDATA #IMPLIED contact_uid CDATA #IMPLIED > ]>
The values of the attributes are described in Section 3.1.7.
Below is an example of a Message Event object to be used when the connected MCE supports MAP Event Reports 1.2. The event was sent because the participant with the UCI 4916579564@s.whateverapp.net was added or removed from the conversation.
<MAP-event-report version = "1.2"> <event type = "ConversationChanged" msg_type="IM" sender_name="Mads" conversation_name=”friends” conversation_id=”A1A2A3A4B1B2B3B4C1C2C3C4D1D2D3D4” participant_uci=”4916579864@s.whateverapp.net”/> </MAP-event-report>
3.1.8. MSE Instances
MAP MSE devices may present one or several MAS Instances to the MCE, each providing the overall MAP MSE Server functionality. For each MAS Instance, there shall be exactly one MAS-Server SDP record (see also Section 6.5) and an MCE can access each MAS Instance by a dedicated OBEX connection. Figure 3.3 gives an example about a potential configuration:
![]() |
The following requirements have to be considered:
-
MSE device
-
MAP is capable of differentiating between Email, SMS, and MMS in one MAS Instance, so an MSE device (taking into consideration the recommendations below) should present its messages by one MAS Instance to minimize the number of OBEX connections required. This MAS Instance shall at least include the SMS and MMS repository of the MSE device if these message types are supported and may also include emails. For this MAS Instance, the value of the related SDP record attribute ‘MASInstanceID’ shall be 0. The MSE device may present its email repository by an additional MAS Instance.
-
If an MSE device provides more than one email-account, it should present additional MAS Instance(s) for each of these email accounts to enable the MCE differentiation of the email messages of particular accounts.
-
If an MSE device provides more than one subscriber number (e.g., two active SIM cards), it should present additional MAS Instance(s) for each of these subscriber numbers to enable the MCE a differentiation of the SMS/MMS messages of particular subscriber numbers.
-
The SDP record attribute ‘ServiceName’ should enable an easy recognition of the related message repository on the MSE device by the user. Nevertheless, as the SDP records may be accessible without pairing, the ‘ServiceName’ should not expose any personal information (e.g., a complete phone number or email address with respect to privacy protection).
-
The MSE device shall enable a simultaneous and independent OBEX connection to all provided MAS instances.
-
To enable the MCE to re-connect to a once selected MAS-Instance without user interaction, an MSE-Device should keep the MASInstanceIDs in the SDP record constant (see section 7.1.1) and should not change it for different MAP sessions. If a MAS Instance is changed or removed (e.g., related message account deleted), the MSE device should not reuse this MASInstanceID until the maximum ID-number (255) has been reached. In the latter case, the MSE should restart numbering the MASInstanceID from 0, using the smallest available free number.
-
For the same reason, the MSE Device should not change the ServiceName for different MAP sessions as long as the user does not change the account name on the MSE.
-
-
MCE device
-
An MCE may connect via OBEX to one, several, or all MAS Instances of an MSE device.
-
Depending on the implementation, this connection may be automated or may require user interaction. In particular, the MCE may connect without user interaction if:
-
there is only one MAS Instance,
-
the MCE connects generally to all MAS Instances (e.g., in the case of a watch as a 'Notification Client' signaling all incoming messages), and
-
the MCE connection is done based on the message type presented by the SDP record attribute 'SupportedMessageTypes' (e.g., connect to (all) SMS repository(ies)).
-
-
If the MCE cannot select a MAS Instance automatically, the MCE may present a list of the MAS ServiceNames for selection to the user in an appropriate way.
-
3.1.9. Conversation Listing Object (x-bt/MAP-convo-listing): Version 1.0
Support for ‘Conversation listing’ is advertised in the MapSupportedFeatures bits.
The Conversation-Listing-objects shall be encoded in UTF-8.
The entries of the Conversation-Listing object shall be sorted by the value of the ‘last_activity’ parameter (see below). Sort order shall be in descending order, with the newest message transferred first.
The devices shall ignore all unknown attributes and values of a 'Conversation-Listing' object.
The Conversation-Listing object is defined according to the following DTD (Document Type Definition) [15]:
<!DTD for the MAP Conversation-Listing Object--> <!DOCTYPE MAP-convo-listing [ <!ELEMENT MAP-convo-listing ( conversation )* > <!ATTLIST MAP-convo-listing version CDATA #FIXED "1.0" > <!ELEMENT conversation (participant)* > <!ELEMENT conversation EMPTY> <!ATTLIST conversation id CDATA #REQUIRED name CDATA #REQUIRED last_activity CDATA #IMPLIED read_status (yes|no) "no" #IMPLIED version_counter CDATA #IMPLIED summary CDATA #IMPLIED > <!ELEMENT participant EMPTY> <!ATTLIST participant uci CDATA #REQUIRED display_name CDATA #REQUIRED chat_state CDATA #IMPLIED last activity CDATA #IMPLIED x_bt_uid CDATA #IMPLIED name CDATA #IMPLIED presence_availability CDATA #IMPLIED presence_text CDATA #IMPLIED priority CDATA #IMPLIED > ]>
The attributes of a conversation shall comply with the following conventions:
-
“id”: The unique identification of the conversation. The format shall comply with the format defined in Section 3.1.6.
-
“name”: The name of the conversation. If the conversation has no name, this parameter shall be empty.
-
“last_activity”: The datetime of the last activity in this conversation. The format shall comply with the definition in Section 3.1.10. The attribute shall be empty if the last activity of the conversation is unknown.
-
“read_status”: The read-status of the conversation. The attribute shall have one of the values ”yes” or “no”, where “yes indicates that the conversation has already been read on the MSE. The attribute shall be empty if the read-status is generally unknown.
-
“version_counter”: The Conversation Version Counter is used to determine if something in the conversation has changed. For more details, please refer to Section 3.1.15. The attribute shall be present if the ‘Conversation Version Counters’ feature is supported by the MCE and MSE.
-
“summary": The summary of the conversation. This parameter shall not exceed 256 bytes. The content of this parameter is left to the implementer’s decision. Typically it should contain the content of the most recent message. If there is no summary of the conversation, the attribute shall be empty.
The attributes of a conversation participant shall comply with the following conventions:
-
“uci”: The value shall be a reference that allows a participant to be uniquely identified by the client associated with this MAS instance (example: 4986925814@s.whateverapp.net).
-
“display_name”: The name of the participant as it is intended to be displayed. The name might be different in specific conversations.
-
“chat_state”: The current chat state of this participant. The format shall comply with the definition in Section 3.1.12.
-
“last_activity”: The datetime of last activity in this participant. The format shall comply with the definition in Section 3.1.10.
-
“x_bt_uid”: The globally unique 128-bit identifier of the PBAP contact that corresponds to this participant. This attribute shall be present if the feature ‘PBAP Contact Cross Reference’ is supported by the MSE and MCE and if a corresponding PBAP contact exists.
-
“name”: The full formatted name (FN in vCard) of the participant. The attribute shall be empty if there is no full name available for the participant.
-
“presence_availability”: The current availability of the conversation participant. The value of the attribute shall comply with the definition in Section 3.1.11. If there is no presence status for that participant, the attribute shall be empty.
-
“presence_text”: The user-defined status of the conversation participant. The value of the attribute shall comply with the definition in Section 3.1.11. If there is no user-defined status for that participant, the attribute shall be empty.
-
“priority”: The priority of the participant as an integer. This may be a value between 0 and 100, where the value 50 represents the “neutral” priority and 0 represents the lowest priority. The priority of the participant shall be 50 if the priority of the participant is unknown.
Below is an example of a conversation listing object:
<MAP-convo-listing version = "1.0"> <conversation id=”E1E2E3E4F1F2F3F4A1A2A3A4B1B2B3B4” name=”Beergarden Connection” last_activity=”20140612T105430+0100” read_status=”no” version_counter=”A1A1B2B2C3C3D4D5E5E6F6F7A7A8B8B”> <participant uci=”4986925814@s.whateverapp.net” display_name=”Tien” chat_state=”3” last_activity=”20140612T105430+0100”/> <participant uci=”4912345678@s.whateverapp.net” display_name=”Jonas” chat_state=”5” last_activity=”20140610T115130+0100”/> <participant uci=”4913579864@s.whateverapp.net” display_name=”Max” chat_state=”2” last_activity=”20140608T225435+0100”/> <participant uci=”4924689753@s.whateverapp.net” display_name=”Nils” chat_state=”0” last_activity=”20140612T092320+0100”/> <participant uci=”4923568910@s.whateverapp.net” display_name=”Alex” chat_state=”4” last_activity=”20140612T104110+0100”/> </conversation> <conversation id=”C1C2C3C4D1D2D3D4E1E2E3E4F1F2F3F4” name=”” last_activity=”20140801T012900+0100” read_status=”yes” version_counter=”0A0A1B1B2C2C3D3D4E4E5F5F6A6A7B7B”> <participant uci=”malo@email.de” display_name=”Mari” chat_state=”2” last_activity=”20140801T012900+0100” x_bt_uid=” A1A2A3A4B1B2C1C2D1D2E1E2E3E4F1F2”/> </conversation> <conversation id=”F1F2F3F4E1E2E3E4D1D2D3D4C1C2C3C4” name=”family” last_activity=”20140925T133700+0100” read_status=”yes” version_counter=”1A1A2B2B3C3C4D4D5E5E6F6F7A7A8B8B”> <participant uci=”malo@email.de” display_name=”Mari” chat_state=”2” last_activity=”20140801T012900+0100” x_bt_uid=” A1A2A3A4B1B2C1C2D1D2E1E2E3E4F1F2” name=”Mareike Loh” presence_availability=”2” presence_text=”Wow it’s hot today” priority=”100”/> <participant uci=”alois.s@august.de” display_name=”Lil Al” chat_state=”1” last_activity=”20140801T012800+0100” x_bt_uid=” A1A2A3A4B1B2C1C2D1D2E1E2E3E4F1F2” name=”Alois S.” presence_availability=”0” presence_text=”On my way” priority=”100”/> </conversation> </MAP-convo-listing>
3.1.10. Timestamps
If the feature ‘UTC Offset Timestamp Format’ is supported, then all timestamps of this MAS instance shall comply with the following format:
-
“YYYYMMDDTHHMMSS±HHMM”, where time is local with its UTC offset as specified in ISO 8601 [19].
If the feature ‘UTC Offset Timestamp Format’ is not supported, then timestamps of this MAS instance shall be in the format “YYYYMMDDTHHMMSS”, with local time basis and 24 hours representation as defined in the OBEX “time” header in Section 2.2 of [7].
3.1.11. Presence
The presence of a participant consists of two elements:
-
Presence Availability: An unsigned 8-bit value (0-255) from a defined list of possible availability states on the MAP assigned numbers page.
-
Presence Text: A user-defined string that contains a description of the current status of the user. It shall be a UTF-8 string with a maximum length of 256 characters.
The MCE shall assume the value 0 (Unknown) when receiving unspecified values.
3.1.12. Chat State
The chat state of a participant is a description of how the participant is currently engaged in chatting. Mostly the chat state information is only valid for one specific conversation.
The chat state is an unsigned 8-bit value (0-255) from a defined list of possible chat states on the MAP assigned numbers page.
The MCE shall assume the value 0 (Unknown) when receiving unspecified values.
3.1.13. Message Extended Data
The extended data of a message may be anything that is somehow linked with a message (i.e., someone liked a message, gave +1, number of followers, etc.) The format of the MessageExtendedData shall comply with following format:
-
[{ExtendedDataType}:{ExtendedDataValue};]*
The ExtendedDataType and ExtendedDataValue can be found on the MAP assigned numbers page.
The MCE shall ignore unknown ExtendedDataType values it receives.
The following is an example of a message extended data with 54 Facebook likes:
|
The following is an example of multiple extended data in one field (18 Facebook likes, 486 Twitter retweets, 11 Google +1s):
|
3.1.14. Database Identifier
If the ‘Database Identifier’ feature is supported by the MSE, it shall generate and store a unique Database Identifier. This identifier is a 128-bit value.
The generation of the Database Identifier is implementation-dependent; however, the Database Identifier should be unique and not reused throughout the lifetime of the server.
This identifier shall be re-generated:
-
Every time the database is entirely reset (e.g., after a factory restore, security wipe, or important software update)
-
When a ‘Conversation-Listing Version Counter’ rolls over or starts over. This does not apply if the ‘Conversation listing’ feature is not supported.
-
When a ‘Conversation Version Counter’ rolls over or starts over. This does not apply if the ‘Conversation listing’ feature is not supported.
-
When a ‘Folder Version Counter’ rolls over or starts over.
-
When a ‘Contact X-BT-UID’ is reused.
Database Identifiers are necessary to detect if a Version Counter from a previous session can still be used with the current database. If the database had to be reset for a reason, the client will be able to detect this by comparing the Database Identifier of the current session with the one retrieved during a previous session.
A value of 0 for the Database Identifier signifies that the Version Counters are not persistent on the server and that the client should not use these values for caching. Servers using a Database Identifier of 0 or regenerating one at each connection will not benefit from the resulting performance and improved user experience.
3.1.15. Version Counters
The ‘Conversation-Listing Version Counter’, ‘Conversation Version Counter’, and ‘Folder Version Counter’ are used to detect if something has changed. The counters shall be 16 bytes with possible values from 0 to (2128-1)
-
Conversation-Listing Version Counter: The version counter shall increment on every completion of changes to the following properties of a conversation (id, name, last_activity, read_status, and summary) in the Conversation-Listing as well as on insertion or removal of conversations. The counter shall not increment on insertion or removal of participants to a conversation nor on changes to attributes of a participant.
-
Conversation Version Counter: The version counter shall increment on every completion of changes to the following properties in the Conversation (id, name, last_activity, read_status, and summary) as well as on insertion or removal of conversation participants and messages to that conversation. The counter shall not increment on changes of attributes of a conversation participant.
-
Folder Version Counter: The version counter shall increment on every completion of changes to any of the properties in the messages in the selected folder as well as on insertion or removal of messages.
All counters shall not increment if there is no change to the content.
If for some reason any of the counters rolls over or starts over, a new value of the Database Identifier shall be generated. More information can be found on the Database Identifier in Section 3.1.14.
The ‘Conversation-Listing Version Counter’ and ‘Conversation Version Counter’ shall be supported if support for the ‘Conversation Version Counters’ feature is claimed.
The ‘Folder Version Counter’ shall be supported if support for the ‘Folder Version Counter’ feature is claimed.
3.1.16. Conversation ID
Each conversation shall have a unique identification of the conversation. The format shall be:
-
A 128 bit value that uniquely identifies a conversation within a single MAS instance, represented by a 32 character ASCII hexadecimal string.
4. Message Access Profile Feature
The current profile is composed of several sub-features. For a device to comply with this specification, it shall observe the following implementation requirements table:
Feature |
Support by the MCE |
Support by the MSE |
---|---|---|
Notification |
C.1 |
M |
Browsing |
C.1 |
M |
Uploading |
O |
M |
Delete |
O |
M |
Notification Registration |
C.2 |
M |
Instance Information |
O |
M |
Extended MAP-Event-Report 1.1 |
C.2 |
M |
Extended MAP-Event-Report 1.2 |
O |
M |
Message Format Version 1.1 |
O |
M |
Messages-Listing Format Version 1.1 |
M |
M |
Persistent Message Handles |
O |
O |
Database Identifier |
C.3 |
C.3 |
Folder Version Counter |
O |
O |
Conversation Version Counters |
C.4 |
C.4 |
Participant Presence Change Notification |
O |
O |
Participant Chat State Change Notification |
O |
O |
Notification Filtering |
O |
M |
UTC Offset Timestamp Format |
O |
M |
Conversation listing |
O |
O |
Owner status |
O |
O |
Message Forwarding |
O |
O |
- C.1:
-
The MCE shall support at least one of these features.
- C.2:
-
Mandatory to support IF ‘Notification’ feature is supported; otherwise Not Applicable (N/A).
- C.3:
-
Mandatory to support IF ‘Persistent Message Handles’ OR ‘Folder Version Counter’ feature is supported; otherwise Optional.
- C.4:
-
Optional to support IF ‘Conversation listing’ is supported; otherwise Excluded.
Both uploading messages to the MSE and sending messages through the MSE use the Uploading feature. In the case of sending messages through the MSE, the messages shall be uploaded into the 'Outbox' folder of the MSE. In the case of uploading messages to the MSE, the messages shall not be uploaded into the 'Outbox' folder of the MSE, but any other folder is permitted.
Notifying the MCE of the arrival of a new message and sending messages through the MSE are using the Notification feature. In the case of sending messages through the MSE, the MCE shall get a notification when the messages have been sent to the network and thus have been shifted by the MSE from the 'Outbox' to the 'Sent' folder.
4.1. Notification Feature
If support for the Notification feature is claimed by the MCE, this feature allows the MSE to send event reports to the MCE (e.g., message arrival notifications):
Feature |
Support by the MCE |
Support by the MSE |
---|---|---|
SendEvent |
M |
M |
SetNotificationFilter |
C.1 |
C.1 |
- C.1:
-
Mandatory to support IF the “Notification Filtering” feature is supported; otherwise Excluded.
The MSE shall notify the MCE about any change of a Messages-Listing of any folder on the MSE side if it has not been initiated by the MCE itself. For example, if the user deletes a message on the MSE-device directly, this requires a message deletion notification for the related folder, whereas if the user deletes a message via the MCE, no notification shall be sent.
In the case of a message reception from the network, the MSE shall send the related notification of a message arrival only if the MSE has received a complete message. (e.g., last part of a concatenated SMS). Since some push email services only push a fraction of the email to the email client (e.g., email header), the MSE may, for emails, send the notification after receiving only a fraction.
The mode of the Notification may be configured by the MCE using the Notification Registration feature (see Section 4.5). The default mode for the Notification is "off" (i.e., the notification is inactive at the MSE if the MAP session has been started). If the MNS connection is terminated by either device, then the message notification mode shall be set to default mode on MSE (i.e. the notification is inactive).
The NotificationFilter allows to dynamically adjust the need for specific event reports. Please refer to Section 5.14 for additional information.
A function sequence for the Notification feature is illustrated in Figure 4.1 (see also Section 4.6 for definitions of related functions):
![]() |
4.2. Browsing Feature
This feature allows the MCE to browse messages on the MSE and to retrieve individual messages from the MSE.
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
UpdateInbox |
O |
M |
SetFolder |
M |
M |
GetFolderListing |
M |
M |
GetMessagesListing |
M |
M |
GetMessage |
O |
M |
SetMessageStatus |
O |
M |
GetConversationListing |
C.1 |
C.2 |
- C.1:
-
Mandatory to support IF the bit for the feature “Conversation listing” is set in the MapSupportedFeatures of the MCE; otherwise Excluded.
- C.2:
-
Mandatory to support IF the bit for the feature “Conversation listing” is set in the MapSupportedFeatures of the MSE; otherwise Excluded.
A typical function sequence for the Browsing feature is illustrated in Figure 4.2 (see also Section 4.6 for definitions of related functions):

In the case of a 'GetMessage' applied on a notification-message (e.g., MMS-Notification or email Notification), the MSE shall not deliver the notification-message but shall retrieve the corresponding message from the network and deliver it with the same message handle as used before for the message-notification. The required sequence is shown in Figure 4.3:
![]() |
In the case of a 'GetMessage' applied on a message which is not stored completely on the MSE (e.g., in case of a fragmented email as used by some Push-Mail services), the content of the related message cannot be delivered completely within one 'GetMessage' response. In this case, several requests/responses have to be performed (see also section 5.6). The required sequence is shown in Figure 4.4:
![]() |
A function sequence to retrieve a Conversation-Listing is shown in Figure 4.5. The optional and conditional application parameters of the function are not shown in the sequence.
![]() |
4.3. Uploading Feature
This feature allows uploading messages from the MCE to the MSE. This feature is used to realize both scenario 3 and 5 (see Section 2.3). However, the MSE may implement policies that disable the sending of messages to the remote network, making sending messages through the MSE impossible to realize.
The feature additionally allows to change the presence and chat state of the owner.
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
SetFolder |
M |
M |
GetFolderListing |
M |
M |
PushMessage |
M |
M |
GetOwnerStatus |
C.1 |
C.2 |
SetOwnerStatus |
C.1 |
C.2 |
- C.1:
-
Mandatory to support IF the bit for the feature “Owner Status” is set in the MapSupportedFeatures of the MCE; otherwise Excluded.
- C.2:
-
Mandatory to support IF the bit for the feature “Owner Status” is set in the MapSupportedFeatures of the MSE; otherwise Excluded.
A function sequence for the Message Uploading feature is illustrated in Figure 4.6 (see also Section 4.6 for definitions of related functions):
![]() |
An exemplary function sequence for a request to change the PresenceAvailability and PresenceText is shown in Figure 4.7:
![]() |
4.4. Delete Feature
This feature allows the MCE to delete messages on the MSE's message repository.
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
SetMessageStatus |
M |
M |
The MSE shall send a ‘MessageDeleted’ event if a message was deleted or a ‘MessageRemoved’ event if a message was irrevocably removed on the MSE using the Event Notification Feature in 4.1 if not declared otherwise by the NotificationFilter 5.14.
A function sequence for the Delete feature is illustrated in Figure 4.8 (see also Section 4.6 for definitions of related functions):
![]() |
4.5. Notification Registration Feature
If support for the MAP Notification-Registration feature is claimed by the MSE, this feature allows the MCE to set the Notification mode on the MSE side to:
-
"Off", if no notification required
-
"On", if notification required (MNS OBEX connection)
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
SetNotificationRegistration |
M |
M |
A function sequence for the Notification-Registration feature is illustrated in Figure 4.9 (see also Section 4.6 for definitions of related functions):
![]() |
The MCE has to perform the NotificationRegistration as described in Figure 4.9 using a MAS connection for each MAS Instance it requires notifications from. However, the MSE shall initiate a Message Notification Service connection only if there is no ongoing Message Notification Service connection with the MCE as there shall be only one MNS connection for all MAS Instances (see also Section 3.1.7.2). The MSE shall terminate the Message Notification Service connection when the MCE sets the SetNotificationRegistration to OFF for all connected MAS instances.
4.6. Instance Information Feature
If support for the MAP Instance Information feature is claimed by the MSE, this feature allows the MCE to get additional information about any advertised instance.
This includes the MASInstanceInformation string. This text field contains user-readable information about a given MAS Instance. Since this is exchanged over an encrypted link, it may contain additional information compared to the name in the SDP record (See “ServiceName” in Section 7.1.1).
The Instance Information Feature of a MAS may be used to retrieve information about other given MAS Instances advertised by the server in its SDP records.
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
GetMASInstanceInformation |
O |
M |
A function sequence for the Instance Information feature is illustrated in Figure 4.10 (see also Section 5 for definitions of related functions):

4.7. Message Forwarding
This feature allows the MCE to forward messages that reside on the MSE directly to other recipients without the need to download and reupload potential attachment(s) to the MCE. The MCE may prepend text to the existing one or modify/replace existing text content of the original message.
Function |
Support by the MCE |
Support by the MSE |
---|---|---|
PushMessage |
M |
M |
A function sequence for the Message Forwarding feature is illustrated in Figure 4.11 and Figure 4.12. See also Section 5.8 for the definition of the PushMessage function.
![]() |
![]() |
5. Message Access Profile Functions
5.1. SendEvent Function
If the MCE supports the Message Notification feature and the MCE has registered itself at the MSE for Notification, the MSE shall use the SendEvent function to notify the MCE on events affecting the messages listings within the MSE's folders structure (e.g., the arrival of new messages).
In the case where the MSE has accepted messages for sending to the network from the MCE (using the Message Uploading feature), the MSE shall notify the MCE of the sending status of these messages using the SendEvent function.
The request is formatted as shown in Table 5.1:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header Header |
Connection ID Single Response Mode Type Application Parameters -MASInstanceID Body/End of Body |
Varies 0x01 “x-bt/MAP-event-report” Varies MAP-Event-Report object |
M C.1 M M M |
- C.1:
-
Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
The response is formatted as shown in Table 5.2:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header |
Single Response Mode Single Response Mode Param |
0x01 0x01 |
C.1 C.2 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous PUT request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
5.1.1. Connection ID
The type header shall be used to indicate the connection ID received during the connection establishment in order to signal the recipient of the request which OBEX connection this request belongs to.
5.1.2. Type
The type header shall be used to indicate the type of object to be transmitted:
<x-bt/MAP-event-report> |
MAP-Event-Report object |
5.1.3. Application parameters
For further details, see Section 6.3.1.
5.1.3.1. MASInstanceID
This header shall be used by the MSE to indicate the corresponding ‘MASInstanceID’ of the MAS Instance (see Sections 3.1.7.2 and 7.1). As only one MNS service connection can be established from the MSE device to the MCE, this parameter is required by the MCE to determine for which MAS Instance this event is delivered. For further details, see Section 6.3.1.
5.1.4. Body/EndOfBody
These headers shall contain the MAP-event-report object that is sent by the MSE device.
5.2. SetNotificationRegistration Function
If the MCE supports the Message Notification feature, the MCE shall use this function to register itself for being notified of the arrival of new messages.
The request is formatted as shown in Table 5.3:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header |
Connection ID Type Application Parameters -NotificationStatus Body/End of Body |
Varies “x-bt/MAP-NotificationRegistration” On/Off Filler-byte 0x30 |
M M M M |
The response is formatted as shown in Table 5.4:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
5.2.1. Connection ID
See Section 5.1.1.
5.2.2. Type
The type header shall be used to indicate the type of object to be transmitted:
<x-bt/MAP-NotificationRegistration>
5.2.3. Application Parameters
For further details, see Section 6.3.1.
5.2.3.1. NotificationStatus
The MCE shall indicate the request for being notified by incoming message events using this parameter. The header shall have either of the values:
-
"Off", meaning no notification required
-
"On", meaning the notification service (MNS) connection shall be established
For further details, see Section 6.3.1.
5.2.4. Body/EndOfBody
To avoid a PUT with an empty body leading to a 'delete', these headers contain a filler byte. The value of this byte shall be set to 0x30 (="0").
5.3. SetFolder Function
If supported, the MCE shall use this function to navigate the folders of the MSE.
The request is formatted as shown in Table 5.5:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field Field Field Header Header |
Opcode Packet Length Flags Constant Connection ID Name |
SETPATH (0x85) Varies Up/Down/Root Reserved (0) Varies Name of the folder |
M M M M M O |
The response is formatted as shown in Table 5.6:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0xA0 OR Error Code 3 |
M M |
5.3.1. Connection ID
See Section 5.1.1.
5.3.2. Flags and Name
These headers shall be used to indicate the folder to be navigated to. Note that the OBEX SetPath Command is the basis for the SetFolder function, where Flags is the third byte of the OBEX request (Section 3.3.6 of [7]). OBEX SetPath only allows for setting the current folder to the root, parent, or a child folder.
For example, in order to set the current folder to "msg", it is necessary to apply SetPath twice: the first is necessary to change into "telecom", and the second is necessary to change into "msg".
The usage of the OBEX Flags and Name header is summarized in Table 5.7:
Go back to root |
Go down 1 level |
Go up 1 level |
|
---|---|---|---|
Flags / Bit 0: |
0 |
0 |
1 |
Bit 1 (*): |
1 |
1 |
1 |
Bit 2~7: |
0 |
0 |
0 |
Name header |
Mandatory empty |
Mandatory Name of child folder |
Optional: Name of child folder, omitted, or empty. |
Description |
Reset to the root directory |
Go down one level into this directory name, relative to the current directory |
When name is not present or empty: Go to parent directory (equivalent to “cd ..” on some systems). When name is present: Go up one level before applying name (equivalent to "cd ../name" on some systems). |
- (*)
-
The creation of new directories on the MSE is not a feature of MAP, so the MCE shall set Bit1=1.
5.4. GetFolderListing Function
If supported, the MCE shall use this function to retrieve the Folder-Listing object from the current folder of the MSE.
The request is formatted as shown in Table 5.8:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - MaxListCount - ListStartOffset |
Varies 0x01 0x01 “x-obex/folder-listing” Varies Varies |
M C.1 C.2 M O O |
- C.1:
-
The Single Response Mode header is Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.9:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - FolderListingSize Body/End of Body |
0x01 0x01 Varies Folder-Listing object |
C.1 C.2 C.3 C.4 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
Mandatory IF the response code is success (0x90 OR 0xA0) AND the request contained MaxListCount = 0; otherwise Excluded.
- C.4:
-
Mandatory IF the response code is success (0x90 OR 0xA0) AND the request did not contain MaxListCount = 0; otherwise Excluded.
5.4.1. Connection ID
See Section 5.1.1.
5.4.2. Type
The type header shall be used to indicate the type of object to be received.
<x-obex/folder-listing> |
Folder-Listing object. |
5.4.3. Application Parameters
For further details, see Section 6.3.1.
5.4.3.1. MaxListCount
This header may be used to indicate the maximum number of folders listed in the <x-obex/folder-listing> object. The maximum number of entries shall be 1024 if this header is not specified.
5.4.3.2. ListStartOffset
This header may be used to indicate the offset of the first entry of the returned Folder-Listing object compared to the first entry of the Folder-Listing object that would be returned if the ListStartOffset parameter was not specified in the request. For example, if ListStartOffset is 5, then the first five listing entries are not delivered. The offset shall be 0 if this header is not specified.
5.4.3.3. FolderListingSize
This application parameter shall be used in the response if the value of MaxListCount in the request is 0. In this case, the parameter shall report the actual number of accessible folders in the current folder of the MSE. If MaxListCount = 0, the MSE shall ignore all other application parameters that may be present in the request. The response shall not contain any Body header.
5.4.4. Body/EndOfBody
If the request gas been successful, these headers shall contain the <x-obex/folder-listing> object that is sent by the MSE device.
5.5. GetMessagesListing Function
If supported, the MCE shall use this function to retrieve Messages-Listing objects from the MSE.
The request is formatted as shown in Table 5.10:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Name Application Parameters - MaxListCount - ListStartOffset - SubjectLength - ParameterMask - FilterMessageType - FilterPeriodBegin - FilterPeriodEnd - FilterReadStatus - FilterRecipient - FilterOriginator - FilterPriority - ConversationID - FilterMessageHandle |
Varies 0x01 0x01 “x-bt/MAP-msg-listing” Name of the folder Varies Varies Varies Varies Varies Varies Varies Varies Varies Varies Varies Varies Varies |
M C.1 C.2 M M O O O O O O O O O O O O O |
- C.1:
-
The Single Response Mode header is Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.11:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - NewMessage - MSETime - ListingSize - DatabaseIdentifier - FolderVersionCounter End of Body |
0x01 0x01 Varies Varies Varies Varies Varies Messages-Listing object |
C.1 C.2 C.3 C.3 C.3 C.4 C.5 C.3 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
Mandatory IF the response code is success (0x90 OR 0xA0); otherwise Excluded.
- C.4:
-
Mandatory IF ‘Database Identifier’ is supported; otherwise Optional.
- C.5:
-
Mandatory IF ‘Folder Version Counter’ is supported and ConversationID is not present in the request; otherwise Optional.
5.5.1. Connection ID
See Section 5.1.1.
5.5.2. Name
This property shall be used to indicate the folder from which the Messages-Listing object is to be retrieved. The property shall be empty in case the desired listing is that of the current folder or shall be the name of a child folder (this may be any folder from the <x-obex/folder-listing> object). Thus, the value shall not include any path information.
5.5.3. Type
The type header shall be used to indicate the type of object to be retrieved:
<x-bt/MAP-msg-listing> |
Messages-Listing object |
5.5.4. Application Parameters
For further details, see Section 6.3.1.
5.5.4.1. MaxListCount
This header may be used to indicate the maximum number of messages listed in the Messages-Listing object. The number of messages in the list shall not exceed the limit specified by this parameter. The maximum number of entries shall be 1024 if this header is not specified. The MessageListing object shall contain MaxListCount entries if enough entries exist, starting from ListStartOffset. For example, a request with 'ListStartOffset' = 0 and 'MaxListCount'=100 delivers the 100 most recent messages in chronological descending order.
If 'MaxListCount'=0 is in the request, the MSE shall respond with the headers "NewMessage, MSETime”, "ListingSize", “DatabaseIdentifier”, and “FolderVersionCounter" only (see descriptions of these headers below) and shall not deliver a Messages-Listing object.
5.5.4.2. ListStartOffset
This header may be used to indicate the offset of the first entry of the returned MessagesListing object. For example, if ListStartOffset is 5, then the first five messages are not delivered. The offset shall be 0 if this header is not specified.
5.5.4.3. SubjectLength
This header may be used to indicate the maximum string-length of the "subject" parameter in the entries of the Messages-Listing object. The value range shall be 1–255.
5.5.4.4. ParameterMask
This header may be used to indicate the parameters contained in the requested Messages-Listing objects. The MCE can use this header to receive only the relevant content of the requested Messages-Listing objects.
If this header is not specified or carries the value 0, the MSE shall return all parameters of the Messages-Listing object DTD (see Section 3.1.6) labeled as "REQUIRED" and may return all other attributes. The message handle shall always be present.
Bit 0 |
subject |
Bit 1 |
datetime |
Bit 2 |
sender_name |
Bit 3 |
sender_addressing |
Bit 4 |
recipient_name |
Bit 5 |
recipient_addressing |
Bit 6 |
type |
Bit 7 |
size |
Bit 8 |
reception_status |
Bit 9 |
text |
Bit 10 |
attachment_size |
Bit 11 |
priority |
Bit 12 |
read |
Bit 13 |
sent |
Bit 14 |
protected |
Bit 15 |
replyto_addressing |
Bit 16 |
delivery_status |
Bit 17 |
conversation_id |
Bit 18 |
conversation_name |
Bit 19 |
direction |
Bit 20 |
attachment_mime |
Bits 21–31 |
Reserved for Future Use |
Bit i=1 indicates that the parameter related to Bit i shall be present in the requested Messages-Listing. The reserved bits shall be set to 0 by MCE and discarded by MSE.
Annotation Filtering (attributes below): The filter operations related to the filter parameters listed below shall be used as AND filtering, so the messages returned in the MessagesListing object have to fulfill all filter conditions defined in the request. If list-segmentation with MaxListCount/ListStartOffset is requested in combination with filter-operations, then the filter-operations shall be applied first. The segmentation shall subsequently be applied onto the filtering result, which shall be a message-list sorted chronologically in descending order. |
5.5.4.5. FilterMessageType
This application parameter may be used to filter the messages that are returned in the Messages-Listing object by message type.
5.5.4.6. FilterPeriodBegin, FilterPeriodEnd
These application parameters may be used to filter the messages that are returned in the Messages-Listing object by delivery date.
If the feature ‘UTC Offset Timestamp Format’ is supported, then the two parameters shall be formatted in accordance to Section 3.1.10. If the feature ‘UTC Offset Timestamp Format’ is not supported, then the two parameters shall be formatted in "YYYYMMDDTHHMMSS" as defined for the OBEX "time" header in Section 2.2 of [7] (Local Time time basis). If "FilterPeriodBegin" is not specified, the returned message listing shall include the messages older than "FilterPeriodEnd". If "FilterPeriodEnd" is not specified, the returned message listing shall include the messages from "FilterPeriodBegin" to current time.
If both parameters are not specified, no messages shall be filtered out by these parameters.
If the value of "FilterPeriodBegin" is larger than the value of "FilterPeriodEnd", no messages shall be delivered.
5.5.4.7. FilterReadStatus
This application parameter may be used to filter the messages that are returned in the MessagesListing object by read-status. The parameter shall have a value of "read", "unread", or "no-filtering".
5.5.4.8. FilterRecipient
This application parameter may be used to filter the messages that are returned in the Messages-Listing object by message-recipient. A related bMessage shall be included in the listing if the delivered FilterRecipient string matches a sub-string of one of the vCard attributes "N", "TEL", and "EMAIL" of at least one <bmessage-recipient> contained by this message. This parameter shall not be used if the MCE intends to select messages with any recipient. The text string in this application parameter shall be coded in UTF-8.
5.5.4.9. FilterOriginator
This application parameter may be used to filter the messages that are returned in the Messages-Listing object by message-originator. A related bMessage shall be included in the listing if the delivered FilterOriginator string matches a sub-string of one of the vCard attributes "N", "TEL", and "EMAIL" of the <bmessage-originator> contained by this message. This parameter shall not be used if the MCE intends to select messages with any originator. The text string in this application parameter shall be coded in UTF-8.
5.5.4.10. FilterPriority
This application parameter may be used to filter the messages that are returned in the Messages-Listing object by priority. The parameter shall have a value of "high", "non-high", or "no-filtering".
5.5.4.11. NewMessage
If the request has been successful, the MSE shall use this parameter to indicate the presence of unread messages in the listing using this parameter. The parameter shall have a value of "Off" (meaning no unread messages) or "On" (meaning unread messages are present). For further details, see Section 6.3.1.
5.5.4.12. MSETime
If the request has been successful, this application parameter shall be used in the response to report the Local Time basis of the MSE and its UTC offset, so the MCE is supported in interpreting the timestamps of the messages listing entries. The format shall be "YYYYMMDDTHHMMSS±hhmm" (e.g., for Central European Time (CET), the offset is UTC+1h, so the delivered value is "YYYYMMDDTHHMMSS+0100" where "YYYYMMDDTHHMMSS" is the current CET timestamp of the MSE). If the MSE device has no information about the current UTC time, the offset value shall not be delivered, so the delivered parameter is "YYYYMMDDTHHMMSS". For further details, see Section 6.3.1.
5.5.4.13. ListingSize
If the request has been successful, this application parameter shall be used in the response to report the number of accessible messages in the corresponding folder fulfilling the filter parameters (if present) as described above. If MaxListCount = 0, the MSE shall ignore the request-parameters "ListStartOffset", "SubjectLength", and "ParameterMask". In this case, the response shall not contain the Body header with the <x-bt/msg-listing> object.
5.5.4.14. Database Identifier
See Section 3.1.14.
5.5.4.15. ConversationID
This application parameter may be used to filter the messages that are returned in the MessagesListing object by conversation IDs.
If this application parameter holds a value, the MessageListing object in the response shall contain all messages with this specific conversation ID from all available folders. In the MessageListing object of the response, the direction attribute shall reflect the direction of that message (see Section 3.1.6).
If this application parameter holds a value, the name header shall not hold a value and shall be ignored by the MSE.
5.5.4.16. FolderVersionCounter
This application parameter shall only be returned if all of the conditions are fulfilled:
-
The ‘Folder Version Counter’ MSE and MCE feature bits are both set, AND
-
the request contained ‘MaxListCount=0’, AND
-
the request did not contain ConversationID, AND
-
the request has been successful.
The application parameter is used to detect if something has changed in the selected virtual folder. The folder version counter shall increment on every completion of changes to any of the properties in the messages in the selected folder as well as on insertion or removal of entries. The counter shall not increment if there is no change to the content and shall not take filtering into account.
If for some reason the ‘Folder Version Counter’ rolls over or starts over, a new value of the Database Identifier shall be generated. More information can be found on the Database Identifier in Section 3.1.14.
5.5.4.17. FilterMessageHandle
This application parameter may be used to filter the messages that are returned in the MessagesListing object by a message handle.
If this application parameter holds a value, the MessageListing object in the response shall contain only the messages with this specific message handle. In the MessageListing object in the response, the direction attribute shall reflect the direction of that message (see Section 3.1.6.1).
If this application parameter holds a value, all other application parameters aside from ParameterMask and SubjectLength shall not be present.
If this application parameter holds a value, the name header shall not hold a value and shall be ignored by the MSE. The MSE shall consider the whole message repository to be independent of the current selected folder.
5.5.5. Body/EndOfBody
If the request has been successful, these headers shall contain the <x-bt/msg-listing> object that is sent by the MSE device. If MaxListCount = 0 in the request, this parameter shall not be present in the response.
5.6. GetMessage Function
This function retrieves a specific message from the MSE device. The request is formatted as shown in Table 5.13:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Name Type Application Parameters - Attachment - Charset - FractionRequest |
Varies 0x01 0x01 Message Handle “x-bt/message” Varies Varies Varies |
M C.1 C.2 M M M M O |
- C.1:
-
The Single Response Mode header is Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.14:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - FractionDeliver Body/End of Body |
0x01 0x01 Varies bMessage object |
C.1 C.2 C.3 C.4 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
This parameter shall be present only IF the request has been successful and the 'Fraction Request' parameter has been present in the request, otherwise Excluded.
- C.4:
-
Mandatory IF the response code is success (0x90 OR 0xA0); otherwise Excluded.
5.6.1. Connection ID
See Section 5.1.1.
5.6.2. Name
The Name header shall be used to indicate the handle of the message to be retrieved. The handle shall be represented by a null-terminated Unicode text string with 16 hexadecimal digits.
5.6.3. Type
The type header shall be used to indicate the type of object to be retrieved. The value shall be set to the following setting:
<x-bt/message> |
bMessage object |
5.6.4. Application parameters
For more details, see Section 6.3.1.
5.6.4.1. Charset
This application parameter shall be used to determine the transcoding of the textual parts of the delivered bMessage-content as described in Section 3.1.3. The value shall be either
-
<native> if the message object shall be delivered without transcoding
-
<UTF-8> if the message text shall be transcoded to UTF-8 by the before delivery
As described in Section 3.1.3, the following requirements shall be fulfilled:
-
If the message is an email, MMS, or IM, the only value shall be <UTF-8>, as textual parts of these message types shall always be transcoded. The MSE shall reject a request with value <native> in this case.
-
If the message is an SMS, both values are possible:
-
<native> initiates the delivery of the overall SMS PDU embedded in the bMessage object without any transcoding.
-
<UTF-8> initiates the delivery of the textual part of the SMS only, transcoded to UTF-8. The MSE shall reject a request with value <UTF-8> if the message does not include textual content
-
5.6.4.2. Attachment
This application parameter shall be used if the attachment(s) (if any) of a message is to be included in the bMessage object returned by the MSE. The value of this parameter is "Off" (no attachments) or "On" (attachments to be delivered).
The following applies:
-
Parameter “Off” (no attachments): The MSE shall remove any element with a MIME type different than “text/…” from the bMessage body content before sending the bMessage body in the response.
-
Parameter “On” (attachments to be delivered): The MSE shall send the body of the bMessage including any MIME type in the response.
5.6.4.3. FractionRequest
This application parameter may be used if the message is a fractioned email as applied for some push-email services (see also Section 3.1.6 "reception_status") and shall not be used otherwise. In this case, several requests are required to retrieve the overall bMessage object. The value shall be either:
-
<first> when the first email fraction of the message object shall be delivered. This value shall be used by the MCE in its first GetMessage request on a particular bMessage.
-
<next> when the email fraction following the fraction of the previous GetMessage request shall be delivered by the MSE.
The response of the MSE on a request with value <first> shall deliver a bMessage with all parameters as defined in Section 3.1.3 with exactly one bBody object containing the first fraction of the email.
The response of the MSE on a request with value <next> shall deliver only a bBody object as defined in Section 3.1.3 containing the next fraction of the email.
If the message affected is a fractioned email but this application parameter is not present in the request, the MSE shall load the overall message from the network and deliver the message completely.
To give the best user experience, an MCE should always use the FractionRequest with the value <first> for messages with "reception_status" different from "complete". This is to avoid fetching unneeded data from the network. The user should manually trigger any further download of the message.
The MCE should be aware that a request using the <next> value can fail for messages that cannot be directly concatenated after a download of the next part (e.g., if it leads to changes of the message parts already transferred). It is recommended to do a getMessage(FractionRequest) with the value <first> for the first part of the message, and a getMessage() with no FractionRequest value to get the entire message.
5.6.4.4. FractionDeliver
This application parameter shall be present if the 'Fraction Request' parameter has been present in the related GetMessage request and shall not be used otherwise. The value shall be one of the following:
-
<more> when an email fraction is delivered and there are other fractions following this one.
-
<last> when the last email fraction of the message object is delivered.
5.6.5. Body/EndOfBody
If the request has been successful, these headers shall contain the body of the bMessage that is returned by the MSE device (see x-bt/message defined in Section 3.1.3). The message may be in its original form, or it may have been stripped of all its attachments, depending on the value of the application parameter "Attachment" in the request.
In the case of a request on a fractioned email with 'Fraction Request' value <next> (see above), this header shall return a bBody object only (see x-bt/message defined in Section 3.1.3).
5.7. SetMessageStatus Function
The function allows the MCE to modify the status of a message on the MSE.
The request is formatted as shown in Table 5.15:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header Header |
Connection ID Name Type Application Parameters - StatusIndicator - StatusValue - ExtendedData End of Body |
Varies Message Handle “x-bt/messageStatus” Varies Varies Varies Filler-byte 0x30 |
M M M M M O M |
The response is formatted as shown in Table 5.16:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
5.7.1. Connection ID
See Section 5.1.1.
5.7.2. Name
The Name header shall contain the handle of the message, whose status shall be modified. The handle shall be represented by a null-terminated Unicode text string with 16 hexadecimal digits.
5.7.3. Type
The type header shall be used to indicate the type of object to be sent.
<x-bt/messageStatus>
5.7.4. Application Parameters
For more details, see Section 6.3.1.
5.7.4.1. StatusIndicator
This header shall be used to indicate which status information is to be modified. The parameter value shall be one of the following:
-
"readStatus" for the Read status
-
"deletedStatus" for the Deleted status
-
“SetExtendedData” for Extended Message Data
5.7.4.2. StatusValue
This header shall be used to indicate the new value of the status indicator to be modified. The parameter shall have one of the values depending on the StatusIndicator:
-
"yes" (=read) or "no" (=unread) for the "readStatus" indicator
-
"yes" (=deleted) or "no" (=undeleted) for the "deletedStatus" indicator
Changing the status of a message can initiate actions on the MSE. The following rules shall be applied after the modification:
-
Messages in any MSE folder whose deletedStatus have been set from "no" (non-deleted) to "yes" (deleted) shall be shifted by the MSE to the "Deleted" folder.
-
Messages in the 'Deleted' folder whose deletedStatus have been set from "yes" (deleted) to "no" (un-deleted) shall be shifted by the MSE to the "Inbox" folder. The MSE device may then shift the message to the folder in which the message was originally located before the delete and send a message shift event.
5.7.4.3. ExtendedData
The new value of the extended data. Please refer to Section 3.1.13 for additional information.
This application parameter shall only be present if the extendedData of a message shall be changed on the MSE and the StatusIndicator application parameter contains the value “SetExtendedData”.
5.7.5. Body/EndOfBody
To avoid PUT with empty Body leading to a 'delete' of the related message, these headers shall contain a filler byte. The value of this byte shall be set to 0x30 (="0").
5.8. PushMessage Function
This function allows an MCE to push a message to a folder or conversation of the MSE.
When this function is used to add a Message object to a conversation:
-
a preceding SetFolder operation is not required;
-
the storing of the message on the MSE is implementation specific.
The request is formatted as shown in Table 5.17:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header Header Header |
Connection ID Single Response Mode Type Name Application Parameters - Transparent - Retry - Charset - ConversationID - Message Handle - Attachment - ModifyText End of Body |
Varies 0x01 “x-bt/message” Name of the Folder Varies Varies Varies Varies Varies Varies Varies bMessage |
M C.1 M M O O M O C.2 C.3 C.3 M |
- C.1:
-
The Single Response Mode header is Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
This application parameter is Optional IF the feature ‘Message Forwarding’ is supported by both the MSE and MCE, which are communicating with one another; otherwise Excluded.
- C.3:
-
These application parameters are Mandatory IF the application parameter MessageHandle is present in the request; otherwise Excluded.
The response is formatted as shown in Table 5.18:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header |
Single Response Mode Single Response Mode Param Name |
0x01 0x01 Handle |
C.1 O C.2 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous PUT request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
Mandatory IF the response code is success (0x90 OR 0xA0); otherwise Excluded.
5.8.1. Connection ID
See Section 5.1.1.
5.8.2. Name
In a request, this property shall be used to indicate the folder to which the Message object is to be pushed.
This property shall be:
-
empty if the desired listing is that of the current folder or if the Message object is being added to a conversation OR
-
the name of a child folder.
Thus, the value shall not include any path information.
In a response, the Name header shall be used to contain the handle that was assigned by the MSE device to the message that was pushed by the MCE device. The handle shall be represented by a null-terminated Unicode text string with 16 hexadecimal digits.
5.8.3. Type
The type header shall be used to indicate the type of the pushed object.
<x-bt/message> |
bMessage object |
5.8.4. Application parameters
For more details, see Section 6.3.1.
5.8.4.1. Transparent
This parameter may be used to indicate to the MSE that no copy of the message shall be kept in the 'Sent' folder after the message was sent. This is especially useful for telematics applications (e.g., frequent sending of car's speed and position for traffic measurements (floating car data)). This application parameter is optional. The value of this parameter is "OFF" (keep messages in 'Sent' folder) or "ON" (don't keep messages in 'Sent' folder). If this parameter is not defined in the request, the MSE shall use "OFF" as the default value.
5.8.4.2. Retry
This parameter may be used to indicate whether successive attempts at sending the message shall be carried out in case the cellular network is not accessible when the message is sent from the MCE to the outbox of the MSE. This application parameter is optional. The value of this parameter is "OFF" (don not retry) or "ON" (retry). If this parameter is not defined in the request, the MSE shall use "ON" as the default value.
5.8.4.3. Charset
This application parameter shall be used to determine the transcoding of the textual parts of the delivered bMessage-content as described in Section 3.1.3. The value shall be set to one of the following:
-
<native> if the message object shall be delivered without transcoding (e.g., an SMS-Submit PDU).
-
<UTF-8> if the message text shall be transcoded to UTF-8 by the MSE before delivery.
As described in Section 3.1.3, the following requirements shall be fulfilled:
-
If the message is an email or MMS, the only value shall be <UTF-8>, as textual parts of these message types shall be always transcoded. The MSE shall reject a request with value <native> in this case.
-
If the message is an SMS, both values are possible:
-
<native> indicates the overall SMS PDU is embedded in the bMessage object without any transcoding.
-
<UTF-8> indicates the bMessage includes the textual part of the SMS only, transcoded to UTF‑8. The MSE shall reject a request with value <UTF-8> if the message does not include textual content.
-
5.8.4.4. ConversationID
This application parameter may be used to push a message to a specific conversation instead of sending the message to the recipients contained in the bMessage vCards.
The value of this application parameter shall be the conversation ID of the conversation to which the message is added.
If this application parameter is present:
-
the MSE shall ignore the recipients included in the bMessage and add the message to the conversation with the stated conversation ID AND
-
the Name header shall be ignored by the MSE.
If this application parameter is not present, it is up to the MSE implementation if a new conversation is created or if the message is added to an existing conversation with the same recipients as contained in the bMessage.
5.8.4.5. Message Handle
This Application Parameter shall contain the message handle of the original message that shall be sent/forwarded.
5.8.4.6. Attachment
This Application Parameter shall be used to indicate if the attachment(s) of the original message on the MSE shall be attached when forwarding it.
The value of this parameter is one of the following:
-
“OFF” if the original email shall be forwarded without attachment(s).
-
“ON” if the original email shall be forwarded with attachment(s).
This application parameter shall be included if the MessageHandle application parameter is present.
5.8.4.7. ModifyText
This Application Parameter shall be used to indicate if the MSE shall prepend or replace the textual content of the original bMessage with the bMessage in the Body.
The value of this parameter shall be one of the following:
-
“REPLACE” if the MSE shall replace the textual content of the original message with the message in the Body header. This is the case if the MCE modified the original text (e.g., inline editing) or the original text shall be sent.
-
“PREPEND” if the MSE shall prepend the textual content of the message in the Body header to the original message, (e.g., “FYI” above the original message). The Body header of the request shall contain a bMessage with only the textual content that shall be prepended. The MSE shall prepend the text in the Body header to the original text of the message.
This application parameter shall be included if the MessageHandle application parameter is present.
5.8.5. Body/EndOfBody
These headers shall contain the body of the bMessage that is delivered to the MSE device. If the textual parts of the message are coded in UTF-8, the MSE shall transcode it to the required format as described in Section 3.1.3.
In the case of a forwarded message (MessageHandle application parameter is present), the body shall contain text to be prepended or the text of the original message including modifications according to the Application Parameter ModifyText.
5.9. UpdateInbox Function
This function allows the MCE to initiate an update of the MSE's inbox (i.e., the MSE shall contact the network (e.g., its mailbox) to retrieve new messages if available).
The request is formatted as shown in Table 5.19:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header |
Connection ID Type Body/End of Body |
Varies “x-bt/MAP-messageUpdate” Filler-byte 0x30 |
M M M |
The response is formatted as shown in Table 5.20:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
If the MSE does not allow the polling of its mailbox, it shall answer with a 'Not implemented' error response (see Section 6.3.3).
5.9.1. Connection ID
See Section 5.1.1.
5.9.2. Type
The type header shall be used to indicate the type of object to be sent.
<x-bt/MAP-messageUpdate> |
virtual object containing a filler byte 0x30 (="0") |
5.9.3. Body/EndOfBody
To avoid PUT with empty Body leading to a 'delete' of the related message, these headers shall contain a filler byte. The value of this byte shall be set to 0x30.
5.10. GetMASInstanceInformation Function
This function may be used by the MCE to retrieve user-readable information about the MAS Instances provided by the MSE.
The request is formatted as shown in Table 5.21:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - MASInstanceID |
Varies 0x01 0x01 “x-bt/MASInstanceInformation” Varies |
M C.1 C.2 M M |
- C.1:
-
The Single Response Mode header is Mandatory IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.22:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - OwnerUCI Body/End of Body |
0x01 0x01 Varies MASInstanceInformation |
C.1 C.2 C.4 C.3 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
The Body or End of Body header is Mandatory IF the response code is success (0x90 OR 0xA0); otherwise Excluded.
- C.4:
-
The OwnerUCI Application Parameter is Mandatory IF the MAS Instance represents an account that is used by MAP and PBAP; otherwise Excluded.
5.10.1. Connection ID
See Section 5.1.1.
5.10.2. Type
The type header shall be used to indicate the type of information to be retrieved:
<x-bt/MASInstanceInformation>
5.10.3. Body
MASInstanceInformation is a string with the requested user-readable information of the MAS-instance. It shall be represented by a null-terminated UTF8 encoded text string of at most 200 bytes (including null-termination).
If the requested MAS-instance represents an Instant Messaging Server or a mixed message type instance, this string shall include the user-readable representation of the Instant Messaging UCI according to the assigned numbers UCI list [3].
5.10.4. Application Parameters
For more details, see Section 6.3.1.
5.10.4.1. MASInstanceID:
The identifier of the MAS-instance for which the information is requested.
5.10.4.2. OwnerUCI
The UCI of the MAS-instance for which the information is requested.
Example:
lync:x.why@whatever.com
5.11. SetOwnerStatus function
This function allows an MCE to change the Presence, Chat State, or Last Activity of the owner on the MSE.
The MCE shall not send a request for this function if the ‘Owner status’ bit in the MapSupportedFeatures of the MSE is not set.
The request is formatted as shown in Table 5.23:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - PresenceAvailability - PresenceText - LastActivity - ChatState - ConversationID End of Body |
Varies 0x01 0x01 “x-bt/ownerStatus” Varies Varies Varies Varies Varies Filler-byte 0x30 |
M C.1 C.2 M C.3 C.3 C.3 C.3 C.3 M |
- C.1:
-
The Single Response Mode header is Optional in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
At least one of the Application Parameters shall be present in the request.
The response is formatted as shown in Table 5.24:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header |
Single Response Mode Single Response Mode Param |
0x01 0x01 |
C.1 C.2 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
5.11.1. ConnectionID
See Section 5.1.1.
5.11.2. Type
The type header shall be used to indicate the type of content to be changed. In this function, its content shall be:
<x-bt/ownerStatus> for the participant information including the owner’s instant messaging presence.
5.11.3. Application Parameters
For more details, see Section 6.3.1.
5.11.3.1. PresenceAvailability
This header may be used to indicate the presence availability of the owner. The value shall be one of the values defined in Section 3.1.11.
5.11.3.2. PresenceText
This header may be used to indicate the presence text of the owner. The value shall be a string that complies with the definition in Section 3.1.11.
5.11.3.3. LastActivity
This header may be used to indicate the datetime of the owner’s last activity. The value shall comply with the definition in Section 3.1.10.
5.11.3.4. ChatState
This header may be used to indicate the chat state of the owner. The value shall be one of the values defined in Section 3.1.12.
5.11.3.5. ConversationID
This header may be used to indicate a specific conversation for which the chat state of the owner should change. If this header is not present in the request, the chat state should be regarded as a conversation that is independent of the chat state of the owner. Please refer to Section 3.1.16 for the format of the Conversation ID.
If the ConversationID is unknown to the MSE or the MSE is not able to handle the ConversationID for other reasons, the MSE shall answer with a ‘Not Found’ error response (see Section 6.3.3). In that case, the MSE shall dismiss all changes from the request.
5.12. GetOwnerStatus Function
This function allows an MCE to request the Presence, Chat State, or Last Activity of the owner on the MSE.
The MCE shall not send a request for this function if the ‘Owner status’ bit in the MapSupportedFeatures of the MSE is not set.
The request is formatted as shown in Table 5.25:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - ConversationID |
Varies 0x01 0x01 “x-bt/ownerStatus” Varies |
M C.1 C.2 M O |
- C.1:
-
The Single Response Mode header is Optional in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.26:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - PresenceAvailability - PresenceText - LastActivity - ChatState End of Body |
0x01 0x01 Varies Varies Varies Varies empty |
C.1 C.2 M M C.3 C.4 M |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
The LastActivity application parameters is Mandatory IF the request contained the ConversationID application parameters AND the MSE has knowledge about the LastActivity; otherwise Optional.
- C.4:
-
The ChatState application parameters is Mandatory IF the request contained the ConversationID application parameters; otherwise Optional.
5.12.1. Connection ID
See Section 5.1.1.
5.12.2. Type
The type header shall be used to indicate the type of the content to be requested. In this function, its content shall be: <x-bt/ownerStatus> for the participant information including the owner’s instant messaging presence.
5.12.3. Application Parameters
For more details, see Section 6.3.1.
5.12.3.1. ConversationID
This header may be used to request the owner status for a specific conversation. If this header is not present in the request, the chat state shall be regarded as a conversation that independent of the chat state of the owner. Please refer to Section 3.1.16 for the format of the Conversation ID.
If the ConversationID is unknown to the MSE or the MSE is not able to handle the ConversationID for other reasons, the MSE shall answer with a ‘Not Found’ error response (see Section 6.3.3). In that case, the response shall not contain any headers.
5.12.3.2. PresenceAvailability
This header shall contain the presence availability of the owner. The value shall be one of the values defined in Section 3.1.11.
5.12.3.3. PresenceText
This header shall contain the presence text of the owner. The value shall be a string that complies with the definition in Section 3.1.11. If there is no user-defined status or it is unknown, the value shall be empty.
5.12.3.4. LastActivity
This header shall contain the datetime of the owner’s last activity. The value shall comply with the definition in Section 3.1.10.
5.12.3.5. ChatState
This header shall contain the chat state of the owner. The value shall be one of the values defined in Section 3.1.12.
5.13. GetConversationListing function
If supported, the MCE shall use this function to retrieve Conversation-Listing objects (see Section 3.1.9) from the MSE. The MCE shall not send a request for this function if the ‘Conversation listing’ bit in the MapSupportedFeatures of the MSE is not set.
The Conversation-Listing object in the response shall contain all conversations according to the filter options independent of the current selected folder.
The request is formatted as shown in Table 5.27:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
GET (0x03 OR 0x83) Varies |
M M |
Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - MaxListCount - ListStartOffset - FilterLastActivityBegin - FilterLastActivityEnd - FilterReadStatus - FilterRecipient - ConversationID - ConvParameterMask |
Varies 0x01 0x01 “x-bt/MAP-convo-listing” Varies Varies Varies Varies Varies Varies Varies Varies |
M C.1 C.2 M O O O O O O O O |
- C.1:
-
The Single Response Mode header is Mandatory in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.28:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header Header Header |
Single Response Mode Single Response Mode Param Application Parameters - ConversationListingVersionCounter - ListingSize - DatabaseIdentifier - MSETime End of Body |
0x01 0x01 Varies Varies Varies Varies Conversation-Listing object |
C.1 C.2 C.5 C.3 M C.4 C.3 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
- C.3:
-
Mandatory IF the response code is success (0x90 OR 0xA0); otherwise Excluded.
- C.4:
-
Mandatory IF the response code is success (0x90 OR 0xA0) AND the “UTC Offset Timestamp Format” is not supported by either the MSE or MCE; otherwise Excluded.
- C.5:
-
Mandatory IF:
-
the response code is success (0x90 OR 0xA0), AND
-
the “ConversationListingVersionCounter” is supported by the MSE and MCE, AND
-
MaxListCount=0 in the request;
otherwise Excluded.
-
5.13.1. Connection ID
See Section 5.1.1.
5.13.2. Type
The type header shall be used to indicate the type of object to be retrieved:
<x-bt/MAP-convo-listing> for Conversation-Listing object
5.13.3. Application Parameters
For more details, see Section 6.3.1.
5.13.3.1. MaxListCount
This header may be used to indicate the maximum number of conversations listed in the conversation-Listing object. The number of conversations in the list shall not exceed the limit specified by this parameter. The ConversationListing object shall contain MaxListCount entries if enough entries exist, starting from ListStartOffset. For example, a request with 'ListStartOffset'=0 and 'MaxListCount'=100 delivers the 100 most recent conversations in chronological descending order.
If 'MaxListCount'=0 in the request, the MSE shall respond with the headers “ConversationListingVersionCounter”, "ListingSize", “DatabaseIdentifier”, and, if the feature “UTC Offset Timestamp Format” is not supported, “MSETime” only (see description of these headers below) and shall not deliver a Conversation-Listing object.
5.13.3.2. ListStartOffset
This header may be used to indicate the offset of the first entry of the returned Conversation-Listing object. For example, if ListStartOffset is 5, then the first five conversations are not delivered. The offset shall be 0 if this header is not specified.
5.13.3.3. FilterLastActivityBegin and FilterLastActivityEnd
These application parameters may be used to filter the conversations that are returned in the Conversation-Listing object by LastActivity.
The two parameters shall comply with the definition in Section 3.1.10. If "FilterLastActivityBegin" is not specified, the returned Conversation-Listing shall include the conversations older than "FilterLastActivityEnd". If "FilterLastActivityEnd" is not specified, the returned Conversation-Listing shall include the messages from "FilterLastActivityBegin" to current time.
If both parameters are not specified, no conversations shall be filtered out by these parameters.
If the value of “FilterLastActivityBegin” is larger than the value of “FilterLastActivityEnd”, no conversations shall be delivered.
5.13.3.4. FilterReadStatus
This application parameter may be used to filter the conversations that are returned in the Conversation-Listing object by readstatus. The parameter shall have one of the values defined in the Application Parameters in Section 6.3.1.
5.13.3.5. FilterRecipient
This application parameter may be used to filter the conversations that are returned in the Conversation-Listing object by conversation-recipient. A related conversation shall be included in the listing if the delivered FilterRecipient string matches a sub-string of participant element attributes, id, or name of at least one <participant> contained by this conversation. The text string in this application parameter shall be coded in UTF-8.
The matching routine is implementation specific but it shall be flexible in regards to interpreting the text string.
5.13.3.6. ConversationListingVersionCounter
The MSE shall return the ConversationListingVersionCounter application parameters in successful responses, if and only if the ‘Conversation Version Counters’ MSE and MCE feature bits are both set and MaxListCount=0 is in the request.
The application parameter is used to detect if something has changed in the Conversation-Listing. Please refer to Section 3.1.15 for additional information.
5.13.3.7. ListingSize
If the request has been successful, this application parameter shall be used in the response to report the number of conversations in the Conversation-Listing and (if present) the filter parameters as described above. If MaxListCount = 0, the MSE shall ignore the request-parameters "ListStartOffset". In this case, the response shall not contain the Body header with the <x-bt/MAP-convo-listing> object.
5.13.3.8. DatabaseIdentifier
See Section 3.1.14.
5.13.3.9. ConversationID
This application parameter may be used to filter the messages that are returned in the Conversation-Listing object by a conversation ID.
If this application parameter holds a value, the Conversation-Listing object in the response shall contain only the conversation with this specific conversation ID.
5.13.3.10. ConvParameterMask
This application parameter may be used to indicate the parameters contained in the requested Conversation-Listing objects. The MCE can use this header to receive only the relevant content of the requested Conversation-Listing objects.
If this application parameter is not specified or carries the value 0, the MSE shall return all parameters of the Conversation-Listing object DTD (see Section 3.1.9) labeled as “REQUIRED” and may return all other attributes. The conversation id shall always be present.
Bit |
Parameter |
---|---|
0 |
Conversation name |
1 |
Conversation last_activity |
2 |
Conversation read_status |
3 |
Conversation version_counter |
4 |
Conversation summary |
5 |
Participants |
6 |
Participant uci |
7 |
Participant display_name |
8 |
Participant chat_state |
9 |
Participant last_activity |
10 |
Participant x_bt_uid |
11 |
Participant name |
12 |
Participant presence_availability |
13 |
Participant presence_text |
14 |
Participant priority |
15–31 |
Reserved for Future Use |
Bit i=1 indicates that the parameter related to Bit i shall be present in the requested Conversation-Listing. The reserved bits shall be set to 0 by the MCE and discarded by the MSE.
If Bit 5 has the value 0, the Conversation-Listing in the response shall not contain any participant element and therefore the Bits 6–14 do not have any impact.
If Bit 5 has the value 1, then at least one of the Bits 6–14 shall also have the value 1.
If any of the Bits 6–14 has the value 1, Bit 5 shall have the value 1.
Annotation Filtering (attributes above): The filter operations related to the filter parameters listed above (Section 5.13.3.x) shall be used as AND filtering, so the conversations returned in the Conversation-Listing object have to fulfill all filter conditions defined in the request. |
5.13.3.11. MSETime
If the request has been successful and the “UTC Offset Timestamp Format” is not supported, this application parameter shall be used in the response to report the Local Time basis of the MSE and its UTC offset, so the MCE is supported in interpreting the timestamps of the conversation listing entries. The format shall be "YYYYMMDDTHHMMSS±hhmm" (e.g., for Central European Time (CET) during summer, the offset is UTC+1h so the delivered value is "YYYYMMDDTHHMMSS+0100", where "YYYYMMDDTHHMMSS" is the current CET timestamp of the MSE). If the MSE device is unaware of the current UTC time, the offset value shall not be delivered, so the delivered parameter is "YYYYMMDDTHHMMSS". For more details, see Section 6.3.1.
5.14. SetNotificationFilter Function
If the MCE supports the Messages Notification and Notification Filtering features, the MCE may use this function to specify which notifications to receive from the MSE. If this function is not used, then all events will be sent to the MCE when notification registration is On.
This function can be sent multiple times when the MCE and MSE have established a Message Access Service. The change shall take effect immediately as long as there is an active message notification service (MNS) connection between MCE and MSE. If notification service is OFF, the change shall take effect when it is turned back ON using the SetNotificationRegistration function (Section 5.2).
The request is formatted as shown in Table 5.30:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Opcode Packet Length |
PUT (0x02 OR 0x82) Varies |
M M |
Header Header Header Header Header Header |
Connection ID Single Response Mode Single Response Mode Param Type Application Parameters - NotificationFilterMask End of Body |
Varies 0x01 0x01 “x-bt/MAP-notification-filter” Varies Filler-byte 0x30 |
M C.1 C.2 M M M |
- C.1:
-
The Single Response Mode header is Optional in the first packet IF GOEP 2.0 or later is used; otherwise Excluded.
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
The response is formatted as shown in Table 5.31:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field |
Response Code Packet Length |
0x90 OR 0xA0 OR Error Code Varies |
M M |
Header Header |
Single Response Mode Single Response Mode Param |
0x01 0x01 |
C.1 C.2 |
- C.1:
-
The Single Response Mode header is Mandatory IF:
-
GOEP 2.0 or later is used, AND
-
an SRM header has been received in the previous GET request, AND
-
the response code is success (0x90 OR 0xA0);
otherwise Excluded.
-
- C.2:
-
The Single Response Mode Param header is Optional IF Single Response Mode is used; otherwise Excluded.
5.14.1. Connection ID
See Section 5.1.1.
5.14.2. Type
The type header shall be used to indicate the type of object to be transmitted:
<x-bt/MAP-notification-filter>
5.14.3. Application Parameters
For more details, see Section 6.3.1.
5.14.3.1. NotificationFilterMask
This header is used to indicate which notifications the MCE wants from the MSE when notifications are turned “on” or “off”.
Bit |
Event |
---|---|
Bit 0 |
NewMessage |
Bit 1 |
MessageDeleted |
Bit 2 |
MessageShift |
Bit 3 |
SendingSuccess |
Bit 4 |
SendingFailure |
Bit 5 |
DeliverySuccess |
Bit 6 |
DeliveryFailure |
Bit 7 |
MemoryFull |
Bit 8 |
MemoryAvailable |
Bit 9 |
ReadStatusChanged |
Bit 10 |
ConversationChanged |
Bit 11 |
ParticipantPresenceChanged |
Bit 12 |
ParticipantChatStateChanged |
Bit 13 |
MessageExtendedDataChanged |
Bit 14 |
MessageRemoved |
Bits 15–31 |
Reserved for Future Use |
Bit i=0 indicates that the MSE shall not send the notification related to bit i for the current MAS.
6. OBEX Services
6.1. OBEX Services Definition
This profile is based on GOEP [2] and makes use of the IrOBEX specification [7]. Within the scope of MAP, the following OBEX services are defined: the Message Access service (MAS) and the Message Notification Service (MNS).
The Message Access service is an OBEX service by which the MCE acts as an OBEX Client and connects to an MSE that acts as an OBEX Server.
The Message Notification service is an OBEX service by which the MSE acts as an OBEX Client and connects to the MCE that acts as an OBEX Server.
The MAP features are using the above defined OBEX services in the following way:
Feature |
OBEX Service |
---|---|
Message Notification |
Message Notification Service |
Message Browsing |
Message Access Service |
Message Uploading |
Message Access Service |
Message Delete |
Message Access Service |
Notification Registration |
Message Access Service |
See details in Section 6.5.
6.2. OBEX Operations Used
The following tables list the OBEX operations required by the Message Access Profile.
6.2.1. Message Access Service:
OBEX operations supported in a Message Access Service connection:
OBEX operation |
Ability to send ( Client ) |
Ability to respond ( Server ) |
---|---|---|
MCE |
MSE |
|
Connect |
M |
M |
Disconnect |
M |
M |
Put |
O |
M |
Get |
M |
M |
Abort |
M |
M |
SetPath |
M |
M |
All other OBEX operations are excluded from this specification and shall not be used.
6.2.2. Message Notification Service:
OBEX operations supported in the Message Notification Service connection:
OBEX operation |
Ability to send ( Client ) |
Ability to respond ( Server ) |
---|---|---|
MSE |
MCE |
|
Connect |
M |
M |
Disconnect |
M |
M |
Put |
M |
M |
Abort |
M |
M |
All other OBEX operations are excluded from this specification and shall not be used.
6.3. OBEX Headers
Table 6.4 lists the OBEX headers required by the Message Access Profile. Any other headers listed in GOEP should not be used in this profile.
OBEX Header |
MCE |
MSE |
---|---|---|
Name |
M |
M |
Type |
M |
M |
Body |
M |
M |
End of Body |
M |
M |
Target |
M |
M |
Who |
M |
M |
Connection ID |
M |
M |
Application Parameters |
M |
M |
Single Response Mode |
M |
M |
Single Response Mode Parameters Receive |
M |
M |
Single Response Mode Parameters Send |
O |
O |
Note that the profile does not exclude the headers that are not listed in Table 6.4. Some implementations may choose to support additional headers that enable added value services. Therefore, unknown or unsupported, headers shall always be skipped and ignored.
OBEX Target header UUID values used for the OBEX services MAS and MNS |
Target header UUID value |
---|---|
MAS |
bb582b40-420c-11db-b0de-0800200c9a66 |
MNS |
bb582b41-420c-11db-b0de-0800200c9a66 |
6.3.1. Application Parameters Header
The tag IDs used in the Application Parameters header are listed in Table 6.6.
Value |
Tag ID |
Length |
Possible Values |
||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
MaxListCount |
0x01 |
2 bytes |
0x0000 to 0xFFFF |
||||||||||||||||||||||||||||||||||||||||||||||
ListStartOffset |
0x02 |
2 byte |
0x0000 to 0xFFFF |
||||||||||||||||||||||||||||||||||||||||||||||
FilterMessageType |
0x03 |
1 byte |
Bit mask: 0b000XXXX1 = "SMS_GSM" 0b000XXX1X = "SMS_CDMA" 0b000XX1XX = "EMAIL" 0b000X1XXX = "MMS" 0b0001XXXX = “IM” All other values: Reserved for Future Use Where 0 = "no filtering, get this type" 1 = "filter out this type" |
||||||||||||||||||||||||||||||||||||||||||||||
FilterPeriodBegin |
0x04 |
variable |
String with Begin of filter period. See Section 5.5.4 |
||||||||||||||||||||||||||||||||||||||||||||||
EndFilterPeriodEnd |
0x05 |
variable |
String with End of filter period. See Section 5.5.4 |
||||||||||||||||||||||||||||||||||||||||||||||
FilterReadStatus |
0x06 |
1 byte |
Bit mask:
|
||||||||||||||||||||||||||||||||||||||||||||||
FilterRecipient |
0x07 |
variable |
Text (UTF-8) |
||||||||||||||||||||||||||||||||||||||||||||||
FilterOriginator |
0x08 |
variable |
Text (UTF-8), |
||||||||||||||||||||||||||||||||||||||||||||||
FilterPriority |
0x09 |
1 byte |
Bit mask:
|
||||||||||||||||||||||||||||||||||||||||||||||
Attachment |
0x0A |
1 byte |
0b1 = "ON" |
||||||||||||||||||||||||||||||||||||||||||||||
Transparent |
0x0B |
1 byte |
0b1 = "ON" |
||||||||||||||||||||||||||||||||||||||||||||||
Retry |
0x0C |
1 byte |
0b1 = "ON" |
||||||||||||||||||||||||||||||||||||||||||||||
NewMessage |
0x0D |
1 byte |
0b1 = "ON" |
||||||||||||||||||||||||||||||||||||||||||||||
NotificationStatus |
0x0E |
1 byte |
0b1 = "ON" |
||||||||||||||||||||||||||||||||||||||||||||||
MASInstanceID |
0x0F |
1 byte |
0 to 255 |
||||||||||||||||||||||||||||||||||||||||||||||
ParameterMask |
0x10 |
4 bytes |
Bit mask, |
||||||||||||||||||||||||||||||||||||||||||||||
FolderListingSize |
0x11 |
2 bytes |
0x0000 to 0xFFFF |
||||||||||||||||||||||||||||||||||||||||||||||
ListingSize |
0x12 |
2 bytes |
0x0000 to 0xFFFF |
||||||||||||||||||||||||||||||||||||||||||||||
SubjectLength |
0x13 |
1 byte |
1 to 255 |
||||||||||||||||||||||||||||||||||||||||||||||
Charset |
0x14 |
1 byte |
0 = "native" |
||||||||||||||||||||||||||||||||||||||||||||||
FractionRequest |
0x15 |
1 byte |
0 = "first" |
||||||||||||||||||||||||||||||||||||||||||||||
FractionDeliver |
0x16 |
1 byte |
0 = "more" |
||||||||||||||||||||||||||||||||||||||||||||||
StatusIndicator |
0x17 |
1 byte |
0 = "readStatus" |
||||||||||||||||||||||||||||||||||||||||||||||
StatusValue |
0x18 |
1 byte |
1 = "yes" |
||||||||||||||||||||||||||||||||||||||||||||||
MSETime |
0x19 |
variable |
String with current time basis and UTC-offset of the MSE. See Section 5.5.4 |
||||||||||||||||||||||||||||||||||||||||||||||
DatabaseIdentifier |
0x1A |
variable (max 32 bytes) |
128-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
Conversation-ListingVersionCounter |
0x1B |
variable (max 32 bytes) |
128-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
PresenceAvailability |
0x1C |
1 byte |
0 to 255 |
||||||||||||||||||||||||||||||||||||||||||||||
PresenceText |
0x1D |
variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
LastActivity |
0x1E |
variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
FilterLastActivityBegin |
0x1F |
Variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
FilterLastActivityEnd |
0x20 |
Variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
ChatState |
0x21 |
1 byte |
0 to 255 |
||||||||||||||||||||||||||||||||||||||||||||||
ConversationID |
0x22 |
variable (max 32 bytes) |
128-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
FolderVersionCounter |
0x23 |
variable (max. 32 bytes) |
128-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
FilterMessageHandle |
0x24 |
variable |
64-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
NotificationFilterMask |
0x25 |
4 bytes |
Bit mask |
||||||||||||||||||||||||||||||||||||||||||||||
ConvParameterMask |
0x26 |
4 bytes |
Bit mask |
||||||||||||||||||||||||||||||||||||||||||||||
OwnerUCI |
0x27 |
variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
ExtendedData |
0x28 |
variable |
Text UTF-8 |
||||||||||||||||||||||||||||||||||||||||||||||
MapSupportedFeatures |
0x29 |
4 bytes |
Bit 0 = Notification Registration Feature Bit 1 = Notification Feature Bit 2 = Browsing Feature Bit 3 = Uploading Feature Bit 4 = Delete Feature Bit 5 = Instance Information Feature Bit 6 = Extended Event Report 1.1 Bit 7 = Event Report Version 1.2 Bit 8 = Message Format Version 1.1 Bit 9 = Messages-Listing Format Version 1.1 Bit 10 = Persistent Message Handles Bit 11 = Database Identifier Bit 12 = Folder Version Counter Bit 13 = Conversation Version Counters Bit 14 = Participant Presence Change Notification Bit 15 = Participant Chat State Change Notification Bit 16 = PBAP Contact Cross Reference Bit 17 = Notification Filtering Bit 18 = UTC Offset Timestamp Format Bit 19 = Reserved Bit 20 = Conversation listing Bit 21 = Owner status Bits 22 to 31 = Reserved for Future Use0F[1] |
||||||||||||||||||||||||||||||||||||||||||||||
MessageHandle |
0x2A |
variable |
64-bit value in hex string format |
||||||||||||||||||||||||||||||||||||||||||||||
ModifyText |
0x2B |
1byte |
0 = “REPLACE” |
||||||||||||||||||||||||||||||||||||||||||||||
[1] Reserved bits shall be set to 0 and ignored on reception. |
All of the Application Parameter header values use big-endian byte ordering.
6.3.2. OBEX Headers in Multi-Packet Responses
In the case of multi-packet responses, there is a need to specify which packet contains the headers to be returned to the MCE or to the MSE. Although the IrOBEX specification does not impose any restrictions in this area, the following rules shall be used in the Message Access Profile to encourage interoperability:
-
In the case of a multi-packet PUT response (i.e., the object being transported is large enough to require several packets), the headers, except SRM and SRMP, shall be placed in the last packet or respectively in the last packets if one packet is not sufficient for the headers. All intermediate response packets shall contain only the Continue response code or (when necessary) one of the error codes. Note that if the OBEX Partial Content response code is used, it shall be issued in the last response packet after the object has been completely received.
-
In the case of multi-packet Get response (i.e., the object being transported is large enough to require several packets), all the headers other than the body header shall be placed in the first packet. If the first packet has enough room to include a portion of the object body, then the first packet shall end with the body header that carries this portion of object; otherwise, the object shall be transferred in subsequent packets.
6.3.3. OBEX Error Codes
Message Access Service
Table 6.7 summarizes the error codes for the Message Access Service to be provided by the MSE and recognized by the MCE:
Error Code |
OBEX Client (MCE) (interprets the Error Codes) |
OBEX Server (MSE) (informs of Errors) |
Meaning in the Message Access Profile |
---|---|---|---|
Bad Request |
M* |
M |
Function not recognized or ill-formatted |
Not implemented |
M* |
M |
Function recognized but not supported |
Unauthorized |
M* |
O |
Exists in operations with actual exchange of an object in the body header (either in the request or the response) and indicates that the function was recognized and well formatted, but that the object to be handled was protected and access was not authorized (either temporarily or permanently). |
Precondition Failed |
M* |
M |
The function was recognized and well-formatted but there was a problem with one of the request's parameter values. |
Not Found |
M* |
M |
The function was recognized and well-formatted and all the parameters are proper, but the bMessage handle or the message folder could not be found. |
Not Acceptable |
M* |
O |
The request was recognized and well formatted and all the parameter values are permitted, but a problem with a parameter value indicated a request that could not be met by the Server. |
Service Unavailable |
M* |
M |
The function was recognized and well formatted and was normally executable, but a system condition prevented it from being performed. It could be that the message folders could not be accessed when the MSE was involved in a call. Another example would be when the MCE sent a message to the Outbox of the MSE, but the cellular service was not available. |
Forbidden |
M* |
O |
Function was recognized and correctly formatted but was temporarily barred. |
- *
-
Indicates that the Client shall recognize this response code as an error code.
On the MCE side, the entire response code listed above must be recognized as error codes; how to handle these error codes is left to the implementer's discretion.
Message Notification Service
Table 6.8 summarizes the error codes for the Message Notification Service to be provided by the MSE and recognized by the MCE:
Error Code |
OBEX Client (MSE) (interprets the Error Codes) |
OBEX Server (MCE) (informs of Errors) |
Meaning in the Message Notification Service |
---|---|---|---|
Bad Request |
M* |
M |
Function not recognized or ill-formatted. |
Not implemented |
M* |
M |
Function recognized but not supported. |
Unauthorized |
M* |
O |
Exists in operations with actual exchange of an object in the body header (either in the request or the response) and indicates that the function was recognized and well formatted, but that the object to be handled is protected and access was not authorized (either temporarily or permanently). |
Precondition Failed |
M* |
M |
The function was recognized and well-formatted but there was a problem with one of the request's parameter values. |
Not Acceptable |
M* |
O |
The request was recognized and well formatted and all the parameter values are permitted, but a problem with a parameter value indicated a request that could not be met by the Server. |
Service Unavailable |
M* |
O |
The function was recognized and well formatted and is normally executable, but a system condition prevented it from being performed. It could be that the event report could not be delivered due to resource problems of the MCE. |
Forbidden |
M* |
O |
Function was recognized and correctly formatted but was temporarily barred. |
- *
-
Indicates that the Client shall recognize this response code as an error code.
On the MSE side, the entire response code listed above shall be recognized as error codes; how to handle these error codes is left to the implementer's discretion.
Support for response codes (indicated in Table 6.7 and Table 6.8 as optional) is recommended because they provide the MCE with a better indication of the nature of an error, which permits better error reporting. The "x complements y" relationship between response codes is illustrated in Figure 6.1:
![]() |
When multi-packet responses are used, response codes must be returned as early as possible, preferably in the first response packet. In some cases (e.g., Service Unavailable), it is possible that an error condition may not arise until the operation is underway, in which case it is acceptable to return a response code in a packet other than the first one.
6.4. Initializing a MAP session
OBEX connections in MAP shall always be initiated by the MCE device. However, the connection initialization sequence to be used depends on the features that are to be used during the course of the MAP session:
The initialization sequence that applies to applications that use only the MSE's Message Access Service is described in Section 6.4.2.
For applications that use both the Message Access Service of the MSE and the Message Notification Service of the MCE, the initialization sequence that applies is described in Section 6.4.3.
For applications that use only the Message Notification Service of the MCE, the initialization sequence is that described in Section 6.4.4.
6.4.1. Message Access Service OBEX Connection
See Section 5.4 in the Bluetooth Generic Object Exchange Profile specification for a description of OBEX connection establishment without authentication.
The OBEX connect request for a MAS is formatted as shown in Table 6.9:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field Field Field Field |
Opcode Packet Length OBEX Version Number Flags Maximum Packet Length |
0x80 Varies Varies 0x00 Varies |
M M M M M |
Header Header |
Target Application Parameters MapSupportedFeatures |
bb582b40-420c-11db-b0de-0800200c9a66 Varies |
M M C.1 |
- C.1:
-
Mandatory IF the MSE advertises Bit 19 (MapSupportedFeatures in connect request) in its MapSupportedFeatures attribute in its SDP record, otherwise Excluded. Backwards compatibility: If the MapSupportedFeatures parameter is not present, then the MSE should check the MCE’s SDP record for this information before connecting the notification channel.
The OBEX connect response is formatted as shown in Table 6.10:
Field/Header |
Name |
Value |
Status |
---|---|---|---|
Field Field Field Field Field |
Response Code Packet Length OBEX Version Number Flags Maximum Packet Length |
0xA0 OR Error Code Varies Varies 0x00 Varies |
M M M M M |
Header Header |
Who Connection ID |
bb582b40-420c-11db-b0de-0800200c9a66 |
M M |
6.4.2. Initialization sequence for a MAP session that uses only the Message Access Service
![]() |
The establishment of a Message Access Service connection is done in accordance with [2] with the MCE as Client and the MSE as Server.
For the UUID value to be used for the Target header, see Section 6.3.
6.4.3. Initialization sequence for a MAP session that uses both the Message Access service and the Message Notification Service
![]() |
The establishment of a Message Notification Service connection is done in accordance with [7] with the MCE as OBEX Server and the MSE as OBEX Client. For the UUID values to be used for the Target header, see Section 6.3. The establishment of a Message Notification connection requires the previous establishment of a Message Access Service connection as described in Section 6.4.2.
The MCE device may establish one MAS connection for each MAS Instance provided by the MSE device, while the MSE shall establish only one MNS connection (see also Section 4.5). The MNS connection shall be established by the first SetNotificationRegistration set to ON during a MAP session. Respectively, when the MNS connection is established, all following SetNotificationRegistration set to ON by any MAS-Instance will cause no further MNS connection.
6.4.4. Initialization sequence for a MAP session that uses only the Message Notification service
![]() |
The establishment of a Message Notification connection is done in accordance with [7] with the MCE as OBEX Server and the MSE as OBEX Client.
The Message Access connection shall be active before the establishment of the Message Notification connection, but only the MAS Notification-Registration feature is required for this use case. If the Message Access connection is disconnected after Message Notification connection establishment, this will automatically indicate a MAS Notification-Deregistration for this MAS instance. For the UUID values to be used for the Target header, see Section 6.3.
The establishment of a Message Notification connection requires the previous establishment of a Message Access Service connection as described in Section 6.4.2 to allow the MCE to register for a notification (see SetNotificationRegistration function, Section 5.2).
6.4.5. Terminating a Message Access or Message Notification service connection
The termination of a Message Access or a Message Notification service connection is done in accordance with [2].
![]() |
The termination of multiple MAS connections (MCE connected to several MAS instances) and an ongoing Message Notification service is described in Figure 6.6. The MSE shall terminate the MNS service if the MCE has de-registered the MNS for all MAS-instances OR has terminated the MAS connections for all MAS-instances.
![]() |
6.4.6. Authentication
OBEX authentication shall not be used within MAP to avoid redundancy with the authentication on link level (see also Section 2.5).
6.5. Reliable Sessions
OBEX Reliable Sessions shall not be used within this profile.
7. Service Discovery
7.1. SDP Interoperability Requirements
The following service records are defined for the Message Access Profile. There shall be one service record per MCE device (Message Notification Service, server role), and on the MSE device, there shall be one for each MAS instance (Message Access Service, server role, see also Section 3.1.7.2). Up to 12 MAS Instances may be supported by an MSE device.
If an MCE requires connection to several MAS Instances, it has to establish separate MAS connections to each of these MAS Instances where it shall use dedicated OBEX channels for the particular MAS connections. The MCE can differentiate the particular MAS Instances by its SDP Service record attributes ServiceName and MASInstanceID. Both values shall be unique for all SDP records of an MSE device. The value range of the MASInstanceID shall be 0–255 (see Section 7.1.1).
7.1.1. SDP Record for the Message Access Service on the MSE Device
For MAP SDP UUID values, please refer to the Bluetooth Assigned Numbers section of the Bluetooth SIG website [3].
Item |
Definition |
Type |
Value |
AttrID |
Status |
Default |
|||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ServiceClassID List |
See [3] |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
ServiceClass #0 |
UUID |
Message Access Server |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Protocol Descriptor List |
See [3] |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
Protocol #0 |
UUID |
L2CAP |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Protocol #1 |
UUID |
RFCOMM |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Param #0 |
Channel number |
uint8 |
N= Channel number |
M |
|||||||||||||||||||||||||||||||||||||||||||||
Protocol #2 |
UUID |
OBEX |
M |
||||||||||||||||||||||||||||||||||||||||||||||
ServiceName |
Displayable text name |
String |
Service-provider defined |
See [3] |
M |
"MAP MAS-name" |
|||||||||||||||||||||||||||||||||||||||||||
Bluetooth Profile Descriptor List |
See [3] |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
Profile #0 |
Supported Profiles |
UUID |
Message Access Profile |
M |
|||||||||||||||||||||||||||||||||||||||||||||
Param #0 |
Profile Version |
uint16 |
v1.4 |
M |
0x0104 |
||||||||||||||||||||||||||||||||||||||||||||
GoepL2CapPsm |
L2CAP PSM |
uint16 |
Varies |
See [3] |
M |
||||||||||||||||||||||||||||||||||||||||||||
MASInstanceID |
uint8 |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
SupportedMessageTypes |
uint8 |
Bit 0 = EMAIL Bit 1 = SMS_GSM Bit 2 = SMS_CDMA Bit 3 = MMS Bit 4 = IM Bit 5–7 = Reserved for Future Use |
M |
||||||||||||||||||||||||||||||||||||||||||||||
MapSupportedFeatures[1] |
uint32 |
Bit 0 = Notification Registration Feature Bit 1 = Notification Feature Bit 2 = Browsing Feature Bit 3 = Uploading Feature Bit 4 = Delete Feature Bit 5 = Instance Information Feature Bit 6 = Extended Event Report 1.1 Bit 7 = Event Report Version 1.2 Bit 8 = Message Format Version 1.1 Bit 9 = Messages-Listing Format Version 1.1 Bit 10 = Persistent Message Handles Bit 11 = Database Identifier Bit 12 = Folder Version Counter Bit 13 = Conversation Version Counters Bit 14 = Participant Presence Change Notification Bit 15 = Participant Chat State Change Notification Bit 16 = PBAP Contact Cross Reference Bit 17 = Notification Filtering Bit 18 = UTC Offset Timestamp Format Bit 19 = MapSupportedFeatures in Connect Request Bit 20 = Conversation listing Bit 21 = Owner Status Bit 22 = Message Forwarding Bit 23–31 = Reserved for Future Use[2] |
See [2] |
M |
|||||||||||||||||||||||||||||||||||||||||||||
[1] Backwards compatibility: If the MapSupportedFeatures attribute is not present, 0x0000001F shall be assumed for a remote MSE. |
The MAS SDP record shall still be retrievable when a MAP session is ongoing.
7.1.2. SDP record for the Message Notification service on the MCE device
Item |
Definition |
Type |
Value |
AttrID |
Status |
Default |
|||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ServiceClassID List |
See [2] |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
ServiceClass #0 |
UUID |
Message Notification Server |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Protocol Descriptor List |
See [2] |
M |
|||||||||||||||||||||||||||||||||||||||||||||||
Protocol #0 |
UUID |
L2CAP |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Protocol #1 |
UUID |
RFCOMM |
M |
||||||||||||||||||||||||||||||||||||||||||||||
Param #0 |
Channel number |
uint8 |
N= Channel number |
M |
|||||||||||||||||||||||||||||||||||||||||||||
Protocol #2 |
UUID |
OBEX |
M |
||||||||||||||||||||||||||||||||||||||||||||||
ServiceName |
Displayable text name |
String |
Service-provider defined |
See [2] |
M |
"MAP MNS-name" |
|||||||||||||||||||||||||||||||||||||||||||
Bluetooth Profile Descriptor List |
M |
||||||||||||||||||||||||||||||||||||||||||||||||
Profile #0 |
Supported profiles |
UUID |
Message Access Profile |
See [2] |
M |
||||||||||||||||||||||||||||||||||||||||||||
Param #0 |
Profile version |
uint16 |
v1.4 |
M |
0x0104 |
||||||||||||||||||||||||||||||||||||||||||||
GoepL2CapPsm |
L2CAP PSM |
uint16 |
Varies |
See [2] |
M |
||||||||||||||||||||||||||||||||||||||||||||
MapSupportedFeatures[1] |
uint32 |
Bit 0 = Notification Registration Feature Bit 1 = Notification Feature Bit 2 = Browsing Feature Bit 3 = Uploading Feature Bit 4 = Delete Feature Bit 5 = Instance Information Feature Bit 6 = Extended Event Report 1.1 Bit 7 = Event Report Version 1.2 Bit 8 = Message Format Version 1.1 Bit 9 = Messages-Listing Format Version 1.1 Bit 10 = Persistent Message Handles Bit 11 = Database Identifier Bit 12 = Folder Version Counter Bit 13 = Conversation Version Counters Bit 14 = Participant Presence Change Notification Bit 15 = Participant Chat State Change Notification Bit 16 = PBAP Contact Cross Reference Bit 17 = Notification Filtering Bit 18 = UTC Offset Timestamp Format Bit 19 = Reserved Bit 20 = Conversation listing Bit 21 = Owner status Bit 22 = Message Forwarding Bit 23–31 = Reserved for Future Use[2] |
See [2] |
M |
|||||||||||||||||||||||||||||||||||||||||||||
[1] Backwards compatibility: If the MapSupportedFeatures attribute is not present, 0x0000001F shall be assumed for a remote MCE. [2] Based on the features from the associated bit shall be set to 1 if supported; 0 if not. Reserved bits shall be set to 0 and ignored by the MSE as future versions might use them. |
If MNS is supported, the MNS SDP record shall still be retrievable when a MAP session is ongoing.
For MAP SDP UUID values, please refer to the Bluetooth Assigned Numbers section of the Bluetooth website [3].
7.2. Link Manager (LM) Interoperability Requirements
For the Link Manager layer, there are no additions to the requirements as stated in Volume 2, Part C in the Core Specification [1].
7.3. Link Control (LC) Interoperability Requirements
The specification allows both MCE and MSE to support Inquiry and Inquiry scan. It is mandatory for the MSE to support Inquiry and the MCE to support Inquiry scan. It is optional for the MSE to support Inquiry Scan and for the MCE to support Inquiry, though this support is strongly recommended.
Capability |
Support in MSE |
Support in MCE |
---|---|---|
Inquiry |
M |
O |
Inquiry scan |
O |
M |
7.3.1. Class of Device/Service Field
There is no obvious correlation between the Class of Device/Service Field and the support for the Message Access Profile. Many types of devices might implement the Message Access Profile.
8. Generic Access Profile
This profile requires compliance with the Generic Access Profile (GAP).
This section defines the support requirements for the capabilities as defined in the "Generic Access Profile" (see Volume 3, Part C in [1]). All “Mandatory,” “Optional,” “Excluded,” and “Conditional” properties are inherited from GAP. This section lists only those properties that differ from the requirements in GAP.
8.1. Modes
Table 8.1 shows the differences in the support status for GAP Modes in this profile.
Procedure |
Support in MCE |
Support in MSE |
|
---|---|---|---|
1 |
Discoverability modes General discoverable mode |
M |
M |
2 |
Pairing modes Pairable mode |
M |
M |
8.2. Security Aspects
There is no change to the requirements as stated in the General Access Profile (see Volume 3, Part C in [1]).
8.3. Idle Mode Procedures
Table 8.2 shows the differences in the support status for the GAP Idle Mode procedures within this profile:
Procedure |
Support in MCE |
Support in MSE |
|
---|---|---|---|
1 |
General inquiry |
O |
M |
2 |
Limited inquiry |
O |
O |
9. GOEP Interoperability Requirements
This section defines the requirements to interoperate with different versions of GOEP.
The MCE-MAS and MSE-MNS clients shall implement GOEP v2.0 or later and follow the GOEP SDP Interoperability Requirements to determine the version of GOEP on the MSE-MAS and MCE-MNS servers.
Table 9.1 shows which GOEP version is used between devices implementing different transports of this profile:
MSE |
|||
---|---|---|---|
MCE |
SDP ‘L2CAP PSM’ and ‘RFCOMM Channel number’ are advertised |
Only SDP ‘RFCOMM Channel number’ is advertised |
|
SDP ‘L2CAP PSM’ and ‘RFCOMM Channel number’ are advertised |
GOEP v2.0 or later |
GOEP v1.1 |
|
Only SDP ‘RFCOMM Channel number’ is advertised |
GOEP v1.1 |
GOEP v1.1 |
When GOEP v2.0 or later is used, RFCOMM shall not be used to convey OBEX. When GOEP v1.1 is used, L2CAP shall not directly be used as a transport layer for OBEX, and features from IrOBEX later than v1.2 shall not be used.
10. List of Acronyms and Abbreviations
Abbreviation or Acronym |
Meaning |
---|---|
3GPP |
3rd Generation Partnership Project |
AMP |
Alternate MAC-PHY |
bMessage |
Bluetooth Message Format |
CDMA |
Code Division Multiple Access |
CID |
OBEX Connection Identifier |
EDR |
Enhanced Data Rate |
|
Electronic mail |
GAP |
Generic Access Profile |
GOEP |
Generic Object Exchange Profile |
GSM |
Global System for Mobile communication |
HFP |
Hands-Free Profile |
IO |
Input/Output |
IM |
Instant Messaging |
L2CAP |
Logical Link Control and Adaptation Protocol |
LM |
Link Manager |
LMP |
Link Manager Protocol |
LMP Link |
A Link Manager (LM) level link over which only Link Manager Protocol (LMP) commands are conveyed |
MAP |
Message Access Profile |
MAS |
Message Access Service |
MCE |
Message Client Equipment |
MIME |
Multipurpose Internet Mail Extension |
MMS |
Multimedia Message Service |
MNS |
Message Notification Service |
MSE |
Message Server Equipment |
MSISDN |
Mobile Subscriber Integrated Services Digital Network number (also appears as "Mobile Station International ISDN number”) |
OBEX |
Object Exchange |
PBAP |
Phonebook Access Profile |
PSM |
Protocol/Service Multiplexer |
RFCOMM |
Serial Port Transport Protocol Over L2CAP |
SDP |
Service Discovery Protocol |
SMS |
Short Message Service |
SRM |
Single Response Mode: OBEX enhancement to improve throughput of large objects. |
SRMP |
Single Response Mode Parameters |
TE |
Terminal Equipment |
UCI |
Unique Client/Caller Identifier |
UUID |
Universally Unique Identifier |
11. References
[1] Bluetooth Core Specification (amended) Version 4.2 or later
[2] Generic Object Exchange Profile Specification, Version 1.1 or later
[3] Bluetooth SIG Assigned Numbers, https://www.bluetooth.com/specifications/assigned-numbers
[4] vCard The Electronic Business Card, version 2.1, September 18th
[5] vCard Format Specification, IETF, Network Working Group, RFC 6350, August 2011, https://tools.ietf.org/html/rfc6350
[6] Multipurpose Internet Mail Extensions (MIME):
RFC 2045 Part 1: Format of Internet Message Bodies, https://tools.ietf.org/html/rfc2045
RFC 2046 Part 2: Media Types, https://tools.ietf.org/html/rfc2046
RFC 2047 Part 3: Message Header Extensions for Non-ASCII Text, https://tools.ietf.org/html/rfc2047
[7] IrDA Object Exchange Protocol OBEX™ with Published Errata, Version 1.5, August 2009, iAnywhere Solutions, Inc. and Microsoft Corporation
[8] Technical Specification 3rd Generation Partnership Project; Technical Specification Group Terminals; Technical realization of the Short Message Service (SMS), 3GPP TS 23.040 V8.20.0 (2008-06)
[9] Technical Specification 3rd Generation Partnership Project; Technical Specification Group Terminals; Technical realization of the Multimedia Messaging Service (MMS), 3GPP TS 23.140 V7.0.0 (2008-03)
[10] TIA/EIA-637-A, Short Message Service, 3GPP2 C.S0015-0
[11] Serial Port Profile Specification, Version 1.2 or later
[12] Administration of Parameter Value Assignments for cdma2000 Spread Spectrum Standards, Release A (TSB58-A), 3GPP2 C.R1001-A 2.0
[13] 3rd Generation Partnership Project, Technical Specification Group Core Network and Terminals; Alphabets and language-specific information (Release 8), 3GPP TS 23.038 V8.1.0 (2008-06)
[14] RFC 5322, Internet Message Format, https://tools.ietf.org/html/rfc5322
[15] Extensible Markup Language (XML) 1.0 (Fifth Edition) W3C Recommendation 26 November 2008, http://www.w3.org/TR/xml/
[16] Technical Specification 3rd Generation Partnership Project; Technical realization of the Short Message Service (SMS): 3GPP TS 04.11 version 7.1.0 (2000-09)
[17] International Reference Alphabet (IRA) (formerly International Alphabet No. 5 or IA5)—Information Technology 7-Bit Coded Character Set for Information Interchange, recommendation T.50,International Telegraph and Telephone Consultative Committee, September, 1992
[18] Phone Book Access Profile Specification, Version 1.1.1 or later
[19] ISO 8601, https://www.iso.org/iso-8601-date-and-time-format.html