CPI library definition

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
channel

Destination
CP

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.