MB SMS Operations

This topic describes the operations to configure, read/receive, send, and delete messages using Short Message Service (SMS) capabilities of an MB device.

SMS support is mandatory. Miniport drivers must set the appropriate send and receive SMS capability flags that they support when processing OID_WWAN_DEVICE_CAPS query requests in the WwanSmsCaps member of the WWAN_DEVICE_CAPS structure. If miniport drivers do not support SMS, they should specify WWAN_SMS_CAPS_NONE and return WWAN_STATUS_SMS_UNKNOWN_ERROR for all SMS-related OIDs.

Miniport drivers should only process SMS operations after OID_WWAN_READY_INFO returns WwanReadyStateInitialize as the device ready-state. Miniport drivers should process some SMS operations, such as sending a SMS message, only after the device is registered on a provider network (though not necessarily data service registration).

The MB Service does not differentiate between different message stores available in the device. Therefore, miniport drivers must handle all message stores and project a single virtual message store accessed by means of a virtual index. For example, if the device has three message stores, the miniport driver must handle all of them collectively and present them as a single message store to the service.

The MB driver model supports the following SMS Operations:

  • SMS configuration

  • Read SMS

  • Send SMS

  • Delete SMS

We recommend miniport drivers support SMS configuration, read, send, and delete operations, as well as notifying the user of any new SMS message received by a device.

For more information about SMS operations, see OID_WWAN_SMS_CONFIGURATION, OID_WWAN_SMS_READ, OID_WWAN_SMS_SEND, OID_WWAN_SMS_DELETE, and OID_WWAN_SMS_STATUS.

Relevant Services and Drivers

SmsRouterSvc.dll - The service that interacts with WwanSvc to handle sending and receiving images

MbSmsApi.dll - Implementation of WinRT SMS API

UT_SmsRouter.dll - Is onboarded to Real Device Testing

SMS Architecture/Flows

SMS Block Diagram

Diagram that shows SMS architecture flow.

SMS App Registration

Diagram that shows SMS app registration process.

Send SMS

Diagram that shows the SMS send message process.

API Receive Message

Diagram that shows the API receive message process.

App Lifecycle

Diagram that shows the SMS app lifecycle.

Service Lifecycle

Diagram that shows the service lifecycle.

Testing

Automated SMS Tests

The following tests are automated and onboarded to the RI-TP. They are run daily and should pass 100%.

  • MobilebroadbandExperience\SmsApi

  • MobilebroadbandExperience\SMSCDMA

  • MobilebroadbandExperience\SMSDecodingTests

  • MobilebroadbandExperience\SMSEncodingTests

  • WWAN\SMS\Service\UnitTests

SmsApi Tests have different versions that run on desktop and onecoreuap. Desktop still uses vnelib.dll (C++ version) because the CDMA part of SMS is not ported to vnelibrary.dll (C# version). Therefore you will find two versions of functional test lists.

Hardware Lab Kit (HLK) Tests

These are all the currently available HLK tests related to MB-SMS:

Running Tests

Via netsh, you can run the test lists and HLK tests. For more information on using the netsh tool see netsh mbn and netsh mbn test installation.

netsh mbn test feature=sms testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"

Logs can be collected and decoded using these instructions: MB Collecting Logs.

Special Messages

Operator Messages

Operators can provision devices to handle particular messages earlier. This is no longer available, but the feature has not been completely removed yet. The code ProvisioningEngine processes the Operator Notifications. For more information see Operator Notifications and Operator Events.

Broadcast Messages

For more information on emergency alerts through SMS see SmsBroadcastMessage and SmsBroadcastType.

UWP Capabilities for SMS

Legacy SMS API

There are two legacy SMS APIs, sms and smsSend.

Latest SMS API

  • cellularMessaging

For more information see UWP SMS.