Handling unsolicited T1/E1 notifications

An application can choose to receive unsolicited notifications of T1/E1/J1 line status changes, alarms, and periodic performance reports. The following events can be requested:

Unsolicited notifications are received directly from the TX device driver rather than through the library calls.

This topic presents:

Registering for unsolicited T1/E1 notifications

Complete the following steps to register for unsolicited status and performance notifications:

Step

Action

1

Call cpi_init to initialize the CPI library.

2

Open the CPI T1/E1 status channel by calling cpi_open or cpia_open, specifying a channel of PT T1E1S (the T1/E1 status channel).

3

Call TxT1E1Open to obtain a valid handle.

4

Call TxT1E1SuperviseCarrier to enable unsolicited notifications.

5

Call TxT1E1Close to return the configuration channel.

6

When the handle returned by cpi_open or cpia_open is signaled, call cpi_get_data or cpia_intr to receive status messages.


Note: Refer to T1/E1 line status demonstration program: t1stat for a working example of how to receive unsolicited T1/E1 status messages and performance reports.

Unsolicited message formats

Each message consists of:

The following illustration shows the unsolicited status message format:

Byte ordering considerations

All 16-bit and 32-bit fields in the data portion of the CPI packet must be passed to and from the board in the board’s native format. When using the TX SWI library, all field conversions are handled by the library functions. No additional conversions are required. Conversions should be performed for the T1/E1 and H.100/H.110 switching control libraries. Use the CPI library functions cpi_htocp_s and cpi_htocp_l to change from the host’s native format to the board’s native format. Use cpi_cptoh_s and cpi_cptoh_l when converting fields received from the TX board. Refer to the Dialogic® TX Series SS7 Boards CPI Library Developer’s Reference Manual for more information.

Note: The length field in the CPI header is never converted by the host application. The length field is always in the host’s native format.

Dual port RAM header (DPRH)

All messages to and from a TX processor contain a dual port RAM header (DPRH). For T1/E1 status messages, use the DPRH to identify the sending board (srcbd field) and the byte length of the message (len field).

The source and destination channel numbers are always PT_T1E1S for the T1/E1 status messages. The following example shows the DPRH layout:

typedef struct __dprh
  U8  srcch;  /* Source channel number        */
  U8  srcbd;  /* Source board number (1..8)   */
  U8  dstch;  /* Destination channel number   */
  U8  dstbd;  /* Destination board # (0 = PC) */
  U16 len;    /* Len of msg body (incl hdr)   */

U8  reserved[2];  /* reserved for future use (pad to 32-bit aligned size) */
 } DPRH;

Unsolicited message header (UMsg)

The UMsg header identifies the type of notification and the line to which it refers (A, B, C, or D):

typedef struct txT1E1UHdr       
{
  U16  statusCode; /* Request codes from tdmuser.h */
  U8   carrier;    /* Which T1/E1 line             */
  U8   spare1;     /* Word align what follows      */
} TxT1E1UHdr;

Possible values for statusCode are:

Value

Description

STATUS_CARRIER

Line status change.

CARRIER_ALARM

Change in alarm state.

PERFREP_15MIN

15-minute performance report.

PERFREP_24HR

24-hour performance report.


Possible values for carrier are:

Value

Description

NET_T1A

T1/E1 line A

NET_T1B

T1/E1 line B

NET_T1C

T1/E1 line C

NET_T1D

T1/E1 line D

NET_T1E

T1/E1 line E (CompactPCI TX only)

NET_T1F

T1/E1 line F (CompactPCI TX only)

NET_T1G

T1/E1 line G (CompactPCI TX only)

NET_T1H

T1/E1 line H (CompactPCI TX only)


Carrier status/alarm change messages

The unsolicited status structure provides carrier status and alarm notifications information:

typedef struct txT1E1UStat
{
  TxT1E1UHdr     uhdr;   /* Unsolicited message header            */
  U8  alarmState;        /* Alarm status (CARRIER_ALARM only)     */
  U8  lastAlmState;      /* Previous alarm status                 */
                         /* (CARRIER_ALARM only)                  */
  U8  wordalign;         /* Filler for alignment                  */
  U8  syncState;         /* New synch state (STATUS_CARRIER only) */
} TxT1E1UStat;

The alarm state fields are bit maps with a 1 bit indicating that the alarm condition is present and a 0 bit indicating that the alarm condition is cleared. Including both the current and previous alarm states allows the application to determine which alarms changed state and whether the alarm condition was just detected or just cleared.

Possible values for alarmState and lastAlmState are:

Refer to T1/E1 carrier alarms for alarm conditions.

The syncState field is used only in the STATUS_CARRIER notification message. Possible values are:

Value

Description

CARRIER_SYNC

Carrier signal fully synchronized.

CARRIER_NOSYNC

Carrier signal detected but not synchronized.

CARRIER_LOST

No carrier signal detected.


Performance report messages

The 15 minute performance report contains the performance measures for the previous 15 minute period and the current values for the event accumulators:

typedef struct txT1E1Perf15
{
  TxT1E1UHdr   uhdr;       /* Unsolicited message header       */
  TxT1E1Stats  currStats;  /* Current interval statistics      */
  U16          pcvs;       /* Accumulated path code violations */
  U16          lcvs;       /* Accumulated line code violations */
  U16          slips;      /* Accumulated controlled slips     */
  U16          ebits;      /* Accumulated E-bit errors (E1)    */
} TxT1E1Perf15;

The 24 hour performance report contains the performance statistics for the preceding 96 15 minute measurement intervals, the sum of each performance measure for the last 24 hours, and the current values for the event accumulators.

If less than 96 intervals are available, the validInts field contains the number of valid intervals actually included in the performance report message.

typedef struct txT1E1Perf24
{
  TxT1E1UHdr   uhdr;          /* Unsolicited message header       */
  U16          validInts;     /* Number of intervals included     */
  TxT1E1Stats  intStats[96];  /* Last 96 15-minute intervals      */
  TxT1E1Stats  sumStats;      /* 24-hour summary statistics       */
  U16          pcvs;          /* Accumulated path code violations */
  U16          lcvs;          /* Accumulated line code violations */
  U16          slips;         /* Accumulated controlled slips     */
  U16          ebits;         /* Accumulated E-bit errors (E1)    */
} TxT1E1Perf24;