A channel is the basic unit of communication to the TX boards. The channel provides a multiplexing or de-multiplexing packet-based interface between the host operating system and one or more TX boards. The combination of board number (CP number) and channel is known as a logical port.
To implement multiplexing and de-multiplexing, a header is inserted on all packets transferred between the host and the TX boards. The header includes the following information:
Source channel |
Source CP |
Destination |
Destination |
Length |
Reserved |
Data |
1 byte |
1 byte |
1 byte |
1 byte |
2 bytes |
2 bytes |
1 through 1980 bytes |
TX boards are numbered 1 through 16. The host is assigned the CP number of 0. The length field indicates the length of the entire data packet, including the header. Channels are numbered 0 through 255, and channel 0 is reserved.
A channel number is assigned to a task on the TX board by a prior arrangement, similar to the ports concept used in TCP/UDP. To minimize conflicts, use the following channel usage:
Channel |
Usage |
0 through 31 |
Reserved |
32 through 127 |
Available for use by applications |
128 through 255 |
Reserved |
The communications mechanism is similar to UDP datagrams. Tasks on the TX board register to receive all data from a particular channel. Host applications pick an unused channel to use and register to receive all packets on the chosen channel. Communications are accomplished through a connectionless datagram type of service. Due to the nature of such a service, most tasks on the TX board respond to requests from the host application by returning an indication of success or failure of the request. This response is at the application level, not at the CPI layer.
The following code sample provides a list of channels used by tasks on the TX board. These channels are defined in the dpriface.h file.
#define PT_MGR 0x00 /* Host Control Manager [$manager channel] */
#define PT_SWI 0x03 /* Switching Control Channel */
#define PT_CONSOLE 0x06 /* Console Channel */
#define PT_LOADER 0x07 /* Loader Channel */
#define PT_DEBUG 0x08 /* Debug Channel */
#define PT_MVIP 0x09 /* MVIP Control Channel */
#define PT_T1E1C 0x0A /* T1/E1 Control Channel */
#define PT_T1E1S 0x0B /* T1/E1 Status Channel */
#define PT_INF 0x0C /* Alarm Manager (raw alarm channel) */
#define PT_SS7MON 0x0F /* SS7 Monitor API port #1 */
#define PT_ARP 0x12 /* ARP Protocol Channel */
#define PT_SS7MON2 0x13 /* SS7 Monitor API port #2 */
#define PT_ISUP 0x14 /* SS7 ISUP Task Channel */
#define PT_MTP 0x15 /* SS7 MTP Task Channel */
#define PT_TCAP 0x17 /* SS7 TCAP Task Channel */
#define PT_IUP 0x18 /* SS7 IUP Task Channel */
#define PT_TXMON 0x19 /* TX Monitor Task Channel */
#define PT_TUP 0x1D /* SS7 TUP Task Channel */
#define PT_SCCP 0x1E /* SS7 SCCP Task Channel */
#define PT_INFO 0xF1 /* TX INFO API Channel */
#define PT_IP 0xF2 /* IP Control Channel */
#define PT_VERSION 0xF3 /* Version Verification Channel */
#define PT_RESET 0xF4 /* Board Reset Channel */
#define PT_FLASH 0xF5 /* FLASH Access Channel */
#define PT_EEPROM 0xF6 /* EEPROM Access Channel */
#define PT_DUMP 0xF7 /* Memory Dump Channel */
#define PT_SNAP 0xF8 /* Snapshot Analysis Channel */
#define PT_DIAG 0xF9 /* Diagnostic Task Channel */
#define PT_REFLECT 0xFA /* Reflect Task Channel */
#define PT_PRINTF 0xFB /* TX-based printf Channel */
#define PT_TRACE 0xFC /* TX-based Trace Channel */
#define PT_LOCATE 0xFD /* TXLOCATE host channel */
#define PT_STATS 0xFE /* TX (driver) statistics */
The txcpi.h include file provides all CPI library function prototypes and literal definitions. All provided structures are naturally aligned so there is no need to use the structure packing compile option when compiling source code that uses functions from this library.