wanpipe/patches/kdrivers/include/sdla_asyhdlc.h

581 lines
27 KiB
C

/*
***********************************************************************************
* *
* ASYAPI.H - the 'C' header file for the Sangoma S508/S514 asynchronous code API. *
* *
***********************************************************************************
*/
#ifndef _SDLA_ASYHDLC_H_
#define _SDLA_ASYHDLC_H_
#pragma pack(1)
/* ----------------------------------------------------------------------------
* Constants defining the shared memory control block (mailbox)
* --------------------------------------------------------------------------*/
#define PRI_BASE_ADDR_MB_STRUCT 0xE000 /* the base address of the mailbox structure (primary port) */
#define SEC_BASE_ADDR_MB_STRUCT 0xE800 /* the base address of the mailbox structure (secondary port) */
#define NUMBER_MB_RESERVED_BYTES 0x0B /* the number of reserved bytes in the mailbox header area */
#define SIZEOF_MB_DATA_BFR 2032 /* the size of the actual mailbox data area */
/* the control block mailbox structure */
typedef struct {
unsigned char opp_flag; /* the opp flag */
unsigned char command; /* the user command */
unsigned short buffer_length; /* the data length */
unsigned char return_code; /* the return code */
char MB_reserved[NUMBER_MB_RESERVED_BYTES]; /* reserved for later use */
char data[SIZEOF_MB_DATA_BFR]; /* the data area */
} ASY_MAILBOX_STRUCT;
/* ----------------------------------------------------------------------------
* Interface commands
* --------------------------------------------------------------------------*/
/* interface commands */
#define READ_GLOBAL_EXCEPTION_CONDITION 0x01 /* read a global exception condition from the adapter */
#define SET_GLOBAL_CONFIGURATION 0x02 /* set the global operational configuration */
#define READ_GLOBAL_CONFIGURATION 0x03 /* read the global configuration */
#define READ_GLOBAL_STATISTICS 0x04 /* retrieve the global statistics */
#define FLUSH_GLOBAL_STATISTICS 0x05 /* flush the global statistics */
#define SET_MODEM_STATUS 0x06 /* set the status of DTR and/or RTS */
#define READ_MODEM_STATUS 0x07 /* read the current status of CTS and DCD */
#define READ_COMMS_ERROR_STATS 0x08 /* read the communication error statistics */
#define FLUSH_COMMS_ERROR_STATS 0x09 /* flush the communication error statistics */
#define READ_ASY_CODE_VERSION 0x20 /* read the code version */
#define SET_ASY_INTERRUPT_TRIGGERS 0x30 /* set the application interrupt triggers */
#define READ_ASY_INTERRUPT_TRIGGERS 0x31 /* read the application interrupt trigger configuration */
#define SET_ASY_CONFIGURATION 0xE2 /* set the asychronous operational configuration */
#define READ_ASY_CONFIGURATION 0xE3 /* read the current asychronous operational configuration */
#define ENABLE_ASY_COMMUNICATIONS 0xE4 /* enable asychronous communications */
#define DISABLE_ASY_COMMUNICATIONS 0xE5 /* disable asychronous communications */
#define READ_ASY_OPERATIONAL_STATS 0xE7 /* retrieve the asychronous operational statistics */
#define FLUSH_ASY_OPERATIONAL_STATS 0xE8 /* flush the asychronous operational statistics */
#define TRANSMIT_ASY_BREAK_SIGNAL 0xEC /* transmit an asychronous break signal */
/* ----------------------------------------------------------------------------
* Return codes from interface commands
* --------------------------------------------------------------------------*/
#define OK 0x00 /* the interface command was successful */
#define COMMAND_OK 0x00 /* the interface command was successful */
/* return codes from global interface commands */
#define NO_GLOBAL_EXCEP_COND_TO_REPORT 0x01 /* there is no global exception condition to report */
#define LGTH_GLOBAL_CFG_DATA_INVALID 0x01 /* the length of the passed global configuration data is invalid */
#define IRQ_TIMEOUT_VALUE_INVALID 0x02 /* an invalid application IRQ timeout value was selected */
#define ADAPTER_OPERATING_FREQ_INVALID 0x03 /* an invalid adapter operating frequency was selected */
#define TRANSMIT_TIMEOUT_INVALID 0x04 /* the frame transmit timeout is invalid */
/* return codes from command READ_GLOBAL_EXCEPTION_CONDITION */
#define EXCEP_MODEM_STATUS_CHANGE 0x10 /* a modem status change occurred */
#define EXCEP_APP_IRQ_TIMEOUT 0x12 /* an application IRQ timeout has occurred */
#define EXCEP_ASY_BREAK_RECEIVED 0x17 /* a break sequence has been received (asynchronous mode only) */
/* return codes from interface commands */
#define xxxCOMMS_DISABLED 0x21 /* communications are not currently enabled */
#define xxxCOMMS_ENABLED 0x21 /* communications are currently enabled */
#define LGTH_INT_TRIGGERS_DATA_INVALID 0x22 /* the length of the passed interrupt trigger data is invalid */
#define INVALID_IRQ_SELECTED 0x23 /* an invalid IRQ was selected in the SET_ASY_INTERRUPT_TRIGGERS */
#define IRQ_TMR_VALUE_INVALID 0x24 /* an invalid application IRQ timer value was selected */
#define DISABLE_ASY_COMMS_BEFORE_CFG 0xE1 /* communications must be disabled before setting the configuration */
#define ASY_COMMS_ENABLED 0xE1 /* communications are currently enabled */
#define ASY_COMMS_DISABLED 0xE1 /* communications are currently disabled */
#define ASY_CFG_BEFORE_COMMS_ENABLED 0xE2 /* perform a SET_ASY_CONFIGURATION before enabling comms */
#define LGTH_ASY_CFG_DATA_INVALID 0xE2 /* the length of the passed configuration data is invalid */
#define INVALID_ASY_CFG_DATA 0xE3 /* the passed configuration data is invalid */
#define ASY_BREAK_SIGNAL_BUSY 0xEC /* a break signal is being transmitted */
#define INVALID_COMMAND 0xFF /* the defined interface command is invalid */
/* ----------------------------------------------------------------------------
* Constants for the READ_GLOBAL_EXCEPTION_CONDITION command
* --------------------------------------------------------------------------*/
/* the global exception condition structure for handling a modem status change */
typedef struct {
unsigned char modem_status_change; /* the modem status change */
} GLOBAL_EX_MODEM_STRUCT;
/* settings for the 'modem_status_change' */
#define CHANGE_IN_DCD 0x04 /* a change in DCD occured */
#define CHANGE_IN_CTS 0x10 /* a change in CTS occured */
/* ----------------------------------------------------------------------------
* Constants for the SET_GLOBAL_CONFIGURATION/READ_GLOBAL_CONFIGURATION commands
* --------------------------------------------------------------------------*/
/* the global configuration structure */
typedef struct {
unsigned short adapter_config_options; /* adapter configuration options */
unsigned short app_IRQ_timeout; /* application IRQ timeout */
unsigned long adapter_operating_frequency; /* adapter operating frequency */
unsigned short frame_transmit_timeout; /* frame transmission timeout */
} GLOBAL_CONFIGURATION_STRUCT;
/* settings for the 'adapter_config_options' */
#define ADPTR_CFG_S514 0x0001 /* S514 adapter */
/* settings for the 'app_IRQ_timeout' */
#define MAX_APP_IRQ_TIMEOUT_VALUE 5000 /* the maximum permitted IRQ timeout */
/* ----------------------------------------------------------------------------
* Constants for the READ_GLOBAL_STATISTICS command
* --------------------------------------------------------------------------*/
/* the global statistics structure */
typedef struct {
unsigned short app_IRQ_timeout_count; /* application IRQ timeout count */
unsigned short FT1_INS_alarm_count; /* FT1 in-service/alarm condition count */
} GLOBAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the SET_MODEM_STATUS command
* --------------------------------------------------------------------------*/
/* the set modem status structure */
typedef struct {
unsigned char output_modem_status; /* the output modem status */
} SET_MODEM_STATUS_STRUCT;
/* settings for the 'output_modem_status' */
#define SET_DTR_HIGH 0x01 /* set DTR high */
#define SET_RTS_HIGH 0x02 /* set RTS high */
/* ----------------------------------------------------------------------------
* Constants for the READ_MODEM_STATUS command
* --------------------------------------------------------------------------*/
/* the read modem status structure */
typedef struct {
unsigned char input_modem_status; /* the input modem status */
} READ_MODEM_STATUS_STRUCT;
/* settings for the 'input_modem_status' */
#define DCD_HIGH 0x08 /* DCD is high */
#define CTS_HIGH 0x20 /* CTS is high */
/* ----------------------------------------------------------------------------
* Constants for the READ_COMMS_ERROR_STATS command
* --------------------------------------------------------------------------*/
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count; /* receiver overrun error count */
unsigned short Rx_parity_err_count; /* receiver parity error count */
unsigned short Rx_framing_err_count; /* framing errors received count */
unsigned short DCD_state_change_count; /* DCD state change count */
unsigned short CTS_state_change_count; /* CTS state change count */
} COMMS_ERROR_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for using application interrupts
* --------------------------------------------------------------------------*/
/* the structure used for the SET_ASY_INTERRUPT_TRIGGERS/READ_ASY_INTERRUPT_TRIGGERS command */
typedef struct {
unsigned char interrupt_triggers; /* interrupt trigger configuration */
unsigned char IRQ; /* IRQ to be used */
unsigned short interrupt_timer; /* interrupt timer */
unsigned short misc_interrupt_bits; /* miscellaneous interrupt bits */
} ASY_INT_TRIGGERS_STRUCT;
/* 'interrupt_triggers' bit settings */
#define APP_INT_ON_RX 0x01 /* interrupt on reception */
#define APP_INT_ON_RX_FRAME APP_INT_ON_RX
#define APP_INT_ON_TX 0x02 /* interrupt when data may be transmitted */
#define APP_INT_ON_COMMAND_COMPLETE 0x04 /* interrupt when an interface command is complete */
#define APP_INT_ON_TIMER 0x08 /* interrupt on a defined millisecond timeout */
#define APP_INT_ON_GLOBAL_EXCEP_COND 0x10 /* interrupt on a global exception condition */
/* 'interrupt_timer' limitation */
#define MAX_INTERRUPT_TIMER_VALUE 60000 /* the maximum permitted timer interrupt value */
/* interrupt types indicated at 'interrupt_type' byte of the INTERRUPT_INFORMATION_STRUCT */
#define NO_APP_INTS_PEND 0x00 /* no interrups are pending */
#define RX_APP_INT_PEND 0x01 /* a receive interrupt is pending */
#define TX_APP_INT_PEND 0x02 /* a transmit interrupt is pending */
#define COMMAND_COMPLETE_APP_INT_PEND 0x04 /* a 'command complete' interrupt is pending */
#define TIMER_APP_INT_PEND 0x08 /* a timer interrupt is pending */
#define GLOBAL_EXCEP_COND_APP_INT_PEND 0x10 /* a global exception condition interrupt is pending */
/* ----------------------------------------------------------------------------
* Constants for the SET_ASY_CONFIGURATION/READ_ASY_CONFIGURATION command
* --------------------------------------------------------------------------*/
/* the asynchronous configuration structure */
typedef struct {
unsigned long baud_rate; /* the baud rate */
unsigned short line_config_options; /* line configuration options */
unsigned short modem_config_options; /* modem configuration options */
unsigned short API_options; /* asynchronous API options */
unsigned short protocol_options; /* asynchronous protocol options */
unsigned short Tx_bits_per_char; /* number of bits per transmitted character */
unsigned short Rx_bits_per_char; /* number of bits per received character */
unsigned short stop_bits; /* number of stop bits per character */
unsigned short parity; /* parity definition */
unsigned short break_timer; /* the break signal timer */
unsigned short Rx_inter_char_timer; /* the receive inter-character timer */
unsigned short Rx_complete_length; /* the receive 'buffer complete' length */
unsigned short XON_char; /* the XON character */
unsigned short XOFF_char; /* the XOFF character */
unsigned short statistics_options; /* operational statistics options */
unsigned long ptr_shared_mem_info_struct; /* a pointer to the shared memory area information structure */
unsigned long ptr_asy_Tx_stat_el_cfg_struct; /* a pointer to the transmit status element configuration structure */
unsigned long ptr_asy_Rx_stat_el_cfg_struct; /* a pointer to the receive status element configuration structure */
} ASY_CONFIGURATION_STRUCT;
/* settings for the 'line_config_options' */
#define INTERFACE_LEVEL_V35 0x0000 /* V.35 interface level */
#define INTERFACE_LEVEL_RS232 0x0001 /* RS-232 interface level */
/* settings for the 'modem_config_options' */
#define DONT_RAISE_DTR_RTS_ON_EN_COMMS 0x0001 /* don't automatically raise DTR and RTS when performing an */
/* ENABLE_ASY_COMMUNICATIONS command */
#define DONT_REPORT_CHG_IN_MODEM_STAT 0x0002 /* don't report changes in modem status to the application */
/* settings for the 'asy_statistics_options' */
#define ASY_TX_THROUGHPUT_STAT 0x0004 /* compute the transmit throughput */
#define ASY_RX_THROUGHPUT_STAT 0x0008 /* compute the receive throughput */
/* permitted minimum and maximum values for setting the asynchronous configuration */
#define MIN_ASY_BAUD_RATE 50 /* maximum baud rate */
#define MAX_ASY_BAUD_RATE 250000 /* minimum baud rate */
#define MIN_ASY_BITS_PER_CHAR 5 /* minimum number of bits per character */
#define MAX_ASY_BITS_PER_CHAR 8 /* maximum number of bits per character */
#define MAX_BREAK_TMR_VAL 5000 /* maximum break signal timer */
#define MAX_ASY_RX_INTER_CHAR_TMR 30000 /* maximum receive inter-character timer */
#define MAX_ASY_RX_CPLT_LENGTH 2000 /* maximum receive 'length complete' value */
/* bit settings for the 'asy_API_options' */
#define ASY_RX_DATA_TRANSPARENT 0x0001 /* do not strip parity and unused bits from received characters */
/* bit settings for the 'asy_protocol_options' */
#define ASY_RTS_HS_FOR_RX 0x0001 /* RTS handshaking is used for reception control */
#define ASY_XON_XOFF_HS_FOR_RX 0x0002 /* XON/XOFF handshaking is used for reception control */
#define ASY_XON_XOFF_HS_FOR_TX 0x0004 /* XON/XOFF handshaking is used for transmission control */
#define ASY_DCD_HS_FOR_TX 0x0008 /* DCD handshaking is used for transmission control */
#define ASY_CTS_HS_FOR_TX 0x0020 /* CTS handshaking is used for transmission control */
#define ASY_HDLC_FRAMING 0x0100 /* use HDLC framing */
#define ASY_HDLC_PASS_RX_CRC_TO_APP 0x0200 /* pass received HDLC CRC bytes to the application */
#define ASY_HDLC_PASS_RX_BAD_TO_APP 0x0400 /* pass received bad frames to the application */
#define ASY_DIS_RX_WHEN_TX 0x1000 /* disable the receiver when transmitting */
/* bit settings for the 'stop_bits' definition */
#define ONE_STOP_BIT 1 /* representation for 1 stop bit */
#define TWO_STOP_BITS 2 /* representation for 2 stop bits */
#define ONE_AND_A_HALF_STOP_BITS 3 /* representation for 1.5 stop bits */
/* bit settings for the 'parity' definition */
#define NO_PARITY 0 /* representation for no parity */
#define ODD_PARITY 1 /* representation for odd parity */
#define EVEN_PARITY 2 /* representation for even parity */
/* ----------------------------------------------------------------------------
* Constants for the READ_COMMS_ERROR_STATS command (asynchronous mode)
* --------------------------------------------------------------------------*/
/* the communications error statistics structure */
typedef struct {
unsigned short Rx_overrun_err_count; /* receiver overrun error count */
unsigned short Rx_parity_err_count; /* parity errors received count */
unsigned short Rx_framing_err_count; /* framing errors received count */
unsigned short DCD_state_change_count; /* DCD state change count */
unsigned short CTS_state_change_count; /* CTS state change count */
} ASY_COMMS_ERROR_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for the READ_ASY_OPERATIONAL_STATS command
* --------------------------------------------------------------------------*/
/* the asynchronous operational statistics structure */
typedef struct {
/* transmission statistics */
unsigned long blocks_Tx_count; /* number of blocks transmitted */
unsigned long bytes_Tx_count; /* number of bytes transmitted */
unsigned long Tx_throughput; /* transmit throughput */
unsigned long no_ms_for_Tx_thruput_comp; /* millisecond time used for the Tx throughput computation */
unsigned long Tx_block_discard_lgth_err_count;/* number of blocks discarded (length error) */
/* reception statistics */
unsigned long blocks_Rx_count; /* number of blocks received */
unsigned long bytes_Rx_count; /* number of bytes received */
unsigned long Rx_throughput; /* receive throughput */
unsigned long no_ms_for_Rx_thruput_comp; /* millisecond time used for the Rx throughput computation */
unsigned long Rx_bytes_discard_count; /* received Data bytes discarded */
/* handshaking protocol statistics */
unsigned short XON_chars_Tx_count; /* number of XON characters transmitted */
unsigned short XOFF_chars_Tx_count; /* number of XOFF characters transmitted */
unsigned short XON_chars_Rx_count; /* number of XON characters received */
unsigned short XOFF_chars_Rx_count; /* number of XOFF characters received */
unsigned short Tx_halt_modem_low_count; /* number of times Tx halted (modem line low) */
unsigned short Rx_halt_RTS_low_count; /* number of times Rx halted by setting RTS low */
/* break statistics */
unsigned short break_Tx_count; /* number of break sequences transmitted */
unsigned short break_Rx_count; /* number of break sequences received */
} ASY_OPERATIONAL_STATS_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for data transmission
* --------------------------------------------------------------------------*/
/* the data block transmit status element configuration structure */
typedef struct {
unsigned short number_Tx_status_elements; /* number of transmit status elements */
unsigned long base_addr_Tx_status_elements; /* base address of the transmit element list */
unsigned long next_Tx_status_element_to_use; /* pointer to the next transmit element to be used */
} ASY_TX_STATUS_EL_CFG_STRUCT;
/* the data block transmit status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short data_length; /* length of the block to be transmitted */
unsigned char misc_bits; /* miscellaneous transmit bits */
unsigned char reserved[8]; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} ASY_DATA_TX_STATUS_EL_STRUCT;
/* ----------------------------------------------------------------------------
* Constants for data reception
* --------------------------------------------------------------------------*/
/* the data block receive status element configuration structure */
typedef struct {
unsigned short number_Rx_status_elements; /* number of receive status elements */
unsigned long base_addr_Rx_status_elements; /* base address of the receive element list */
unsigned long next_Rx_status_element_to_use; /* pointer to the next receive element to be used */
unsigned long base_addr_Rx_buffer; /* base address of the receive data buffer */
unsigned long end_addr_Rx_buffer; /* end address of the receive data buffer */
} ASY_RX_STATUS_EL_CFG_STRUCT;
/* the data block receive status element structure */
typedef struct {
unsigned char opp_flag; /* opp flag */
unsigned short data_length; /* length of the received data block */
unsigned char misc_bits; /* miscellaneous receive bits */
unsigned short time_stamp; /* receive time stamp (HDLC_STREAMING_MODE) */
unsigned short data_buffered; /* the number of data bytes still buffered */
unsigned char reserved[4]; /* reserved for internal use */
unsigned long ptr_data_bfr; /* pointer to the data area */
} ASY_DATA_RX_STATUS_EL_STRUCT;
/* settings for the 'misc_bits' */
#define RX_HDLC_FRM_ABORT 0x01 /* the incoming frame was aborted */
#define RX_HDLC_FRM_CRC_ERROR 0x02 /* the incoming frame has a CRC error */
#define RX_FRM_OVERRUN_ERROR 0x04 /* the incoming frame has an overrun error */
#define RX_HDLC_FRM_SHORT_ERROR 0x10 /* the incoming frame was too short */
#define RX_HDLC_FRM_LONG_ERROR 0x20 /* the incoming frame was too long */
/* ----------------------------------------------------------------------------
* Constants defining the shared memory information area
* --------------------------------------------------------------------------*/
/* the global information structure */
typedef struct {
unsigned char global_status; /* global status */
unsigned char modem_status; /* current modem status */
unsigned char global_excep_conditions; /* global exception conditions */
unsigned char glob_info_reserved[5]; /* reserved */
unsigned char code_name[4]; /* code name */
unsigned char code_version[4]; /* code version */
} GLOBAL_INFORMATION_STRUCT;
/* the ASY information structure */
typedef struct {
unsigned char asy_rx_avail;
unsigned char asy_info_reserved[15]; /* reserved */
} ASY_INFORMATION_STRUCT;
/* the interrupt information structure */
typedef struct {
unsigned char interrupt_type; /* type of interrupt triggered */
unsigned char interrupt_permission; /* interrupt permission mask */
unsigned char int_info_reserved[14]; /* reserved */
} INTERRUPT_INFORMATION_STRUCT;
/* the FT1 information structure */
typedef struct {
unsigned char parallel_port_A_input; /* input - parallel port A */
unsigned char parallel_port_B_input; /* input - parallel port B */
unsigned char FT1_INS_alarm_condition; /* the current FT1 in-service/alarm condition */
unsigned char FT1_info_reserved[13]; /* reserved */
} FT1_INFORMATION_STRUCT;
/* the shared memory area information structure */
typedef struct {
GLOBAL_INFORMATION_STRUCT global_info_struct; /* the global information structure */
ASY_INFORMATION_STRUCT async_info_struct; /* the asynchronous information structure */
INTERRUPT_INFORMATION_STRUCT interrupt_info_struct;/* the interrupt information structure */
FT1_INFORMATION_STRUCT FT1_info_struct; /* the FT1 information structure */
} SHARED_MEMORY_INFO_STRUCT;
#define MAX_LGTH_HDLC_FRAME 2048 /* the maximum permitted length of an HDLC frame */
/* ----------------------------------------------------------------------------
* HDLC Interface commands
* --------------------------------------------------------------------------*/
#define READ_HDLC_OPERATIONAL_STATS 0xF0 /* retrieve the HDLC operational statistics */
#define FLUSH_HDLC_OPERATIONAL_STATS 0xF1 /* flush the HDLC operational statistics */
/* the HDLC operational statistics structure (returned on READ_HDLC_OPERATIONAL_STATS command) */
typedef struct {
/* frame transmission statistics */
unsigned long frames_Tx_count; /* number of frames transmitted */
unsigned long bytes_Tx_count; /* number of bytes transmitted */
unsigned long Tx_frame_discard_lgth_err_count;/* number of frames discarded (length error) */
/* frame reception statistics */
unsigned long frames_Rx_count; /* number of frames received */
unsigned long bytes_Rx_count; /* number of bytes received */
unsigned long Rx_frame_short_count; /* received frames too short */
unsigned long Rx_frame_long_count; /* received frames too long */
unsigned long Rx_frame_discard_full_count; /* received frames discarded (buffer full) */
unsigned long CRC_error_count; /* receiver CRC error count */
unsigned long Rx_abort_count; /* abort frames received count */
} HDLC_OPERATIONAL_STATS_STRUCT;
#define UDPMGMT_SIGNATURE "CTPIPEAB"
#define UDPMGMT_SIGNATURE_LEN 8
/* UDP/IP packet (for UDP management) layout */
/*
typedef struct {
unsigned char reserved[2] ;
unsigned short ip_length ;
unsigned char reserved2[4] ;
unsigned char ip_ttl ;
unsigned char ip_protocol ;
unsigned short ip_checksum ;
unsigned long ip_src_address ;
unsigned long ip_dst_address ;
unsigned short udp_src_port ;
unsigned short udp_dst_port ;
unsigned short udp_length ;
unsigned short udp_checksum ;
udp_management_packet_t um_packet ;
} ip_packet_t;
*/
/* valid ip_protocol for UDP management */
#define UDPMGMT_UDP_PROTOCOL 0x11
#if 0
typedef struct {
unsigned char status ;
unsigned char data_avail ;
unsigned short real_length ;
unsigned short time_stamp ;
unsigned char data[1] ;
} trace_pkt_t;
#endif
typedef struct {
unsigned char error_flag ;
unsigned short time_stamp ;
unsigned char reserved[13] ;
} api_rx_hdr_t;
typedef struct {
api_rx_hdr_t api_rx_hdr ;
unsigned char data[1] ;
} api_rx_element_t;
typedef struct {
unsigned char attr ;
unsigned char misc_Tx_bits ;
unsigned char reserved[14] ;
} api_tx_hdr_t;
typedef struct {
api_tx_hdr_t api_tx_hdr ;
unsigned char data[1] ;
} api_tx_element_t;
/* Special UDP drivers management commands */
#define CPIPE_ENABLE_TRACING 0x50
#define CPIPE_DISABLE_TRACING 0x51
#define CPIPE_GET_TRACE_INFO 0x52
#define CPIPE_GET_IBA_DATA 0x53
#define CPIPE_FT1_READ_STATUS 0x54
#define CPIPE_DRIVER_STAT_IFSEND 0x55
#define CPIPE_DRIVER_STAT_INTR 0x56
#define CPIPE_DRIVER_STAT_GEN 0x57
#define CPIPE_FLUSH_DRIVER_STATS 0x58
#define CPIPE_ROUTER_UP_TIME 0x59
#if 0
#define CPIPE_MPPP_TRACE_ENABLE 0x60
#define CPIPE_MPPP_TRACE_DISABLE 0x61
#define CPIPE_TE1_56K_STAT 0x62 /* TE1_56K */
#define CPIPE_GET_MEDIA_TYPE 0x63 /* TE1_56K */
#define CPIPE_FLUSH_TE1_PMON 0x64 /* TE1 */
#define CPIPE_READ_REGISTER 0x65 /* TE1_56K */
#define CPIPE_TE1_CFG 0x66 /* TE1 */
#endif
/* Driver specific commands for API */
#define CHDLC_READ_TRACE_DATA 0xE4 /* read trace data */
#define TRACE_ALL 0x00
#define TRACE_PROT 0x01
#define TRACE_DATA 0x02
#define SIOC_ASYHDLC_RX_AVAIL_CMD SIOC_WANPIPE_DEVPRIVATE
#define SIOC_GET_HDLC_RECEIVER_STATUS SIOC_ASYHDLC_RX_AVAIL_CMD
/* Return codes for SIOC_GET_HDLC_RECEIVER_STATUS cmd */
enum {
HDLC_RX_IN_PROCESS,
NO_HDLC_RX_IN_PROCESS
};
#pragma pack()
#endif