You are here: CSP API Reference > 1 EXS & SwitchKit API Messages > Introduction to API Messages
Overview
Messages and Responses
Messages and Responses each contain a header and a checksum, and can also contain AIBs (Address Information Blocks), ICBs (Information Control Blocks), TLVs (Tag-Length-Value blocks), and data.
Data
Data can reside in its own Data field or within AIBs, ICBs, or TLVs.
Field
A Field corresponds to a single row in the main Message/Response table, and it can be either one byte (for example 0x1B) or two bytes long (for example 0x1B4D). In accordance with Big Endian formatting, when a field is two bytes long, the first byte (in this case 0x1B) is the Most Significant Byte (MSB) and the second byte (in this case 0x4D) is the Least Significant Byte (LSB).
The next figure, EXS API Message / Response Table, provides an overview of API messages and refers to the chapters containing the specific information.
Figure 1-1
EXS API Message / Response Table
Generic API Message Format
API messages and responses are frames, containing strings of paired characters. The characters are represented in hexadecimal notation. Each frame consists of a standard header, followed by a variable number of data bytes. The data is unique to each message.
All messages, whether initiated by the CSP or by the host, must have a corresponding Response. The message fields are shown on the left (white) side of the table and the response fields are shown on the right (gray) side.
In this example, standard header information (bytes 0) is indicated by the bold outline.
Field Descriptions
This section describes the fields in the header of each API message and response.
The first field in every message is always the Frame field. It is a one-byte value that indicates the beginning of the frame. The value 0xFE is reserved for this purpose alone.
Because the value 0xFE is reserved for the Frame field, you must never use this value in any other field. If you must send the value 0xFE within the contents of a message, you must encode it using an escape sequence.
Length
The second field is always the Length field. It is a value that indicates the number of bytes to follow, excluding the Checksum.
Important! The system calculates the message length before using an escape sequence. You must do the same.
To calculate the value of the Length field, count the bytes between, but not including, the Length field and the Checksum field. In the message below, the length is 5. You can see the value 5 in the second byte of the length field, represented in hexadecimal notation as 0x05.
MESSAGE |
|
---|---|
Byte |
Field Description |
0 |
Frame Character (0xFE) |
1 |
Length, MSB (0x00) |
2 |
Length, LSB (0x05) |
3 |
Message Type, MSB |
4 |
Message Type, LSB |
5 |
Reserved (0x00) |
6 |
Sequence Number |
7 |
Node ID |
8 |
Checksum |
Message Type
The third field is always the Message Type field. It is a value that identifies the format and particular information contained in the message or response.
Sequence Number
Use the Sequence Number field(s), Bytes 5 and 6, to match corresponding responses and messages. Because the EXS API protocol is asynchronous, the system may contain more than one outstanding message of the same type. When a response to one of these messages returns, the response would be useless if there were no way to trace it to its corresponding message.
The Sequence Number resolves this issue by initiating either an 8-bit or 16-bit sequence number in an EXS API message. The sender of the message (either the host or the CSP) assigns the sequence number.
To provide backward compatibility, the 16-bit sequence number is enabled using the Generic Card Configure 0x0122 message and can be queried using the Generic Card Query 0x0123 message. The Matrix/Host Sequence Number Size TLV (0x0640) is used to configure either the 8-bit or 16-bit sequence number.
8-Bit Sequence Number
An 8-bit sequence number in the Byte 6 field is the default configuration. In this configuration, the Byte 5 field should always be set to 0x00 in CSP and Host initiated messages. Any other value in this field is reset to 0x00 in the response message to the Host. An 8-bit sequence number is in the range of 0x00-0xFF.
16-bit Sequence Number
A 16-bit sequence number extends the 8-bit sequence number Byte 6 (LSB) field into the Byte 5 (MSB) field to create a 16-bit sequence number. A 16-bit sequence number will be in the range of
0x00-0xFFFF.
When the CSP Matrix Series 3 Card is configured to use the 16-bit sequence number, Bytes 5 and 6 will contain the sequence number for both Host and CSP-initiated messages.
A 16-bit sequence number in a Host-initiated message will follow the message through the CSP and be returned in the response.
A 16-bit sequence number in a CSP-initiated message will be passed to the Host and be expected in the Host response.
Important! The 16-bit Sequence Number does not support LAPD and EXNET Connectฎ .
Address Information Blocks (AIBs) are used to address system objects such as slots, spans, and channels. An AIB can contain one or more Address Elements (AEs) to accommodate a variety of addressing requirements. An Address Element is a group of data bytes that represent specific address information.
Status
Most responses contain a Status field that follows the header. If the CSP processes a message successfully, it returns a positive acknowledgment (ACK) value of 0x10 in this field.
If an error occurs while the CSP is processing the message, the CSP returns a negative acknowledgment (NACK) value that indicates the reason for the error. Negative acknowledgements identify problems such as call processing anomalies and configuration errors. A negative acknowledgment value can be anything other than 0x10, which is reserved for positive acknowledgements.
Data
The contents of the data bytes vary for every message and response. Please refer to individual messages for data definitions.
Checksum
The value of the Checksum field is the sum of the values of all header and data bytes, except for the Frame field. The system calculates the checksum before it uses an escape sequence, if an escape sequence is required.
Message Format Documentation Conventions
This section describes the conventions used in this publication for the following:
Byte Numbering
Variable Number of Fields
Word-sized Fields
Bit Masks
Double-Line in Table
Byte Numbering
In this Reference, the actual number of bytes in a message field is shown only if the value never changes. For example, the number of bytes in the header field is shown because the header bytes will always be 0-.
Variable Number of Fields
The number of bytes in a series often changes (for example, with variable data) so it cannot be shown in this Reference. In these cases, the first field is defined in the Reference, but subsequent fields are represented by vertical dots, as shown in below.
12 |
Data |
: |
: |
Word-size Fields
API messages frequently use multiple byte fields for the following:
Timers
Conference IDs
PPL Event IDs
PPL Component IDs
Fields that are more than one byte long use the Big Endian format of Most Significant Byte (MSB) first, Least Significant Byte (LSB) last.
For example, as shown in below, Byte 8 is the MSB and Byte 9 is the LSB for the Conference ID field.
Byte 8 |
Conference ID, MSB |
Byte 9 |
Conference ID, LSB |
If the Conference ID is 05, you would enter the ID as shown in the next figure. Note that the first value (MSB) is 0x00 until the value of the LSB field "overflows" (is greater than 255). These two-byte fields are often represented as a combined Hexadecimal number. For example, in the figure below, the combined representation of 0x00 and 0x05 would be 0x0005.
Figure 1-2 Conference ID
Bit Mask
A bit mask is a byte that uses its individual bits to enable or disable functions. Setting the bit enables the function. This process is shown in the following example, taken from the Alarm message:
Example:
Data[1] Span Status
This is a bit mask indicating the information that is sent and received on the span. You can set multiple bits.
Bit
0 Receiving Red
1 Receiving Remote Alarm Indication/Yellow
2 Receiving Loss of Signal
3 Receiving Out of Frame
4 Sending Red (AIS)
5 Sending Remote Alarm Indication/Yellow
6 Receiving AIS
7 Receiving constant E-bit with Remote Alarm Indication. This bit is
valid for E1 with insert CRC and Euro-ISDN.
When you print a message trace, you read a two-byte bit mask from right to left, as shown below (0 to 15).
Double Line in Table
A double line in a table indicates that you do not repeat the fields above it. In the example below, the double line between String 1 and String 2 indicates that you can have multiple strings in the ICB but that you do not repeat the information above the field, "String 2: BCD Digit Count."
ICB Type |
0x02 (Data) |
ICB ID |
0x01 |
Data Length |
Variable |
Data[0] |
Stage Number (14) |
Data[1] |
0x01 (Host-Supplied Digits) |
Data[2] |
Outpulsing Signal Type 0x01 DTMF |
Data[3] |
String Count (1 or 2) |
Data[4] |
String 1: BCD Digit Count |
Data[5] |
String 1: 1st BCD Digit Pair |
: |
: |
: |
String 1: Last BCD Digit Pair |
: |
String 2: BCD Digit Count |
: |
String 2: 1st BCD Digit Pair |
: |
: |
: |
String 2: Last BCD Digit Pair |
The CSP uses the value 0xFE in the Frame field to indicate the beginning of a new frame. If a field value within a message or response is 0xFE, the CSP erroneously tries to process the next piece of data as a new message or response.
An escape sequence resolves this issue. Use the value 0xFD plus an extra byte that immediately follows it to send the values 0xFE or 0xFD. The table below shows the values that the system recognizes.
Value To Be Sent |
Escape Sequence Values |
---|---|
0xFD |
0xFD 0x02 |
0xFE |
0xFD 0x01 |
When the CSP reads the value 0xFD within a frame, it uses the following byte to one-complement the 0xFD value. The sum of the complement byte and 0xFD produces the actual value sent.
Important! You cannot use the values 0xFE or 0xFD immediately following the initial 0xFD value.
When you calculate the length of a message that uses an escape sequence, do not include the extra byte that you added to the message. The length of a message is defined before the escape sequence is used.
For example, if you are sending the Version Request message and it includes the value 0xFE:
The value of the Length field is the number of bytes between the Length and Checksum fields. The original length of this message is 0x. When you use the escape sequence, you add another byte to the message.
Although you added another byte to the message, you do not change the value of the Length field.
Frame |
Length, MSB |
Length, LSB |
Message Type, MSB |
Message Type, LSB |
Reserved |
Sequence Number |
X |
Logical Node ID |
Checksum |
FE |
00 |
05 |
00 |
02 |
00 |
FD |
01 |
01 |
05 |
Basic Message Set
The primary function of the basic message set is to download the CSP Software from the host, and to query the CSP. When the CSP Software is completely downloaded, the CSP stops running from the CSP Matrix Series 3 Card firmware, and starts running from the CSP Matrix Series 3 Card RAM load. You can think of the Basic Message Set as a core group of messages.
The following messages comprise the basic message set:
Alarm
Alarm Cleared
Become Active
Card Status Query
Clear System Software
Download Begin BRecord
Download Begin SRecord
Download BRecord
Download Complete
Download SRecord
Fault Log Query
Poll
Poll Interval Configure
Poll Request
Reset Matrix
TFTP Control/Query
Version Request
API Messages Sent to the Standby CSP Matrix Series 3 Card
The host can send the following API messages to the standby matrix card.
Card Status Query (0x0083)
Clear System Software (0x000C)
Download Begin BRecord (0x009B)
Download Begin SRecord (0x00A2)
Download BRecord (0x009B)
Download Complete (0x00A4)
Download SRecord (0x00A3)
Fault Log Query (0x0086)
Poll (0x00AB) ACK
Poll Interval Configure (0x009F)
Poll Request (0x009E)
Reset Matrix (0x009D)
Version Request (0x0002)