Manual Tt8750 2
Manual Tt8750 2
Manual Tt8750 2
GSM0308UG001
Version: 1.05
Date: 1/21/2011
Status: Released
General
All efforts have been made to ensure the accuracy of material provided in this document at
the time of release. However, the items described in this document are subject to continuous
development and improvement. All specifications are subject to change without notice and
do not represent a commitment on the part of Enfora, Inc. Enfora, Inc. will not be
responsible for any loss or damages incurred related to the use of information contained in
this document.
This product is not intended for use in life support appliances, devices or systems where a
malfunction of the product can reasonably be expected to result in personal injury. Enfora,
Inc. customers using, integrating, and/or selling this product for use in such applications do
so at their own risk and agree to fully indemnify Enfora, Inc. for any damages resulting from
illegal use or resale.
Copyright
Complying with all applicable copyright laws is the responsibility of the user. Without
limiting the rights under copyright, no part of this document may be reproduced, stored in or
introduced into a retrieval system, or transmitted in any form or by any means (electronic,
mechanical, photocopying, recording or otherwise), or for any purpose, without the express
written permission of Enfora, Inc.
Enfora may have patents, patent applications, trademarks, copyrights or other intellectual
property rights covering subject matter in this document. Except as expressly provided in
any written license agreement from Enfora, the furnishing of this document does not give
you any license to these patents, trademarks, copyrights or other intellectual property.
Enabler and Spider are either registered trademarks or trademarks of Enfora, Inc. in the
United States.
GSM0308UG001 1/21/2011
API Reference
Version 1.05
GSM0308UG001 1/21/2011
API Reference
Version 1.05
Table Of Contents
1 Overview ........................................................................................................................... 1
2 References ......................................................................................................................... 2
3 Modem Communication ................................................................................................... 3
3.1 Serial Communication .............................................................................................. 3
3.2 Over The Air Communication .................................................................................. 4
4 AT Commands Over DUN or OTA .................................................................................. 5
4.1 IP Header .................................................................................................................. 8
4.2 UDP Header ............................................................................................................ 10
4.3 TCP Header ............................................................................................................. 11
4.4 API Header.............................................................................................................. 12
4.4.1 Wakeup Messages ............................................................................................... 14
4.4.2 Send Password to Modem................................................................................... 15
4.4.3 Read/Write AT Command Request .................................................................... 16
4.4.4 Unsolicited Messages.......................................................................................... 17
4.4.5 ACK Messages.................................................................................................... 18
4.4.6 ERROR Messages ............................................................................................... 19
4.4.7 API Optional Header........................................................................................... 19
4.4.7.1 End of Option Sequence – Type 0 .............................................................. 22
4.4.7.2 MDMID – Type 1 ....................................................................................... 23
4.4.7.3 Output Message Event Format- Type 2 ...................................................... 24
4.4.7.4 Event Sequence Number – Type 3.............................................................. 24
4.4.7.5 Firmware Version - Type 4 ........................................................................ 25
4.4.7.6 Cause Code – Type 5 .................................................................................. 25
4.4.8 FOTA Complete Message................................................................................... 25
5 Terms Explained ............................................................................................................. 27
5.1 Big Endian .............................................................................................................. 27
5.2 Byte ......................................................................................................................... 27
5.3 Little Endian............................................................................................................ 27
6 Example: ......................................................................................................................... 28
GSM0308UG001 1/21/2011
API Reference
Version 1.05
1 Overview
This document provides a description of the Application Program Interface (API) for the
Enfora‟s GSM/GPRS modems.
With this API, programmers can access information and control modem functions in real-
time. A wide range of information is available via the API and includes modem management
and status functions. This environment would best be utilized where a customized software
application is being considered and real-time performance parameters are mandatory. A good
example of the necessity for the API is in a real-time monitoring application that includes a
status window to report performance and indicate when network conditions begin to degrade.
Data is consistently being updated during the established session.
Many host computers, which use this API, will contain a TCP/IP stack, which includes UDP
and Point-to-Point Protocol (PPP). However, this is not a requirement. This API includes
documentation and details to create your own UDP and PPP formatting for a minimal
implementation.
This document contains proprietary information and must not be reproduced without the
prior written consent of Enfora, Inc. (Enfora).
2 References
3 Modem Communication
Most AT commands may be read and/or written via UDP/IP or TCP/IP. The implemented
AT command set is a compliant subset of GSM Ref. 07.07, GSM Ref. 07.05, and ITU-T Ref.
V.25ter.
The AT command state is entered upon power-up/reset. The modem always starts in AT
command mode. Use Windows HyperTerminal or similar application to send AT commands
to the modem. Connect directly to the COM port used by the modem.
If real-time status/control is not required, the AT Command set may offer an easier
integration alternative. Refer to AT Command Set Reference document (Enfora Document
GSM0107PB001MAN) for a list of AT commands.
The user may choose to use AT Commands to configure the modem and/or start GSM/GPRS
registration before switching to the UDP/IP or TCP/IP messaging for real-time status during
data transfers.
A user can communicate with the modem via one of the two possible methods:
RS232 Serial communication
Over The Air (OTA) via SMS or GPRS
Modem‟s default serial communication is set at 115200 baud, no parity, 8 data bits, 1 stop
bit, and hardware flow control enabled. A user can send/receive AT commands, data, or
response to/from the modem via one of the two methods:
Straight serial communication via HyperTerminal or similar application
Serial communication via Dial-Up Network (DUN)
Straight serial communication provides the user with the following capabilities:
Send AT commands and receive response
Receive SMS notification
Make a voice, data or fax call
Receive any unsolicited message
Serial communication via DUN provides the user with the following capabilities:
Send and receive UDP/IP and/or TCP/IP data
Surf the internet (provided data service is provided by the service provider) via
internet explorer or similar application software
Send AT commands via UDP/IP (described in section 4 of this document). The
destination IP address and port number for AT commands sent via UDP/IP can be
configured via AT$UDPAPI command.
Make a voice or fax call by sending AT commands via UDP/IP
Receive SMS notification via UDP/IP
Receive any unsolicited message via UDP/IP
A user can send/receive AT commands to configure the modem OTA via UDP/IP or TCP/IP.
Configuration command request has to be sent at modem‟s IP address and port number
configured by AT$UDPAPI command for UDP/IP or AT$TCPSRC command for TCP/IP. A
user must make sure that they don‟t send non-configuration IP data at this port for the
modem will ignore it. See section 7 for details on how AT commands can be sent OTA.
Figure 1 describes the communication between a modem and a PC (or any RS232 compatible
device) via a Dial-Up Network (DUN) connection. To send and receive AT commands over
UDP/IP, a user must create the message first and then encapsulate it within a UDP/IP header.
DUN connection must be established before the message is sent to the modem. The modem
will process the request and respond depending on the type of request.
Host Computer
Modem
Table 1 describes the details of an AT command sent to the modem via UDP/IP over a DUN
session. All messages are commanded from the host computer or remote host, and then
responded to by the modem. The modem may generate unsolicited UDP/IP messages if
subscribed.
Table 2 describes the details of an AT command sent to the modem via TCP/IP over the air.
All messages are commanded from the remote host, and then responded to by the modem.
The modem may generate unsolicited TCP/IP messages if subscribed.
The data order for all fields is big endian (most significant byte first).
As described below, most of the fields within the UDP and IP headers will remain constant
for all messages. The fields that will have to be modified are: Length of IP Packet, Packet
Number, IP header checksum, Source IP, Destination IP, Source Port number, Destination
port numbers, UDP packet length, and UDP checksum
4.1 IP Header
The Internet Protocol (IP) header consists of 20 bytes. The definition and minimal
implementation consists of the following (see RFC 791 for further details):
Byte 0: 8-bit bit field for version and length. This API only supports version 4
with IP header length of 5*4=20 bytes. This field must be set to 0x45.
Byte 1: 8-bit type of service. The API ignores this field. This field must be set
to 0x00.
Bytes 2 - 3: 16-bit total length of packet. This field must be changed for each API
message. It includes the message data, IP header, and UDP header.
This field equals data Length + 28 (size of UDP and IP headers).
Bytes 4 - 5: 16-bit identification. This field may be incremented for each packet. It
is not required and may be left 0x0000.
Bytes 6 - 7: 16-bit Fragmentation offset. The API ignores this field. This field must
be set to 0x0000.
Bytes 8: 8-bit Time to live. The API ignores this field. This field must be set to
0x00.
Bytes 9: 8-bit Protocol. The API only supports UDP. This field must be set to
17 (0x11).
Bytes 12 - 15: 32-bit source IP address. For messages from the host to the modem,
this is the IP address of host‟s UDP port. This IP address may be any
valid IP address desired by the user‟s application, but will need to
match the host‟s TCP/IP stack. This IP address will be used as the
destination IP address for all response messages from the modem.
Bytes 16 - 19: 32-bit destination IP address. For messages from the host to the
modem, this is the IP address of modem‟s UDP API port. This IP
address may be configured using AT commands if desired. This IP
address will be used as the source IP address for all response messages
from the modem. The default IP address for the modem‟s UDP API is
199.245.180.13. Unless changed via AT commands, byte 16 will be
199 (0xC7), byte 17 will be 245 (0xF5), byte 18 will be 180 (0xB4),
and byte 19 will be 13 (0x0D).
The User Datagram Protocol (UDP) header consists of 8 bytes. The definition and minimal
implementation consists of the following (see RFC 768 for further details):
Bytes 0 - 1: 16-bit source port number. For messages from the host to the modem,
this is the source port number of the host‟s UDP port. This port may be
any number desired by the user‟s application. This number will be
used as the destination port for all response messages from the modem.
Bytes 2 - 3: 16-bit destination port number. For messages from the host to the
modem, this is the port number of the modem‟s UDP API port. The
modem‟s UDP API port number may be changed using AT commands
(AT$UDPAPI) if desired. The modem‟s default UDP API port number
is 1720 (0x06B8).
Bytes 4 - 5: 16-bit length of UDP packet. This is the data length only; it does not
include the IP header length. This length must be filled in for each
message depending upon the amount of data in the packet.
Bytes 6 - 7: 16-bit UDP checksum. This checksum may be used to validate the
UDP packet. If the value is 0, then the checksum is ignored.
The Transmission Control Protocol (TCP) header consists of 20 bytes. The definition and
minimal implementation consists of the following (see RFC 793 for further details):
URG
ACK
SYN
RST
PSH
FIN
Reserved Window
Offset
16 – 19 Checksum Urgent Pointer
Bytes 2 - 3: 16-bit destination port number. For messages from the host to the
modem, this is the port number of the modem‟s TCP API port. The
modem‟s TCP API port number may be changed using AT commands
(AT$TCPSRC) if desired. The modem‟s default TCP API port number
is 1024 (0x0400).
Bytes 4 - 7: 32-bit sequence number of the first data octet in this segment
Bytes 12 - 15:
4 – bits: Data Offset, number of 32 bit words in the TCP header
indicating where data begins
6 – bits: Reserved.
URG: Urgent Pointer field significant
ACK: Acknowledgment field significant
PSH: Push function
RST: Reset the connection
SYN: Synchronize sequence numbers
FIN: No more data from sender
16 bits: Number of data octets beginning with the one indicated in the
acknowledgement field, which the sender of this segment is
willing to accept
Configuration commands/messages can be sent to the modem either OTA or when a DUN
connection is present. Commands sent over a DUN connection can only be sent via UDP/IP.
However, commands sent OTA can be sent via UDP/IP or TCP/IP. Table 1 describes a high
level overview for data sent over UDP/IP while table 2 describes a high level overview for
data sent over TCP/IP. The API commands provide easy integration and message parsing for
the embedded developer and application developer. The Registration of Unsolicited message
registers the requestor‟s IP address and Port number and sends unsolicited messages to the
requestor‟s IP address and Port number.
The base API message header is 4 bytes long for commands sent via UDP/IP or 6 bytes long
for commands sent via TCP/IP. The API message header, for both UDP/IP and TCP/IP, can
be extended up to an additional 255 bytes by the inclusion of an API Optional Header. The
Supported API number and commands are described in table 5 below. The definition and
minimal implementation consists of the following:
Bytes 2: 8–bit Command Type information. This value determines the type of
message being sent or received by the host
Bytes 3: API Optional Header Size. This field defines the size of the API
Optional Header in Bytes. This field is set to zero (0) if an API
Optional Header is not included.
Bytes 4 thru (4+m): API Optional Header. See section 4.4.7 for details
Bytes 4: 8–bit Command Type information. This value determines the type of
message being sent or received by the host (ex: 08 in below given
example)
Bytes 5: API Optional Header Size. This field defines the size of the API
Optional Header in Bytes. This field is set to zero (0) if an API
Optional Header is not included.(ex: 00 in below given example)
Bytes 6 thru (6+m): API Optional Header. See section 4.4.7 for details
The wakeup/keep-alive message is sent to the local host as a “Status” command type
message. Following data will be sent by the modem at the periodic interval configured by the
AT$WAKEUP command:
Data
Bytes Comments
Description
0 0x00
Parameter Number
1 0x0A
2 0x02 Status
3 0x00 Reserved
4 0x20
5 0x20
6 0x20
7 0x20
8 0x20
Parameter Number
9 0x20
( 1)
10 0x20
11 0x20
12 0x20
13 0x31
14 0x20
15 0x20
16 0x31
17 0x32
18 0x33
19 0x34
20 0x35
21 0x36
22 0x37
23 0x38
24 0x39
25 0x30 Modem ID
26 0x31 (12345678901234567890)
27 0x32
28 0x33
29 0x34
30 0x35
31 0x36
32 0x37
33 0x38
34 0x39
35 0x30
36 0x20
Table 7 - Wakeup/keep alive message
The modem requires that the remote request must come from a “friendly IP” (set by
AT$FRIEND command) or be the most recent IP to correctly provide the password. All
remote requests will be accepted if the password is set to NULL. The password has to be 8
bytes alphanumeric (A-Z, 0 –9) upper case characters only. Password should be filled with
NULL characters if the password is less than 8 characters long. Send the following data to
send the password:
Data
Bytes Comments
Description
0 0x00
Parameter Number
1 0x0B
2 0x01 Write Request
3 0x00 Reserved
4 0x41
5 0x42
6 0x43 Password
7 0x44 (ABCDEF)
8 0x45 <8 – Alpha-Numeric upper case
9 0x46 characters (0 – 9 or A – Z)>
10 0x00
11 0x00
Table 8 - Sending of password to the modem OTA
Data
Bytes Comments
Description
0 0x00
Sequence Number
1 0x01
2 0x04 AT Command Read/Write
3 0x00 Reserved
4 0x41
AT Command
5 0x54
(ATI)
6 0x49
Table 9 - AT command to the modem
Data
Bytes Comments
Description
0 0x00
Sequence Number
1 0x01
2 0x05 AT Command Response
3 0x00 Reserved
4 0x0D
5 0x0A
6 0x45
7 0x6E
8 0x66
9 0x6F
10 0x72
11 0x61 AT Command Response
12 0x2C (Enfora, Inc.)
13 0x20
14 0x49
15 0x6E
16 0x63
17 0x2E
18 0x0D
19 0x0A
Table 10 - AT command response
A host has to register, with the modem, to receive any unsolicited messages. The modem
saves the host‟s IP address and Port number. Unsolicited messages will then be sent to the IP
and Port number that the user sends its request from. The host should send the following
message structure to register the reception of unsolicited messages:
Data
Bytes Comments
Description
0 0x00 Parameter Number
(unsolicited message
1 0x00 registration request)
2 0x01 Write Request
3 0x00 Response status
Table 11 - Message structure for registration of unsolicited messages
The modem will send the following message structure for the registered unsolicited
messages:
Data
Bytes Comments
Description
0 0x00 Parameter Number
(unsolicited message
1 0x00
registration request)
2 0x02 Write Request
3 0x00 Response status
4–n … Unsolicited message
Table 12 - Message structure of an incoming unsolicited message
To disable sending of a message that requires acknowledgement, the server should send the
following data, indicating an ACK, to stop sending of the messages.
NOTE: Acknowledge message should only be sent for messages configured to be sent via
UDP/IP
Data
Bytes Comments
Description
0 0x00
Parameter Number
1 0x0A
2 0x01 Write Request
3 0x00 Response status
Table 13 - ACK message
If there is an error in processing an API request by the modem, the modem will respond with
the following message structure
Data
Bytes Comments
Description
0 xx First two bytes of an incoming
1 xx request will be echoed here
2 0x03 ERROR Response
3 0x00 Response status
Table 14 - Error message
The API Optional Header can be appended to the end of the UDPAPI or TCPAPI Header. It
is comprised of a sequence of Optional Header Fields as shown below.
Optional
Bytes Bits 0-7
Header Field
0 Size (m)
1 1 Type
2 thru (m-1) Data
m Size (n)
2 (m+1) Type
(m+2) thru (m+n-1) Data
(m+n) Size (p)
3 (m+n+1) Type
(m+n+1) thru (m+n+p-1) Data
... (m+n+p) ...
Byte 0: 8 bit field indicating the size of the Optional Header Field including
Size and Type Fields
Byte 1: 8 bit field indicating the type of data contained in Data Field.
Currently defined types are shown in the table below.
Bytes 2+: Optional Header Data Field. The content is defined by the Optional
Header Type
Currently there are four defined Optional Header Types. The Complete list of defined types
is as follows:
The inclusion of the Optional Headers is selected by the AT$APIOPT and is only sent for
applicable API message types. The following table defines when the Optional Headers are
applicable based on the API Number and Command Types. For complete syntax of the
AT$APIOPT Command, see GSM0308AT001 - Enabler III AT Command Set.
Table 17 - Conditions for Including Optional Fields into API Optional Header
A detailed description for each of the Optional Field types is discussed in the following
paragraphs.
This API Optional Header Field Type indicates it is the last of the Optional Header Fields. It
is only used if the API Optional Header Size is defined to be larger than the combined Option
Header sizes. The size field for this type shall include the remaining bytes of the API
Optional Header. The Data Field shall contain all zeros. The primary purpose of this type is
to allow padding to re-align the Data contents of the API Message to a word boundary. To
accommodate single byte padding of the API Optional Header a size field of one (1) shall be
allowed as the last byte of the API Optional Header. If one (1) is seen in the size field it shall
be interpreted as the last byte of the API Optional Header with the Optional Header Field
Type assumed as End of Option Sequence. The End of Option Sequence formats are shown
below:
The MDMID Optional Header Field allows servers to easily identify the source of the packet
for easier handling. The Optional Header Data Field would include the value set by the
AT$MDMID command. No additional padding will be added to the data. An example for a
MDMID of „12345678901234567890‟ is as follows:
Data
Bytes Comments
Description
0 0x16 (22) Size
1 0x01 Type = MDMID
2 0x31
3 0x32
4 0x33
5 0x34
6 0x35
7 0x36
8 0x37
9 0x38
10 0x39
11 0x30 MDMID
12 0x31 (12345678901234567890)
13 0x32
14 0x33
15 0x34
16 0x35
17 0x36
18 0x37
19 0x38
20 0x39
21 0x30
The Output Message Event Format-Optional Header Field is available to messages generated
by the event engine. It contains the 32-bit <param2> value of the Output Message Event
Format. The inclusion of this option field is selected by the AT$APIOPT Command, see
GSM0308AT001 - Enabler III AT Command Set. The format for this optional header field
is as follows:
Data
Bytes Comments
Description
0 0x06 Size
Type = Output Message Event
1 0x02
Format
2 0x12
3 0x34 Output Message Event Format
4 0x56 (0x12345678)
5 0x78
The Firmware Version Optional Header Element is used to specify the Enfora Version
Number of the current firmware.
Data
Bytes Comments
Description
0 0x06 Size
1 0x04 Type = FW Version
2
3
Data
4
5
The Cause Code Optional Header Element is used to specify a status code for an operation.
Data
Bytes Comments
Description
0 0x04 Size
1 0x05 Type = Cause Code
2
Cause Code Value
3
Table 22: Cause Code Optional Header Element
Code Description
0 Unknown
1 Restart due to system initialization
2 Restart due to FOTA completion
Table 23: Cause Code Value Definitions
The FOTA process will send a FOTA Complete Message to the first destination in the
FRIENDS list upon completion of the FOTA operation. The FOTA operation is normally
completed on the next Modem startup following the new Firmware load. This message is
composed the Cause Code indicating that a FOTA operation caused the system to restart and
the new Firmware Version.
5 Terms Explained
5.1 Big Endian
Big endian format means that the most significant byte is sent first. For example, a decimal
value of 1234567 will be displayed as hex 0x0012D687. While sending this data over a
communication link, the most significant byte – 0x00 is sent first followed by 0x12, followed
by the third byte 0xD6, followed by the least significant byte 0x87.
5.2 Byte
In this document, One Byte = 8 bits. Bit-0 is the right most bit and is also referred to as pin-1
while Bit-7 is the left most bit and is referred to as Pin-8.
Byte
Upper Nibble Lower Nibble
Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0
Pin-8 Pin-7 Pin-6 Pin-5 Pin-4 Pin-3 Pin-2 Pin-1
27 26 25 24 23 22 21 20
Little endian format means that the least significant byte is sent first. For example, a decimal
value of 1234567 will be displayed as hex 0x0012D687. While sending this data over a
communication link, the least significant byte – 0x87 is sent first followed by 0xD6, followed
by the third byte 0x12, followed by the most significant byte 0x00.
6 Example:
Sending AT Command:
Note: IP and UDP checksum are not calculated in this example. They are left for the
user to calculate as an exercise.
Receiving UDP ASCII Event Data with Option Header MDMID and Sequence Number
Enabled