00001
00035 #ifndef __WANPIPE_API_IFACE_H_
00036 #define __WANPIPE_API_IFACE_H_
00037
00038 #include "wanpipe_api_hdr.h"
00039
00044 #if defined(__WINDOWS__)
00045 typedef HANDLE sng_fd_t;
00046 #else
00047 typedef int sng_fd_t;
00048 #endif
00049
00050
00063 #define WP_API_FEATURE_DTMF_EVENTS 1
00064 #define WP_API_FEATURE_FE_ALARM 1
00065 #define WP_API_FEATURE_EVENTS 1
00066 #define WP_API_FEATURE_LINK_STATUS 1
00067 #define WP_API_FEATURE_POL_REV 1
00068
00069
00070
00078 enum WANPIPE_IOCTL_CODE {
00079 WANPIPE_IOCTL_WRITE=1,
00080 WANPIPE_IOCTL_READ,
00081 WANPIPE_IOCTL_MGMT,
00082 WANPIPE_IOCTL_SET_IDLE_TX_BUFFER,
00083 WANPIPE_IOCTL_API_POLL,
00084 WANPIPE_IOCTL_SET_SHARED_EVENT,
00085 WANPIPE_IOCTL_PORT_MGMT,
00086 WANPIPE_IOCTL_PORT_CONFIG,
00087 WANPIPE_IOCTL_API_CMD,
00088 WANPIPE_IOCTL_PIPEMON,
00089 WANPIPE_IOCTL_SNMP,
00090 WANPIPE_IOCTL_SNMP_IFSPEED,
00091 WANPIPE_IOCTL_DEVEL,
00092 WANPIPE_IOCTL_WRITE_NON_BLOCKING,
00093 WANPIPE_IOCTL_READ_NON_BLOCKING,
00094 WANPIPE_IOCTL_CDEV_CTRL
00095 };
00096
00097
00102 enum WANPIPE_IOCTL_PIPEMON_CMDS {
00103 WANPIPEMON_ROUTER_UP_TIME = 0x50,
00104 WANPIPEMON_ENABLE_TRACING,
00105 WANPIPEMON_DISABLE_TRACING,
00106 WANPIPEMON_GET_TRACE_INFO,
00107 WANPIPEMON_READ_CODE_VERSION,
00108 WANPIPEMON_FLUSH_OPERATIONAL_STATS,
00109 WANPIPEMON_OPERATIONAL_STATS,
00110 WANPIPEMON_READ_OPERATIONAL_STATS,
00111 WANPIPEMON_READ_CONFIGURATION,
00112 WANPIPEMON_READ_COMMS_ERROR_STATS,
00113 WANPIPEMON_FLUSH_COMMS_ERROR_STATS,
00114 WANPIPEMON_AFT_LINK_STATUS,
00115 WANPIPEMON_AFT_MODEM_STATUS,
00116 WANPIPEMON_AFT_HWEC_STATUS,
00117 WANPIPEMON_DIGITAL_LOOPTEST,
00118 WANPIPEMON_SET_FT1_MODE,
00120 WANPIPEMON_GET_OPEN_HANDLES_COUNTER,
00121 WANPIPEMON_GET_CARD_TYPE,
00122 WANPIPEMON_API_NOT_USED,
00123 WANPIPEMON_GET_HW_MAC_ADDR,
00124 WANPIPEMON_FLUSH_TX_BUFFERS,
00125 WANPIPEMON_EC_IOCTL,
00126 WANPIPEMON_SET_RBS_BITS,
00127 WANPIPEMON_GET_RBS_BITS,
00128 WANPIPEMON_AFT_CUSTOMER_ID,
00129 WANPIPEMON_FT1_READ_STATUS,
00131 WANPIPEMON_DRIVER_STAT_IFSEND,
00132 WANPIPEMON_DRIVER_STAT_INTR,
00133 WANPIPEMON_DRIVER_STAT_GEN,
00134 WANPIPEMON_FLUSH_DRIVER_STATS,
00135 WANPIPEMON_GET_IBA_DATA,
00136 WANPIPEMON_TDM_API,
00139
00140 WANPIPEMON_CHAN_SEQ_DEBUGGING,
00142 WANPIPEMON_PROTOCOL_PRIVATE
00143 };
00144
00145
00150 enum wanpipe_api_cmds
00151 {
00152
00153 WP_API_CMD_GET_USR_MTU_MRU,
00154 WP_API_CMD_SET_USR_PERIOD,
00155 WP_API_CMD_GET_USR_PERIOD,
00156 WP_API_CMD_SET_HW_MTU_MRU,
00157 WP_API_CMD_GET_HW_MTU_MRU,
00158 WP_API_CMD_SET_CODEC,
00159 WP_API_CMD_GET_CODEC,
00160 WP_API_CMD_SET_POWER_LEVEL,
00161 WP_API_CMD_GET_POWER_LEVEL,
00162 WP_API_CMD_TOGGLE_RX,
00163 WP_API_CMD_TOGGLE_TX,
00164 WP_API_CMD_GET_HW_CODING,
00165 WP_API_CMD_SET_HW_CODING,
00166 WP_API_CMD_GET_FULL_CFG,
00167 WP_API_CMD_SET_EC_TAP,
00168 WP_API_CMD_GET_EC_TAP,
00169 WP_API_CMD_ENABLE_RBS_EVENTS,
00170 WP_API_CMD_DISABLE_RBS_EVENTS,
00171 WP_API_CMD_WRITE_RBS_BITS,
00172 WP_API_CMD_READ_RBS_BITS,
00173 WP_API_CMD_GET_STATS,
00174 WP_API_CMD_FLUSH_BUFFERS,
00175 WP_API_CMD_FLUSH_TX_BUFFERS,
00176 WP_API_CMD_FLUSH_RX_BUFFERS,
00177 WP_API_CMD_FLUSH_EVENT_BUFFERS,
00178 WP_API_CMD_READ_EVENT,
00179 WP_API_CMD_SET_EVENT,
00180 WP_API_CMD_SET_RX_GAINS,
00181 WP_API_CMD_SET_TX_GAINS,
00182 WP_API_CMD_CLEAR_RX_GAINS,
00183 WP_API_CMD_CLEAR_TX_GAINS,
00184 WP_API_CMD_GET_FE_ALARMS,
00185 WP_API_CMD_ENABLE_HWEC,
00186 WP_API_CMD_DISABLE_HWEC,
00187 WP_API_CMD_SET_FE_STATUS,
00188 WP_API_CMD_GET_FE_STATUS,
00189 WP_API_CMD_GET_HW_DTMF,
00190 WP_API_CMD_DRV_MGMNT,
00191 WP_API_CMD_RESET_STATS,
00192 WP_API_CMD_DRIVER_VERSION,
00193 WP_API_CMD_FIRMWARE_VERSION,
00194 WP_API_CMD_CPLD_VERSION,
00195 WP_API_CMD_OPEN_CNT,
00196 WP_API_CMD_SET_TX_Q_SIZE,
00197 WP_API_CMD_GET_TX_Q_SIZE,
00198 WP_API_CMD_SET_RX_Q_SIZE,
00199 WP_API_CMD_GET_RX_Q_SIZE,
00200 WP_API_CMD_EVENT_CTRL,
00201 WP_API_CMD_NOTSUPP,
00202 WP_API_CMD_SET_RM_RXFLASHTIME,
00203 WP_API_CMD_SET_IDLE_FLAG,
00205
00206 WP_API_CMD_GEN_FIFO_ERR=500,
00207 WP_API_CMD_START_CHAN_SEQ_DEBUG,
00208 WP_API_CMD_STOP_CHAN_SEQ_DEBUG
00209 };
00210
00215 enum wanpipe_cdev_ctrl_cmds
00216 {
00217 WP_CDEV_CMD_SET_DPC_TIMEDIFF_MONITORING_OPTION=1,
00218 WP_CDEV_CMD_SET_TX_INTERRUPT_TIMEDIFF_MONITORING_OPTION,
00219 WP_CDEV_CMD_SET_RX_INTERRUPT_TIMEDIFF_MONITORING_OPTION,
00220 WP_CDEV_CMD_PRINT_INTERRUPT_TIMEDIFF_MONITORING_INFO
00221 };
00222
00235 enum wanpipe_api_events
00236 {
00237 WP_API_EVENT_NONE,
00238 WP_API_EVENT_RBS,
00239 WP_API_EVENT_ALARM,
00240 WP_API_EVENT_DTMF,
00241 WP_API_EVENT_RM_DTMF,
00242 WP_API_EVENT_RXHOOK,
00243 WP_API_EVENT_RING,
00244 WP_API_EVENT_RING_DETECT,
00245 WP_API_EVENT_RING_TRIP_DETECT,
00246 WP_API_EVENT_TONE,
00247 WP_API_EVENT_TXSIG_KEWL,
00248 WP_API_EVENT_TXSIG_START,
00249 WP_API_EVENT_TXSIG_OFFHOOK,
00250 WP_API_EVENT_TXSIG_ONHOOK,
00251 WP_API_EVENT_ONHOOKTRANSFER,
00252 WP_API_EVENT_SETPOLARITY,
00253 WP_API_EVENT_BRI_CHAN_LOOPBACK,
00254 WP_API_EVENT_LINK_STATUS,
00255 WP_API_EVENT_MODEM_STATUS,
00256 WP_API_EVENT_POLARITY_REVERSE
00257 };
00258
00259
00260
00269 #define WP_API_EVENT_ENABLE 0x01
00270 #define WP_API_EVENT_DISABLE 0x02
00271 #define WP_API_EVENT_MODE_DECODE(mode) \
00272 ((mode) == WP_API_EVENT_ENABLE) ? "Enable" : \
00273 ((mode) == WP_API_EVENT_DISABLE) ? "Disable" : \
00274 "(Unknown mode)"
00275
00286 #define WPTDM_A_BIT WAN_RBS_SIG_A
00287 #define WPTDM_B_BIT WAN_RBS_SIG_B
00288 #define WPTDM_C_BIT WAN_RBS_SIG_C
00289 #define WPTDM_D_BIT WAN_RBS_SIG_D
00290
00291
00302 #define WP_API_EVENT_RXHOOK_OFF 0x01
00303 #define WP_API_EVENT_RXHOOK_ON 0x02
00304 #define WP_API_EVENT_RXHOOK_FLASH 0x03
00305 #define WP_API_EVENT_RXHOOK_DECODE(state) \
00306 ((state) == WP_API_EVENT_RXHOOK_OFF) ? "Off-hook" : \
00307 ((state) == WP_API_EVENT_RXHOOK_FLASH) ? "Flash" : \
00308 ((state) == WP_API_EVENT_RXHOOK_ON) ? "On-hook" : \
00309 "(Unknown state)"
00310
00318 #define WP_API_EVENT_RING_PRESENT 0x01
00319 #define WP_API_EVENT_RING_STOP 0x02
00320 #define WP_API_EVENT_RING_DECODE(state) \
00321 ((state) == WP_API_EVENT_RING_PRESENT) ? "Ring Present" : \
00322 ((state) == WP_API_EVENT_RING_STOP) ? "Ring Stop" : \
00323 "(Unknown state)"
00324
00333 #define WP_API_EVENT_RING_TRIP_PRESENT 0x01
00334 #define WP_API_EVENT_RING_TRIP_STOP 0x02
00335 #define WP_API_EVENT_RING_TRIP_DECODE(state) \
00336 ((state) == WP_API_EVENT_RING_TRIP_PRESENT) ? "Ring Present" : \
00337 ((state) == WP_API_EVENT_RING_TRIP_STOP) ? "Ring Stop" : \
00338 "(Unknown state)"
00339
00348 #define WP_API_EVENT_LINK_STATUS_CONNECTED 0x01
00349 #define WP_API_EVENT_LINK_STATUS_DISCONNECTED 0x02
00350 #define WP_API_EVENT_LINK_STATUS_DECODE(status) \
00351 ((status) == WP_API_EVENT_LINK_STATUS_CONNECTED) ? "Connected" : \
00352 ((status) == WP_API_EVENT_LINK_STATUS_DISCONNECTED) ? "Disconnected" : \
00353 "Unknown"
00354
00355
00364 #define WP_API_EVENT_POL_REV_POS_TO_NEG 0x01
00365 #define WP_API_EVENT__POL_REV_NEG_TO_POS 0x02
00366 #define WP_API_EVENT_POLARITY_REVERSE_DECODE(polarity_reverse) \
00367 ((polarity_reverse) == WP_API_EVENT_POL_REV_POS_TO_NEG) ? "+ve to -ve" : \
00368 ((polarity_reverse) == WP_API_EVENT__POL_REV_NEG_TO_POS) ? "-ve to +ve" : \
00369 "Unknown"
00370
00380 #define WP_API_EVENT_TONE_DIAL 0x01
00381 #define WP_API_EVENT_TONE_BUSY 0x02
00382 #define WP_API_EVENT_TONE_RING 0x03
00383 #define WP_API_EVENT_TONE_CONGESTION 0x04
00384 #define WP_API_EVENT_TONE_DTMF 0x05
00385 #define WP_API_EVENT_TONE_FAXCALLING 0x06
00386 #define WP_API_EVENT_TONE_FAXCALLED 0x07
00387
00388
00397 #define WAN_BRI_BCHAN1 0x01
00398 #define WAN_BRI_BCHAN2 0x02
00399 #define WAN_BRI_DCHAN 0x03
00400
00401
00409 #define WP_PORT_NAME_FORM "wanpipe%d"
00410 #define WP_INTERFACE_NAME_FORM "wanpipe%d_if%d"
00411 #define WP_CTRL_DEV_NAME "wanpipe_ctrl"
00412 #define WP_CONFIG_DEV_NAME "wanpipe"
00413 #define WP_TIMER_DEV_NAME_FORM "wanpipe_timer%d"
00414
00415 #pragma pack(1)
00416
00417
00424 typedef struct wanpipe_chan_stats
00425 {
00426 unsigned int rx_packets;
00427 unsigned int tx_packets;
00428 unsigned int rx_bytes;
00429 unsigned int tx_bytes;
00430 unsigned int rx_errors;
00431 unsigned int tx_errors;
00432 unsigned int rx_dropped;
00433 unsigned int tx_dropped;
00434 unsigned int multicast;
00435 unsigned int collisions;
00436
00437
00438 unsigned int rx_length_errors;
00439 unsigned int rx_over_errors;
00440 unsigned int rx_crc_errors;
00441 unsigned int rx_frame_errors;
00442 unsigned int rx_fifo_errors;
00443 unsigned int rx_missed_errors;
00444
00445
00446 unsigned int tx_aborted_errors;
00447 unsigned int tx_carrier_errors;
00448
00449 unsigned int tx_fifo_errors;
00450 unsigned int tx_heartbeat_errors;
00451 unsigned int tx_window_errors;
00452
00453 unsigned int tx_idle_packets;
00454
00455 unsigned int errors;
00456
00457 unsigned int current_number_of_frames_in_tx_queue;
00458 unsigned int max_tx_queue_length;
00459
00460 unsigned int current_number_of_frames_in_rx_queue;
00461 unsigned int max_rx_queue_length;
00462
00463 unsigned int max_event_queue_length;
00464 unsigned int current_number_of_events_in_event_queue;
00465 unsigned int rx_events;
00466 unsigned int rx_events_dropped;
00467
00468 unsigned int rx_events_tone;
00469
00470 }wanpipe_chan_stats_t;
00471
00472
00473 #define WP_AFT_CHAN_ERROR_STATS(chan_stats,var) chan_stats.var++;chan_stats.errors++
00474
00475 typedef struct _DRIVER_VERSION {
00476 unsigned int major;
00477 unsigned int minor;
00478 unsigned int minor1;
00479 unsigned int minor2;
00480 }wan_driver_version_t, DRIVER_VERSION, *PDRIVER_VERSION;
00481
00482 #define WANPIPE_API_CMD_SZ 512
00483 #define WANPIPE_API_CMD_RESERVED_SZ 128
00484
00485 #define WANPIPE_API_CMD_SZ_UNION WANPIPE_API_CMD_SZ - (sizeof(unsigned int)*3) - (sizeof(unsigned char)*2)
00486
00487
00497 typedef struct wanpipe_api_dev_cfg
00498 {
00499 unsigned int hw_tdm_coding;
00500 unsigned int hw_mtu_mru;
00501 unsigned int usr_period;
00502 unsigned int tdm_codec;
00503 unsigned int power_level;
00504 unsigned int rx_disable;
00505 unsigned int tx_disable;
00506 unsigned int usr_mtu_mru;
00507 unsigned int ec_tap;
00508 unsigned int rbs_poll;
00509 unsigned int rbs_rx_bits;
00510 unsigned int rbs_tx_bits;
00511 unsigned int hdlc;
00512 unsigned int idle_flag;
00513 unsigned int fe_alarms;
00514 unsigned char fe_status;
00515 unsigned int hw_dtmf;
00516 unsigned int open_cnt;
00517 unsigned int rx_queue_sz;
00518 unsigned int tx_queue_sz;
00519
00520
00521 unsigned char reserved[WANPIPE_API_CMD_RESERVED_SZ];
00522
00523 wanpipe_chan_stats_t stats;
00524 }wanpipe_api_dev_cfg_t;
00525
00526
00538 typedef struct wanpipe_api_cmd
00539 {
00540 unsigned int cmd;
00541 unsigned int result;
00542 unsigned char span;
00543 unsigned char chan;
00545 union {
00546 struct {
00547 unsigned int hw_tdm_coding;
00548 unsigned int hw_mtu_mru;
00549 unsigned int usr_period;
00550 unsigned int tdm_codec;
00551 unsigned int power_level;
00552 unsigned int rx_disable;
00553 unsigned int tx_disable;
00554 unsigned int usr_mtu_mru;
00555 unsigned int ec_tap;
00556 unsigned int rbs_poll;
00557 unsigned int rbs_rx_bits;
00558 unsigned int rbs_tx_bits;
00559 unsigned int hdlc;
00560 unsigned int idle_flag;
00561 unsigned int fe_alarms;
00562 unsigned char fe_status;
00563 unsigned int hw_dtmf;
00564 unsigned int open_cnt;
00565 unsigned int rx_queue_sz;
00566 unsigned int tx_queue_sz;
00567 unsigned int rxflashtime;
00568
00569 unsigned char reserved[WANPIPE_API_CMD_RESERVED_SZ];
00570 wanpipe_chan_stats_t stats;
00571 };
00572 wp_api_event_t event;
00573 wan_driver_version_t version;
00574 struct {
00575 unsigned char data[WANPIPE_API_CMD_SZ_UNION];
00576 unsigned int data_len;
00577 };
00578 };
00579 }wanpipe_api_cmd_t;
00580
00587 typedef struct wanpipe_api_callbacks
00588 {
00589 int (*wp_rbs_event)(sng_fd_t fd, unsigned char rbs_bits);
00590 int (*wp_dtmf_event)(sng_fd_t fd, unsigned char dtmf, unsigned char type, unsigned char port);
00591 int (*wp_rxhook_event)(sng_fd_t fd, unsigned char hook_state);
00592 int (*wp_ring_detect_event)(sng_fd_t fd, unsigned char ring_state);
00593 int (*wp_ring_trip_detect_event)(sng_fd_t fd, unsigned char ring_state);
00594 int (*wp_fe_alarm_event)(sng_fd_t fd, unsigned int fe_alarm_event);
00595 int (*wp_link_status_event)(sng_fd_t fd, unsigned int link_status_event);
00596 }wanpipe_api_callbacks_t;
00597
00608 typedef struct wanpipe_api
00609 {
00610 wanpipe_api_cmd_t wp_cmd;
00611 wanpipe_api_callbacks_t wp_callback;
00612 }wanpipe_api_t;
00613
00614 #pragma pack()
00615
00616
00617
00620 #endif