Error conditions and important events are reported to the
application program through three kinds of status codes. These are "Transmit completion", "Unsolicited" and "Receive
completion" status codes.
The defines for these status codes are located in /usr/include/zcomstatus.h and /usr/include/zx25status.h.
Transmit Completion Status Codes |
 |
Transmit completion status is generated by the protocol on
all transmit messages. Depending on the mode parameter
selected when using the zsend call,
the application will see either No transmit response messages, Error
responses only, or All transmit response messages. The status code
contained in the header of these messages indicates either the successful
transmission of the message, or the reason why it could not be transmitted.
The following transmit completion status codes may be generated
by the HDLC.FRAME protocol on a non-E1/T1 interface.
Table 3-1 Non-E1/T1 Interface Transmit Completion Status Codes
Transmit Status Code | Description |
|---|
IO_OK | No error detected. This message
was successfully transmitted to the receiving station. |
IO_DSBL | Terminal disabled. Messages
cannot be transmitted by a disabled terminal. |
IO_LONG_MSG (Z7340A only) | There is a limit to the number of buffers which
may be used for a single transmit frame. If this limit is exceeded, the
frame is flushed with this status code, and is not transmitted.
Note: The Z7340A card has a configurable buffer size. A buffer size
of 128 bytes or larger will prevent this problem from occurring. |
IO_SHRT_MSG (Z7340A only) | A zero length frame cannot be transmitted
by the Z7340A ACC. |
IO_TX_TMOUT | Cable or local modem fault. This
message cannot be sent or acknowledged because of a bad clock or
modem signal. |
The following transmit completion status codes may be generated
by the HDLC.FRAME protocol on an E1/T1 interface.
Table 3-2 E1/T1 Interface Transmit Completion Status Codes
Transmit Status Code | Description |
|---|
IO_OK | No error detected. This message
was successfully transmitted to the receiving station. |
IO_DSBL | Terminal disabled. Messages
cannot be transmitted by a disabled terminal. |
IO_DOWN | Terminal down. This message
could not be sent because the physical interface is not operational
(usually when frame synchronization has been lost). |
| IO_LONG_MSG | There is a limit to the number of buffers
which may be used for a single transmit frame. If this limit is
exceeded, the frame is flushed with this status code, and is not transmitted.
Note: This ACC has a configurable buffer size and a buffer size
of 128 bytes or larger will prevent this problem from occurring. |
IO_TX_URUN | Transmit underrun. This frame
could not be transmitted at this time due to excessive loading of
the interface card. |
Unsolicited Status Messages |
 |
The unsolicited status messages (mrq.mrqcode = = ZCOM_MRQCODE_STATUS)
are used to inform the application program of events which occur
affecting communications with the remote station. The status code "No
error detected" is used to inform the application that
the remote station is communicating normally. This could occur when
an terminal has been enabled, or after an error condition has been
cleared.
For status codes within request code 5 (unsolicited status
report) bit 7 will be set to indicate the UP/DOWN state of the terminal
after the event which caused the status report. Bit 7 will be set
if the terminal state was DOWN, and it will be clear if the terminal
state was UP. An unsolicited status report of zero (UP, no error
detected) is used to indicate the terminal has just come UP after
being DOWN.
The following unsolicited status codes may be received by
an application program from the HDLC.FRAME protocol on a Z7340A
ACC interface.
Table 3-3 Z7340A Interface Unsolicited Status Codes
Unsolicited Status Code | Description |
|---|
IO_OK | No error detected. Normal
communications have been established or resumed. |
IO_DSBL | Terminal Disabled |
| ST25XDCD | Loss of DCD signal |
| ST25XCTS | Loss of CTS signal |
IO_STATS | This message is sent in response to a
CW_STATS control write. The data buffer contains a x25l2stat_type
structure (defined in zcomx25.h) |
IO_ALRDY_ENBL | An enable request is received, while HDLC.FRAME
is already enabled. No action is taken and this unsolicited status
code is returned with the UP/DOWN bit set to reflect the state of
the port. |
IO_ALRDY_DSBL | A disable request is received, while HDLC.FRAME
is already disabled. No action is taken. |
IO_RX_BUF | Either the port or the card as a whole is running
low on free buffers. Some tuning of the ACC configurable parameters
may be required. Refer to the section on "TTGEN" in
the ACC Utilities Reference Guide. |
Other Non-E1/T1 interfaces
The following unsolicited status codes may be received by
an application program from the HDLC.FRAME protocol on a non-E1/T1
interface.
Table 3-4 Other Non-E1/T1 Interface Unsolicited Status Codes
Unsolicited Status Code | Description |
|---|
IO_OK | No error detected. Normal
communications have been established or resumed. |
ST25DSBL | Terminal Disabled |
ST25XDCD | Loss of DCD signal |
ST25XCTS | Loss of CTS signal |
IO_STATS | This message is sent in response to a CW_STATS control write. The data buffer contains a x25l2stat_type structure (defined in zcomx25.h) |
The following unsolicited status codes may be received by
an application program from the HDLC.FRAME protocol on an E1/T1
interface.
Table 3-5 E1/T1 Interface Unsolicited Status Codes
Unsolicited Status Code | Description |
|---|
IO_OK | No error detected. Normal
communications have been established or resumed. |
IO_DSBL | Terminal Disabled |
IO_TX_TMOUT | Cable or local modem fault. The
physical connection to the remote device has been lost. |
IO_LONG_MSG | Frame too long (SS7 only) HDLC.FRAME
has entered octet counting mode. |
IO_RX_BUF | No receive buffers The number
of available free buffers or message headers on the interface card
is dangerously low. |
IO_ALRDY_ENBL | Terminal already enabled An
enable request was received for an HDLC.FRAME terminal which was
already enabled. |
IO_ALRDY_DSBL | Terminal already disabled A
disable request was received for an HDLC.FRAME terminal which was
already disabled. |
IO_STATS | This message is sent in response to a CW_STATS control write. The data buffer contains an l2stat_type structure (defined in fw_types.h). The l2stat_type structure is the same as the x25l2stat_type structure mentioned above, except that it has
some additional fields. |
Receive Completion Status Codes[1] |
 |
If the BADFR bit is not set in the configuration, all messages
received by the application from HDLC.FRAME will have a status code
of zero. Received messages that have errors will not be returned
by the protocol. See Chapter 4 “Protocol Specific Configuration”
If the BADFR bit is set, all messages, regardless of whether
or not they have errors, are received by the application from HDLC.FRAME.
In this case the following status codes are used.
Receive Status Code | Description |
|---|
IO_OK | No error detected. Normal
communications have been established or resumed. |
IO_LONG_MSG (not Z7340A) | Message too long A received
frame was too large to be buffered. |
IO_RX_BUF (not Z7340A) | No receive buffers. The protocol
has run out of free receive buffers. |
IO_BCC_ERR | BCC or CRC error. A received
frame contained an incorrect CRC. |
IO_RX_ORUN (not Z7340A) | Receive overrun. The processing
of a received frame could not be completed in time. |
IO_PARITY | Parity or framing error. A
framing error had been detected by the frame receiver. |