This chapter describes the SMS Exchange Library API declared in the header file SmsLib.h
. It discusses the following topics:
You interact with the SMS Exchange Library using the Exchange Manager APIs described in Chapter 62, "Exchange Manager," of this book. For further information on using Exchange Manager, see "Object Exchange" of the of the Palm OS Programmer's Companion, vol. II, Communications.
SMS Exchange Library Data Structures
SmsParamsType Struct
Purpose
The SmsParamsType
structure identifies information specific to the SMS Exchange Library. The socketRef
field of the ExgSocketType
structure is set to this structure when you send or receive data using the SMS Exchange Library. You only need to create this structure and assign it to the socketRef
field if you have an SMS message to send and want to use non-default values for some of the fields; otherwise, the SMS Exchange Library creates this structure for you and provides default values.
Prototype
typedef struct SmsParamsTag { UInt32 creator; UInt16 smsID; Char *extension; Char *mimeTypes; UInt32 appCreator; UInt8 dataCodingScheme; UInt8 networkType; UInt8 dataType; UInt16 nbsDestPort; UInt16 nbsSrcPort; union { SmsSendParamsType send; SmsReceiveParamsType receive; SmsReportParamsType report; } data; } SmsParamsType, *SmsParamsPtr;
Fields
-
creator
- Creator ID of the SMS Exchange Library. Always set this to
sysFileCSmsLib
. -
smsID
- The ID of the message that was sent. Do not set this field directly; the SMS Exchange Library should set it.
-
extension
- If the SMS message has an attachment, this field specifies the attachment name. Do not set this field directly; the SMS Exchange Library sets it if necessary. See the description of the
appCreator
field for details. -
mimeTypes
- If the SMS message has an attachment, this field specifies the MIME type of the attachment. Do not set this field directly; the SMS Exchange Library sets it if necessary. See the description of the
appCreator
field for details. -
appCreator
- The creator ID of the target application for the attachment to the SMS message. Do not set this field directly; the SMS Exchange Library sets it if necessary.
- When the SMS Exchange Library receives a message with an attachment, it unwraps the message and attempts to deliver the attachment directly to an application that is registered to receive it. If no application is registered to receive unwrapped attachments of that type, the SMS Exchange Library sends the entire SMS message, and it sets the
extension
,mimeTypes
, andappCreator
fields in this structure. The SMS application can use this information to have the Exchange Manager deliver the attachment to the appropriate application using the Local Exchange Library. -
dataCodingScheme
- The data encoding scheme that the message uses. See SMS Data Coding Scheme Constants.
-
networkType
- Indicates the type of advanced parameters. See SMS Network Type Constants.
-
dataType
- Identifies the type of message being received, such as multipart or return receipt. See SMS Message Type Constants.
-
nbsDestPort
- The Narrow Band Socket (NBS) port on which you want the data sent. The SMS Exchange Library sets this for you if you leave it blank. When data is being received, this field is set to the NBS port on which the data was received.
-
nbsSrcPort
- The NBS port on which you want the data sent. You should set this field to the same value as
nbsDestPort
. If you leave it blank, the SMS Exchange Library provides a value for you. -
data
- The data being sent or received. See
SmsReceiveParamsType
,SmsReportParamsType
, andSMSSendParamsType
.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsPrefType Struct
Purpose
The SmsPrefType
structure defines the SMS Exchange Library preferences for sending and receiving SMS messages. Applications can use the ExgControl()
function to get, set, or display these preferences to the user.
Prototype
typedef struct SmsPrefTag { UInt32 validity; UInt16 warnOver; Boolean leave; Boolean report; Boolean autoSMSC; Char smscNumber[kSmsMaxPhoneSize]; } SmsPrefType, *SmsPrefPtr;
Fields
-
validity
- The number of seconds before the message expires. If the message cannot be delivered to the recipient, the service center repeatedly attempts to deliver the message until it expires. The default is one hour.
-
warnOver
- The number of parts a user can send without confirmation. If the user attempts to send a message with more than this number of parts, an alert is displayed, and the user can choose to send the message anyway. The default is 3 parts. (If the user attempts to send a message with more than 3 parts, an alert is displayed.)
-
leave
- If
true
, any incoming messages retrieved from a phone remain on the phone as well. Iffalse
, the messages are deleted from the phone's inbox. -
report
- If
true
, the user receives confirmation that an SMS message was delivered. -
autoSMSC
- If
true
, don't use the value stored in thesmscNumber
field. -
smscNumber
- The message center to be used. If
NULL
or the empty string, the SMS message center set by the phone is used.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsReceiveCDMAParamsType Struct
Purpose
The SmsReceiveParamsType
includes an SmsReceiveCDMAParamsType
structure for CDMA messages.
Prototype
typedef struct SmsReceiveCDMAParamsTag { UInt8 messageType; TelSmsDateTimeType validityPeriod; UInt8 priority; UInt8 privacy; Boolean alertOnDeliveryRequest; Boolean manualAckRequest; UInt8 voiceMessageNumber; UInt8 languageIndicator; Char *callbackNumberAddress; } SmsReceiveCDMAParamsType, *SmsReceiveCDMAParamsPtr;
Fields
-
messageType
- The type of the message. This is one of the SMS Message Type Constants constants defined in
TelephonyMgr.h
. -
validityPeriod
- The amount of time for which the message is valid. See
TelSmsDateTimeType
. The default is set according to the SMS preferences. -
priority
- The message priority. This must be one of the SMS Message Urgency Constants defined in
TelephonyMgr.h
. -
privacy
- The privacy type of the message. This must be one of the SMS Message Privacy Constants defined in
TelephonyMgr.h
. -
alertOnDeliveryRequest
-
true
if the user is to be alerted upon delivery of this message, andfalse
if not. -
manualAckRequest
-
true
if a confirmation is requested from the recipient, andfalse
if not. -
voiceMessageNumber
- The number of new messages in your voice mail.
-
languageIndicator
- Reserved for future use.
-
callbackNumberAddress
- The callback number to which confirmations are to be sent.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsReceiveGSMParamsType Struct
Purpose
The SmsReceiveParamsType
includes an SmsReceiveGSMParamsType
structure for GSM messages.
Prototype
typedef struct SmsReceiveGSMParamsTag { UInt16 protocolId; Char *serviceCenterNumber; Boolean replyPath; } SmsReceiveGSMParamsType, *SmsReceiveGSMParamsPtr;
Fields
-
protocolId
- Reserved for future use.
-
serviceCenterNumber
- The SMS service center that must be used to send a reply. If
NULL
, the service center specified in the preferences is used. -
replyPath
- If
true
, replies must be made through the SMS service center specified byserviceCenterNumber
.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsReceiveParamsType Struct
Purpose
The SmsReceiveParamsType
structure is used as the data
field for the SmsParamsType
structure when the SMS Exchange Library has received data. The SMS Exchange Library always supplies the values for these fields.
Prototype
typedef struct SmsReceiveParamsTag { UInt32 timeStamp; Char *originatingAddress; UInt8 leaveOnPhone:1; UInt8 forceSlotMode:1; UInt8 reserved:6; UInt16 index; Boolean otherToReceive; Boolean reportDeliveryIndicator; union { SmsReceiveGSMParamsType gsm; SmsReceiveCDMAParamsType cdma; SmsReceiveTDMAParamsType tdma; } protocol; } SmsReceiveParamsType, *SmsReceiveParamsPtr;
Fields
-
timeStamp
- The time at which the message was delivered, given as the number of seconds since January 1, 1904.
-
originatingAddress
- The number from which the message was received.
-
leaveOnPhone
- If
true
, messages received on the phone are not deleted from the phone's inbox. If not specified, this is set according to the system preferences. -
forceSlotMode
- If
true
, use slot mode parsing. Iffalse
, use block mode parsing. The default is block mode. -
reserved
- Reserved for future use.
-
index
- Location where the message is stored on the mobile phone.
-
otherToReceive
- If
true
, there are more messages to be received from the service center. -
reportDeliveryIndicator
- If
true
, the sender has requested confirmation. The recipient of the message does not send the confirmation; the SMS service center does. -
protocol
- Values specific to the protocol used to send the message. Currently, only GSM is supported.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsReceiveTDMAParamsType Typedef
Purpose
The SmsReceiveParamsType
includes an SmsReceiveTDMAParamsType
structure for TDMA messages. This structure is currently the same as the SmsReceiveCDMAParamsType
structure.
Prototype
typedef SmsReceiveCDMAParamsType SmsReceiveTDMAParamsType, *SmsReceiveTDMAParamsPtr;
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsReportParamsType Struct
Purpose
The SMSReportParamsType
structure is used as the data
field for the SmsParamsType
structure when the SMS Exchange Library has received a delivery confirmation. The SMS Exchange Library always sets the values for these fields.
Prototype
typedef struct SmsReportParamsTag { UInt32 timeStamp; UInt16 index; UInt8 reportType; UInt8 report; Char *originatingAddress; } SmsReportParamsType, *SmsReportParamsPtr;
Fields
-
timeStamp
- The date and time at which the message was delivered, given as the number of seconds since January 1, 1904.
-
index
- Location where the message is stored on the mobile phone.
-
reportType
- One of the Delivery Report Type constants defined in
TelephonyMgr.h
. -
report
- One of the Delivery Status Report constants defined in
TelephonyMgr.h
. -
originatingAddress
- Phone number to which the message was sent.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsSendCDMAParamsType Struct
Purpose
The SMSSendParamsType
includes an SmsSendCDMAParamsType
structure for CDMA messages.
Prototype
typedef struct SmsSendCDMAParamsTag { UInt8 messageType; TelSmsDateTimeType deferredDate; UInt8 priority; UInt8 privacy; UInt8 alertOnDelivery:1; UInt8 manualAckRequest:1; UInt8 reserved:6; Char *callbackNumber; } SmsSendCDMAParamsType, *SmsSendCDMAParamsPtr;
Fields
-
messageType
- The type of the message. This is one of the SMS Message Type Constants constants defined in
TelephonyMgr.h
. -
deferredDate
- Not used.
-
priority
- The message priority. This must be one of the SMS Message Urgency Constants.
-
privacy
- The privacy type of the message. This must be one of the SMS Message Privacy Constants.
-
alertOnDelivery
-
true
if the user is to be alerted upon delivery of this message, andfalse
if not. -
manualAckRequest
-
true
if a confirmation is requested from the recipient, andfalse
if not. -
reserved
- Reserved for future use.
-
callbackNumber
- Number to which the confirmation should be sent.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsSendGSMParamsType Struct
Purpose
The SMSSendParamsType
includes an SmsSendGSMParamsType
structure for GSM messages.
Prototype
typedef struct SmsSendGSMParamsTag { UInt16 protocolId; Char *serviceCenterNumber; Boolean rejectDuplicated; Boolean replyPath; } SmsSendGSMParamsType, *SmsSendGSMParamsPtr;
Fields
-
protocolId
- Reserved for future use.
-
serviceCenterNumber
- The message center to be used. If not specified, the service center is set according to the system preferences.
-
rejectDuplicated
- If
true
, the service center rejects messages that have the same message ID, destination address, and originating address as a previously submitted message. -
replyPath
- If
true
, the service center that delivers the message is requested to provide information about itself to the recipient so that replies are made through the same service center.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SMSSendParamsType Struct
Purpose
The SMSSendParamsType
structure is used as the data
field for the SmsParamsType
structure when the SMS Exchange Library is sending data.
Prototype
typedef struct SmsSendParamsTag { TelSmsDateTimeType validityPeriod; Char *destinationAddress; UInt8 networkDeliveryRequested:1; UInt8 ignoreDefaultValue:1; UInt8 reserved:6; UInt16 partCount; UInt16 lastPart; UInt8 converter; union { SmsSendGSMParamsType gsm; SmsSendCDMAParamsType cdma; SmsSendTDMAParamsType tdma; } protocol; } SmsSendParamsType, *SmsSendParamsPtr;
Fields
-
validityPeriod
- The amount of time for which the message is valid. See
TelSmsDateTimeType
. The default is set according to the SMS preferences. -
destinationAddress
- A buffer that contains the phone number of the message recipient. If no phone number is supplied, the user is prompted for the phone number.
-
networkDeliveryRequested
- If
true
, the SMS service center sends a delivery confirmation. The default is set according to the SMS preferences. The SMS Exchange Library disables this field for multipart messages. -
ignoreDefaultValue
- If
false
, the validity period, network delivery requested, and SMS center specified in the preferences are used regardless of the values supplied in this structure. Iftrue
, the values supplied in this structure are used. -
reserved
- Reserved for future use.
-
partCount
- The number of parts in the message. 0 means that the message is not a multipart message. If NBS is used to send the message, it determines the number of parts.
-
lastPart
- The last part of a multipart message that was successfully sent.
-
converter
- The header added to the data to specify how it is converted.
-
protocol
- Data specific to the protocol used to send the message. Currently, only GSM is supported.
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SmsSendTDMAParamsType Typedef
Purpose
The SMSSendParamsType
includes an SmsSendTDMAParamsType
structure for TDMA messages. This structure is currently the same as the SmsSendCDMAParamsType
structure.
Prototype
typedef SmsSendCDMAParamsType SmsSendTDMAParamsType, *SmsSendTDMAParamsPtr;
Compatibility
This structure is only defined if 4.0 New Feature Set is present.
SMS Exchange Library Constants
SMS Control Constants
The SMS control constants are passed as the operation parameter to the ExgControl()
function. The ExgControl
function is a way to communicate directly with the SMS Exchange Library. The following table lists the operation constant, the type of data that should be passed as the valueP
parameter to ExgControl()
, and what the SMS Exchange Library does in response.
Compatibility
These constants are only defined if 4.0 New Feature Set is present.
SMS Data Coding Scheme Constants
The SMS data coding scheme constants describe the coding scheme used for SMS data. These values are used as the dataCodingScheme
parameter of the SmsParamsType
structure.
Compatibility
These constants are only defined if 4.0 New Feature Set is present.
SMS Network Type Constants
The SMS network type constants identify the type of network being used for SMS messages. Currently, only the GSM network is supported.
Compatibility
These constants are only defined if 4.0 New Feature Set is present.
SMS Message Type Constants
The SMS message type constants identify the type of message being sent. They are used as the dataType
field of the SmsParamsType
structure.
Standard SMS message of no more than 160 bytes. This is the default. |
||
A confirmation, indicating that an SMS message was successfully sent. |
Compatibility
These constants are only defined if 4.0 New Feature Set is present.
SMS Converter Constants
The SMS converter constants identify the header information added to an SMS message.
Compatibility
These constants are only defined if 4.0 New Feature Set is present.