As I have been writing about EMS and WAP Push, I am sure your ask yourself: “Does my phone support this?”. Again we dig into the WURFL database and we see that WAP Push is widely supported, but EMS a little less so.
This is understandable, because WAP Push is a protocol used in MMS (or picture messaging). Since most phones nowadays are camera phones and support picture messaging, they’re very likely to support WAP Push.
Here is a list of devices that support EMS and/or WAP Push, according to WURFL:
As I started to explain in the last post, a WAP push consists of an XML document sent to the device over SMS. This is true but somewhat simplified.
The truth is that we send:
- an WBXML encoded XML
- over WSP (Wireless Session Protocol)
- over WDP (Wireless Datagram Protocol)
- over SMS
This is called an unconfirmed push.
As you may understand, the data you can send via SMS is limited. It is limited because:
- A single message can only hold 160 GSM-7 encoded characters
- Even though messages can be combined in to bigger ones, the total size is still limited in several ways:
- A message can have at most 256 parts
- The receiving device as a (much lower) limit on how many parts it can reassemble into a bigger message
- And if the technical limits aren’t prohibitive, the cost might be
So how do you send more and richer information to a device? There are 2 possibilities:
Today I’ll focus on WAP push.
As discussed in a previous post, many features of SMS messages become available if you can set the User Data Header (UDH) field.
When using a GSM modem in text mode you can’t sent a UDH, so you need to use PDU mode.
How do you add a UDH?
There are 2 things you need to do:
- Set the UDH bit in the first octet of the PDU. For an SMS-SUBMIT PDU (the only one we’ve been using so far) the value is normally 0×01. To indicate that a UDH is present we need to set bit 6 (0×40). So for an SMS-SUBMIT with UDH present we set the PDU type to 0×41.
- With the UDH bit set, this first octet of the payload (or User Data = UD) needs to indicate the length of the UDH in octets. This field is known as UDHL.
EMS stands for Enhance Message Services. EMS messages are just SMS messages with a twist.
EMS messages make use of the User Data Header to add some meta data to the SMS message being sent. This meta data is separate from the actual text and devices that don’t understand some or any of the EMS features will easily skip over them and just render the text.
The uses of EMS are many:
So far I’ve show how to send a text message in PDU mode. There is nothing special about this. There are a number of things you can do in PDU mode, that you can’t do in text mode.
A first example is a flash SMS message.
A flash SMS message is an SMS message that, instead of being stored in the SIM or memory of the receiving phone, pops-up on the receiving phone’s screen, without the user taking any action. When dismissed the message is usually gone.
Here is an example AT command to send a flash SMS message in PDU mode:
Here is what the individual octets represent:
As discussed in an earlier post, you can connect to a GSM modem and use AT commands to send SMS messages. There are 2 possible methods: text mode and PDU mode.
It turns out that most devices support PDU mode, but only a few support text mode.
Here is an example AT command to submit a PDU:
As explained before the size (24) is the number of octets in the PDU. he PDU itself is passed as a hex representation of those octets (48 characters). Here is what the individual octets represent:
A few days back I initially posted the article ‘Collected UAProf URLs’. The format I used for the information was one big table with the first column the brand, the second column the model and the third column the UAProf URLs, e.g.:
If you’re interested in the capabilities of a particular device, I have assembled a list of all the UAProf URLs from the WURFL database:
To give you a feel of the kind of information you’ll find in a UAProf file I include an example. It is fascinating how much information is available.
Here is the UAProf file for a T-Mobile Dash: