wanpipe_api_iface.h

Go to the documentation of this file.
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 /* Indicate to library that new features exist */
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     /* Do not add any non-debugging commands below */
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     /* Add only debugging commands here */
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,       /* DPC() monitoring */
00218     WP_CDEV_CMD_SET_TX_INTERRUPT_TIMEDIFF_MONITORING_OPTION,/* TX ISR() monitoring */
00219     WP_CDEV_CMD_SET_RX_INTERRUPT_TIMEDIFF_MONITORING_OPTION,/* RX ISR() monitoring */
00220     WP_CDEV_CMD_PRINT_INTERRUPT_TIMEDIFF_MONITORING_INFO    /* print ISR() monitoring info to Wanpipelog */
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 /*Link Status */
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 /*Polarity Reversal for FXO  */
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 /* BRI channels list */
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;     /* total packets received   */
00427     unsigned int    tx_packets;     /* total packets transmitted    */
00428     unsigned int    rx_bytes;       /* total bytes received     */
00429     unsigned int    tx_bytes;       /* total bytes transmitted  */
00430     unsigned int    rx_errors;      /* bad packets received     */
00431     unsigned int    tx_errors;      /* packet transmit problems */
00432     unsigned int    rx_dropped;     /* no space in linux buffers    */
00433     unsigned int    tx_dropped;     /* no space available in linux  */
00434     unsigned int    multicast;      /* multicast packets received   */
00435     unsigned int    collisions;
00436 
00437     /* detailed rx_errors: */
00438     unsigned int    rx_length_errors;
00439     unsigned int    rx_over_errors;     /* receiver ring buff overflow  */
00440     unsigned int    rx_crc_errors;      /* recved pkt with crc error    */
00441     unsigned int    rx_frame_errors;    /* recv'd frame alignment error */
00442     unsigned int    rx_fifo_errors;     /* recv'r fifo overrun      */
00443     unsigned int    rx_missed_errors;   /* receiver missed packet   */
00444 
00445     /* detailed tx_errors */
00446     unsigned int    tx_aborted_errors;
00447     unsigned int    tx_carrier_errors;  /* trunsmitter underrun error counter */
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 /* The the union size is max-cmd-result-span-chan-data_len */
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; /* Set/Get HW TDM coding: uLaw muLaw */
00500         unsigned int hw_mtu_mru;    /* Set/Get HW TDM MTU/MRU */
00501         unsigned int usr_period;    /* Set/Get User Period in ms */
00502         unsigned int tdm_codec;     /* Set/Get TDM Codec: SLinear */
00503         unsigned int power_level;   /* Set/Get Power level treshold */
00504         unsigned int rx_disable;    /* Enable/Disable Rx */
00505         unsigned int tx_disable;    /* Enable/Disable Tx */
00506         unsigned int usr_mtu_mru;   /* Set/Get User TDM MTU/MRU */
00507         unsigned int ec_tap;        /* Echo Cancellation Tap */
00508         unsigned int rbs_poll;      /* Enable/Disable RBS Polling */
00509         unsigned int rbs_rx_bits;   /* Rx RBS Bits */
00510         unsigned int rbs_tx_bits;   /* Tx RBS Bits */
00511         unsigned int hdlc;          /* HDLC based device */
00512         unsigned int idle_flag;     /* IDLE flag to Tx */
00513         unsigned int fe_alarms;     /* FE Alarms detected */
00514         unsigned char fe_status;    /* FE status - Connected or Disconnected */
00515         unsigned int hw_dtmf;       /* HW DTMF enabled */
00516         unsigned int open_cnt;      /* Open cnt */
00517         unsigned int rx_queue_sz;
00518         unsigned int tx_queue_sz;
00519         /* Any new paramets should decrement the reserved size */
00520 
00521         unsigned char reserved[WANPIPE_API_CMD_RESERVED_SZ];
00522         /* Duplicate the structure below */
00523         wanpipe_chan_stats_t stats; /* TDM Statistics */
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             /* Any new paramets should decrement the reserved size */
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

Generated on Fri Jun 26 12:46:14 2009 for libsangoma by  doxygen 1.4.7