📄 cdi.h
字号:
#ifndef _SYS_CDI_H#define _SYS_CDI_H#ident "@(#) cdi.h 1.20 11/17/03"/* This file can be processed by doxygen(1). *//// @file/// @brief This header file provides the Communications Device Interface (CDI)./* cdi.h header for Communications Device Interface Copyright (c) 1989 NCR Comten This file distributed by Gcom, Inc with permission of NCR Comten *//* 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 */#define CD_NOT_AUTH 0x0A /* Not authorized, unusable *//* 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) */#ifdef __LP64__typedef int32_t cd_long;typedef u_int32_t cd_ulong;typedef u_int16_t cd_ushort;#else /* __LP64__ */typedef long cd_long;typedef ulong cd_ulong;typedef ushort cd_ushort;#endif /* __LP64__ *//* LOCAL MANAGEMENT PRIMITIVES *//* CD_INFO_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive;} cd_info_req_t;/* CD_INFO_ACK, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong 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_ulong cd_primitive; cd_ulong cd_ppa;} cd_attach_req_t;/* CD_DETACH_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive;} cd_detach_req_t;/* CD_ENABLE_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong 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_ulong cd_primitive; cd_ulong cd_disposal;} cd_disable_req_t;/* CD_OK_ACK, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive; cd_ulong cd_state; cd_ulong cd_correct_primitive;} cd_ok_ack_t;/* CD_ERROR_ACK, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive; cd_ulong cd_state; cd_ulong 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_ulong cd_primitive; cd_ulong cd_state;} cd_enable_con_t;/* CD_DISABLE_CON, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive; cd_ulong cd_state;} cd_disable_con_t;/* CD_ERROR_IND, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong 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_ulong cd_primitive;} cd_allow_input_req_t;/* CD_READ_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong 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_ulong 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_ulong 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_ulong 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_ulong 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_ulong 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_ulong 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_ulong cd_primitive; cd_ulong cd_sigs;} cd_modem_sig_ind_t;typedef struct { cd_ulong cd_primitive;} cd_modem_sig_poll_t;/* CD_HALT_INPUT_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive; cd_ulong cd_disposal;} cd_halt_input_req_t;/* CD_ABORT_OUTPUT_REQ, M_PROTO or M_PCPROTO type */typedef struct { cd_ulong cd_primitive;} cd_abort_output_req_t;union CD_primitives { cd_ulong 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 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -