|
OpenSS7 SS7 for the Common Man |
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
||||||||||||||||||||||||||
| Home | Overview | Status | News | Documentation | Resources | About | |||||||||||||||||||||
File /code/strss7/include/ss7/cdi.h
#ifndef _SYS_CDI_H
#define _SYS_CDI_H
/*
* Primitives for Local Management Services
*/
#define CD_INFO_REQ 0x00 /* Information request */
#define CD_INFO_ACK 0x01 /* Information acknowledgement */
#define CD_ATTACH_REQ 0x02 /* Attach a PPA */
#define CD_DETACH_REQ 0x03 /* Detach a PPA */
#define CD_ENABLE_REQ 0x04 /* Prepare a device */
#define CD_DISABLE_REQ 0x05 /* Disable a device */
#define CD_OK_ACK 0x06 /* Success acknowledgement */
#define CD_ERROR_ACK 0x07 /* Error acknowledgement */
#define CD_ENABLE_CON 0x08 /* Enable confirmation */
#define CD_DISABLE_CON 0x09 /* Disable confirmation */
#define CD_ERROR_IND 0x0a /* Error indication */
/*
* Primitives used for Data Transfer
*/
#define CD_ALLOW_INPUT_REQ 0x0b /* Allow input */
#define CD_READ_REQ 0x0c /* Wait-for-input request */
#define CD_UNITDATA_REQ 0x0d /* Data send request */
#define CD_WRITE_READ_REQ 0x0e /* Write/read request */
#define CD_UNITDATA_ACK 0x0f /* Data send acknowledgement */
#define CD_UNITDATA_IND 0x10 /* Data receive indication */
#define CD_HALT_INPUT_REQ 0x11 /* Halt input */
#define CD_ABORT_OUTPUT_REQ 0x12 /* Abort output */
#define CD_MUX_NAME_REQ 0x13 /* get mux name (Gcom) */
#define CD_BAD_FRAME_IND 0x14 /* frame w/error (Gcom extension) */
#define CD_MODEM_SIG_REQ 0x15 /* Assert modem signals (Gcom) */
#define CD_MODEM_SIG_IND 0x16 /* Report modem signal state (Gcom) */
#define CD_MODEM_SIG_POLL 0x17 /* requests a CD_MODEM_SIG_IND (Gcom) */
/*
* CDI device states
*/
#define CD_UNATTACHED 0x00 /* No PPA attached */
#define CD_UNUSABLE 0x01 /* PPA cannot be used */
#define CD_DISABLED 0x02 /* PPA attached */
#define CD_ENABLE_PENDING 0x03 /* Waiting ack of enable req */
#define CD_ENABLED 0x04 /* Awaiting use */
#define CD_READ_ACTIVE 0x05 /* Input section enabled; disabled after data arrives */
#define CD_INPUT_ALLOWED 0x06 /* Input section permanently enabled */
#define CD_DISABLE_PENDING 0x07 /* Waiting ack of disable req */
#define CD_OUTPUT_ACTIVE 0x08 /* Output section active only */
#define CD_XRAY 0x09 /* Xray-ing another ppa */
/*
* CD_ERROR_ACK and CD_ERROR_IND error return values
*/
#define CD_BADADDRESS 0x01 /* Address was invalid */
#define CD_BADADDRTYPE 0x02 /* Invalid address type */
#define CD_BADDIAL 0x03 /* Dial information was invalid */
#define CD_BADDIALTYPE 0x04 /* Invalid dial information type */
#define CD_BADDISPOSAL 0x05 /* Invalid disposal parameter */
#define CD_BADFRAME 0x06 /* Defective SDU received */
#define CD_BADPPA 0x07 /* Invalid PPA identifier */
#define CD_BADPRIM 0x08 /* Unrecognized primitive */
#define CD_DISC 0x09 /* Disconnected */
#define CD_EVENT 0x0a /* Protocol-specific event occurred */
#define CD_FATALERR 0x0b /* Device has become unusable */
#define CD_INITFAILED 0x0c /* Line initialization failed */
#define CD_NOTSUPP 0x0d /* Primitive not supported by this device */
#define CD_OUTSTATE 0x0e /* Primitive was issued from an invalid state */
#define CD_PROTOSHORT 0x0f /* M_PROTO block too short */
#define CD_READTIMEOUT 0x10 /* Read request timed out before data arrived */
#define CD_SYSERR 0x11 /* UNIX system error */
#define CD_WRITEFAIL 0x12 /* Unitdata request failed */
/*
* Error explanations
*/
#define CD_CRCERR 0x01 /* CRC or FCS error */
#define CD_DLE_EOT 0x02 /* DLE EOT detected */
#define CD_FORMAT 0x03 /* Format error detected */
#define CD_HDLC_ABORT 0x04 /* Aborted frame detected */
#define CD_OVERRUN 0x05 /* Input overrun */
#define CD_TOOSHORT 0x06 /* Frame too short */
#define CD_INCOMPLETE 0x07 /* Partial frame received */
#define CD_BUSY 0x08 /* Telephone was busy */
#define CD_NOANSWER 0x09 /* Connection went unanswered */
#define CD_CALLREJECT 0x0a /* Connection rejected */
#define CD_HDLC_IDLE 0x0b /* HDLC line went idle */
#define CD_HDLC_NOTIDLE 0x0c /* HDLC line no longer idle */
#define CD_QUIESCENT 0x0d /* Line being reassigned */
#define CD_RESUMED 0x0e /* Line has been reassigned */
#define CD_DSRTIMEOUT 0x0f /* Did not see DSR in time */
#define CD_LAN_COLLISIONS 0x10 /* LAN excessive collisions */
#define CD_LAN_REFUSED 0x11 /* LAN message refused */
#define CD_LAN_NOSTATION 0x12 /* LAN no such station */
#define CD_LOSTCTS 0x13 /* Lost Clear to Send signal */
#define CD_DEVERR 0x100 /* Start of device-specific codes */
/*
* CDI device classes
*/
#define CD_HDLC 0x00 /* Bit-synchronous */
#define CD_BISYNC 0x01 /* Character-synchronous */
#define CD_LAN 0x02 /* ISO 8802-3,4,5 local-area network MAC */
#define CD_NODEV 0x03 /* no device, ppa used for X-ray */
/*
* CDI duplex types
*/
#define CD_FULLDUPLEX 0x00 /* Full duplex; allow input supported */
#define CD_HALFDUPLEX 0x01 /* Half duplex; read and write/read supported */
/*
* CDI output styles
*/
#define CD_UNACKEDOUTPUT 0x00 /* No unitdata acknowledgements */
#define CD_ACKEDOUTPUT 0x01 /* Unitdata acknowledgements */
#define CD_PACEDOUTPUT 0x02 /* Unitdata acks as output timing hints */
/*
* CDI optional features
*/
#define CD_CANREAD 0x01 /* Read request supported on full duplex */
#define CD_CANDIAL 0x02 /* Dial information supported */
#define CD_AUTOALLOW 0x04 /* CD_INPUT_ALLOWED as soon as enabled */
#define CD_KEEPALIVE 0x08 /* Gcom: Don't send off at CD_DISABLE_REQ */
/*
* CDI provider style.
* The CDI provider style which determines whether a provider
* requires a CD_ATTACH_REQ to inform the provider which PPA
* user messages should be sent/received on.
*/
#define CD_STYLE1 0x00 /* PPA is implicitly bound by open(2) */
#define CD_STYLE2 0x01 /* PPA must be explicitly bound via CD_ATTACH_REQ */
#define CD_STYLE_1 CD_STYLE1 /* Gcom -- to match document */
#define CD_STYLE_2 CD_STYLE2 /* Gcom -- to match document */
/*
* Symbolic value for "no dialing information"
*/
#define CD_NODIAL 0x00
/*
* Actions to take with undelivered data in a CD_DISABLE_REQ or
CD_HALT_INPUT_REQ
*/
#define CD_FLUSH 0x00 /* Discard undelivered data */
#define CD_WAIT 0x01 /* Attempt to deliver unsent data */
#define CD_DELIVER 0x02
/*
* Address types
*/
#define CD_SPECIFIC 0x00 /* Specific address follows */
#define CD_BROADCAST 0x01 /* Broadcast; no address follows */
#define CD_IMPLICIT 0x02 /* No address or embedded address */
/*
* Error types for CD_BAD_FRAME_IND
*/
#define CD_FRMTOOLONG 0xFFFF /* frame overflowed rcv bfr */
#define CD_FRMNONOCTET 0xFFFE /* frame not octet-aligned */
#define CD_EMPTY_BFR 0xFFFD /* empty rcv buffer (not used) */
#define CD_BAD_CRC 0xFFFC /* CRC error */
#define CD_FRM_ABORTED 0xFFFB /* frame aborted */
#define CD_RCV_OVERRUN 0xFFFA /* receive overrun */
/*
* Modem signal bits for modem signal related requests and indications
*/
#define CD_DTR 0x01
#define CD_RTS 0x02
#define CD_DSR 0x04
#define CD_DCD 0x08
#define CD_CTS 0x10
#define CD_RI 0x20
/*
* CDI interface primitive definitions.
*
* Each primitive is sent as a Stream message. It is possible that
* the messages may be viewed as a sequence of bytes that have the
* following form without any padding. The structure definition
* of the following messages may have to change depending on the
* underlying hardware architecture and crossing of a hardware
* boundary with a different hardware architecture.
*
* Each message has the name defined followed by the
* Stream message type (M_PROTO, M_PCPROTO, M_DATA)
*/
typedef unsigned long cd_ulong;
typedef unsigned short cd_ushort;
/*
* LOCAL MANAGEMENT PRIMITIVES
*/
/*
* CD_INFO_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
} cd_info_req_t;
/*
* CD_INFO_ACK, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_ulong cd_max_sdu;
cd_ulong cd_min_sdu;
cd_ulong cd_class;
cd_ulong cd_duplex;
cd_ulong cd_output_style;
cd_ulong cd_features;
cd_ulong cd_addr_length;
cd_ulong cd_ppa_style;
} cd_info_ack_t;
/*
* CD_ATTACH_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_ppa;
} cd_attach_req_t;
/*
* CD_DETACH_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
} cd_detach_req_t;
/*
* CD_ENABLE_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_dial_type;
cd_ulong cd_dial_length;
cd_ulong cd_dial_offset;
} cd_enable_req_t;
/*
* CD_DISABLE_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_disposal;
} cd_disable_req_t;
/*
* CD_OK_ACK, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_long cd_correct_primitive;
} cd_ok_ack_t;
/*
* CD_ERROR_ACK, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_long cd_error_primitive;
cd_ulong cd_errno;
cd_ulong cd_explanation;
} cd_error_ack_t;
/*
* CD_ENABLE_CON, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
} cd_enable_con_t;
/*
* CD_DISABLE_CON, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
} cd_disable_con_t;
/*
* CD_ERROR_IND, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_ulong cd_errno;
cd_ulong cd_explanation;
} cd_error_ind_t;
/*
* DATA TRANSFER PRIMITIVES
*/
/*
* CD_ALLOW_INPUT_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
} cd_allow_input_req_t;
/*
* CD_READ_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_msec;
} cd_read_req_t;
/*
* CD_UNITDATA_REQ, optional M_PROTO type, with M_DATA block(s)
*/
typedef struct {
cd_long cd_primitive;
cd_ushort cd_addr_type;
cd_ushort cd_priority;
cd_ulong cd_dest_addr_length;
cd_ulong cd_dest_addr_offset;
} cd_unitdata_req_t;
/*
* CD_WRITE_READ_REQ, M_PROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_unitdata_req_t cd_unitdata_req;
cd_read_req_t cd_read_req;
} cd_write_read_req_t;
/*
* CD_UNITDATA_ACK, M_PROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
} cd_unitdata_ack_t;
/*
* CD_UNITDATA_IND, optional M_PROTO type, with M_DATA block(s)
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_ulong cd_src_addr_length;
cd_ulong cd_src_addr_offset;
cd_ushort cd_addr_type;
cd_ushort cd_priority;
cd_ulong cd_dest_addr_length;
cd_ulong cd_dest_addr_offset;
} cd_unitdata_ind_t;
/*
* CD_BAD_FRAME_IND, M_PROTO type, with M_DATA block(s)
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_state;
cd_ulong cd_error; /* what is wrong with the frame */
} cd_bad_frame_ind_t;
/*
* CD_MODEM_SIG_REQ, M_PROTO type
*
* Assert the modem signals with '1' bits in the cd_sigs mask and
* drop those signals with '0' bits. Sensed modem signals such
* as DCD or CTS are ignored.
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_sigs;
} cd_modem_sig_req_t;
/*
* CD_MODEM_SIG_IND, M_PROTO type
*
* The cd_sigs field reports the current state of the modem signals.
* This message is sent when modem signals change at the hardware
* interface. Only changes in signals selected by the cd_modem_sig_enb_req_t
* cd_sigs mask will be evaluated for purposes of change detection.
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_sigs;
} cd_modem_sig_ind_t;
typedef struct {
cd_long cd_primitive;
} cd_modem_sig_poll_t;
/*
* CD_HALT_INPUT_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
cd_ulong cd_disposal;
} cd_halt_input_req_t;
/*
* CD_ABORT_OUTPUT_REQ, M_PROTO or M_PCPROTO type
*/
typedef struct {
cd_long cd_primitive;
} cd_abort_output_req_t;
union CD_primitives {
cd_long cd_primitive;
cd_info_req_t info_req;
cd_info_ack_t info_ack;
cd_attach_req_t attach_req;
cd_detach_req_t detach_req;
cd_enable_req_t enable_req;
cd_disable_req_t disable_req;
cd_ok_ack_t ok_ack;
cd_error_ack_t error_ack;
cd_enable_con_t enable_con;
cd_disable_con_t disable_con;
cd_error_ind_t error_ind;
cd_allow_input_req_t allow_input_req;
cd_read_req_t read_req;
cd_unitdata_req_t unitdata_req;
cd_write_read_req_t write_read_req;
cd_unitdata_ack_t unitdata_ack;
cd_unitdata_ind_t unitdata_ind;
cd_halt_input_req_t halt_input_req;
};
#define CD_INFO_REQ_SIZE sizeof(cd_info_req_t)
#define CD_INFO_ACK_SIZE sizeof(cd_info_ack_t)
#define CD_ATTACH_REQ_SIZE sizeof(cd_attach_req_t)
#define CD_DETACH_REQ_SIZE sizeof(cd_detach_req_t)
#define CD_ENABLE_REQ_SIZE sizeof(cd_enable_req_t)
#define CD_DISABLE_REQ_SIZE sizeof(cd_disable_req_t)
#define CD_OK_ACK_SIZE sizeof(cd_ok_ack_t)
#define CD_ERROR_ACK_SIZE sizeof(cd_error_ack_t)
#define CD_ALLOW_INPUT_REQ_SIZE sizeof(cd_allow_input_req_t)
#define CD_READ_REQ_SIZE sizeof(cd_read_req_t)
#define CD_UNITDATA_REQ_SIZE sizeof(cd_unitdata_req_t)
#define CD_WRITE_READ_REQ_SIZE sizeof(cd_write_read_req_t)
#define CD_UNITDATA_ACK_SIZE sizeof(cd_unitdata_ack_t)
#define CD_UNITDATA_IND_SIZE sizeof(cd_unitdata_ind_t)
#define CD_HALT_INPUT_REQ_SIZE sizeof(cd_halt_input_req_t)
#define CD_ABORT_OUTPUT_REQ_SIZE sizeof(cd_abort_output_req_t)
#define CD_ERROR_IND_SIZE sizeof(cd_error_ind_t)
#define CD_ENABLE_CON_SIZE sizeof(cd_enable_con_t)
#define CD_DISABLE_CON_SIZE sizeof(cd_disable_con_t)
#define CD_BAD_FRAME_IND_SIZE sizeof(cd_bad_frame_ind_t)
#define CD_MODEM_SIG_REQ_SIZE sizeof(cd_modem_sig_req_t)
#define CD_MODEM_SIG_IND_SIZE sizeof(cd_modem_sig_ind_t)
#define CD_MODEM_SIG_POLL_SIZE sizeof(cd_modem_sig_poll_t)
#endif /* _SYS_CDI_H */
|
|||||||||||||||||||||||||||
|
OpenSS7 SS7 for the Common Man |
Home | Overview | Status | News | Documentation | Resources | About | ||||||||||||||||||||
|
© Copyright 1997-2004,OpenSS7 Corporation, All Rights Reserved. |
|||||||||||||||||||||||||||