The PDU string contains not only the message, but also a lot of meta-information about the sender, his SMS service center, the time stamp etc.
It is all in the form of hexa-decimal octets or decimal semi-octets.
Example of PDU:
07 |
917283010010F5 |
040BC87238880900F10000993092516195800AE8329BFD4697D9EC37 |
This octet sequence consists of three parts:
- An initial octet indicating the length of the SMSC (Short Message Service Center) information ("07"),
- the SMSC (Short Message Service Center) information itself ("917283010010F5"),
- the SMS_DELIVER part (specified by ETSI in GSM 03.40).
Octet(s) |
Description |
07 |
Length of the SMSC (Short Message Service Center) information (in this case 7 octets) |
91 |
Type-of-address of the SMSC (Short Message Service Center). (91 means international format of the phone number) |
72 83 01 00 10 F5 |
Service center number(in decimal semi-octets). The length of the phone number is odd (11), so a trailing F has been added to form proper octets. The phone number of this service center is "+27381000015". See below. |
04 |
First octet of this SMS-DELIVER message. |
0B |
Address-Length. Length of the sender number (0B hex = 11 dec) |
C8 |
Type-of-address of the sender number |
72 38 88 09 00 F1 |
Sender number (decimal semi-octets), with a trailing F |
00 |
TP-PID. Protocol identifier. |
00 |
TP-DCS Data coding scheme |
99 30 92 51 61 95 80 |
TP-SCTS. Time stamp (semi-octets) |
0A |
TP-UDL. User data length, length of message. The TP-DCS field indicated 7-bit data, so the length here is the number of septets (10). If the TP-DCS field were set to indicate 8-bit data or Unicode, the length would be the number of octets (9). |
E8329BFD4697D9EC37 |
TP-UD. Message itself, 8-bit octets representing 7-bit data. |
All the octets above are hexa-decimal 8-bit octets, except the Service center number, the sender number and the timestamp; they are decimal semi-octets.
The message part in the end of the PDU string consists of hexa-decimal 8-bit octets, but these octets represent 7-bit data (see below).
The semi-octets are decimal, and e.g. the sender number is obtained by performing internal swapping within the semi-octets from "72 38 88 09 00 F1" to "27 83 88 90 00 1F".
The length of the phone number is odd, so a proper octet sequence cannot be formed by this number. This is the reason why the trailing F has been added.
The time stamp, when parsed, equals "99 03 29 15 16 59 08", where the 6 first characters represent date, the following 6 represents time, and the last two represents time-zone related to GMT.
|