This section describes the SMS protocol module of the SMS stack.
The SMS stack is created when the first request for a socket is received by the socket server. The socket server creates an instance of the CSmsProtocol system class, which co-ordinates the SMS stack activities. The SMS protocol does not publish any APIs for the client applications but internally it provides the methods to support the following functionality:
The clients use the multimode telephony APIs to initiate the use cases, but the SMS protocol checks the stores before the clients can use them. The SMS protocol contains the observers and disk monitors. Refer to the SMS Stack Observers and SMS Disk Monitor for more details. The messaging clients calls the RSocket::Ioctl()
to perform the uses cases mentioned in this section.
The SMS protocol send message provides the methods to send an SMS message to the network through the telephony system. The SMS protocol module splits the messages into one or more PDUs depending on the message data. The SMS stack processes the message. When the PDUs are created they are sent to the network. The SMS protocol module also enables the clients to resend a message if an earlier attempt to send fails. If the mobile is configured to receive delivery reports a SUBMIT REPORT is sent to the network to get the delivery report. The sent messages are logged in the log engine using a unique Log ID, if the Log engine is installed in the device. The messages are stored in the segmentation of the SMS stack before sending them to the network, which enables the clients to resend the messages in case of failures. The SMS stack only re-sends the message PDUs marker as 'unsent'.
The SMS protocol provides methods to receive incoming messages and status reports of the sent messages. The incoming messages are decoded and stored in the reassembly store for processing. When all the PDUs of a message are received the message is forwarded to the messaging client. The SMS protocol receives the status reports of the sent PDUs. The status report is compared to the original message in the segmentation store. When the status report of all the PDUs of a message is received, the SMS protocol notifies the messaging clients. The storage of PDUs in the SMS stack or the TSY depends on the receive mode configuration in the smswap.sms.esk file.
The SMS protocol provides methods for messaging clients to write messages in the phone stores. The module enables the clients to save the unread and draft messages in the phone stores. The messaging clients send a store name to store the messages, the SMS protocol searches for the requested store name and if the store supports 'WRITE' functionality the messages are stored.
The SMS message provides methods for messaging clients to delete messages from the phone stores. The SMS protocol supports the messaging clients to delete incomplete messages as well.
The SMS protocol provides methods for messaging clients to read the messages from the phone stores. The phone store can be a internal memory or the memory in Subscriber Identity Module (SIM). The SMS protocol checks the phone stores during the initialisation process of the SMS stack.
The SMS protocol enables the messaging clients to read and write the SMS parameters such as default coding schemes, service centre address and the validity periods in the messages stored in the phone stores.