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:
Establishment and loss of carrier and frame synchronization
Alarms set and cleared
15 minute performance reports
24 hour performance reports
Unsolicited notifications are received directly from the TX device driver rather than through the library calls.
This topic presents:
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.
Each message consists of:
A standard dual port RAM header (DPRH) that interfaces with the device driver. Refer to Dual port RAM header (DPRH) for more information.
An unsolicited message header (UMsg) that identifies the notification type and T1/E1 line. Refer to Unsolicited message header (UMsg) for more information.
A parameter block that is specific to the notification type.
The following illustration shows the unsolicited status message format:
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.
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;
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) |
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:
YELLOW_ALARM
BLUE_ALARM
TS16SIG_ALARM
TS16AIS_ALARM
ISTANTMF_ALARM
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. |
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;