wanpipe_api_hdr.h

Go to the documentation of this file.
00001 /******************************************************************************/
00035 #ifndef __WANPIPE_API_HDR__
00036 #define __WANPIPE_API_HDR__
00037 
00038 
00039 #pragma pack(1)
00040 
00049 #define WAN_MAX_EVENT_SZ 64
00050 #define WAN_MAX_EVENT_SZ_UNION WAN_MAX_EVENT_SZ-(sizeof(u_int8_t)*4)-(sizeof(u_int32_t)*2)
00051 
00060 typedef struct wp_api_event
00061 {
00062     u_int8_t    event_type;         
00063     u_int8_t    mode;               
00064     u_int8_t    channel;            
00065     u_int8_t    span;               
00066     u_int32_t   time_stamp_sec;     
00067     u_int32_t   time_stamp_usec;    
00068     union {
00069         struct {
00070             u_int32_t   alarm;      
00071         } te1_alarm;
00072         struct {
00073             u_int8_t    rbs_bits;   
00074         } te1_rbs;
00075         struct {
00076             u_int8_t    state;      
00077             u_int8_t    sig;        
00078         } rm_hook;
00079         struct {
00080             u_int8_t    state;      
00081         } rm_ring;
00082         struct {
00083             u_int16_t   type;       
00084         } rm_tone;
00085         struct {
00086             u_int8_t    digit;      
00087             u_int8_t    port;       
00088             u_int8_t    type;       
00089         } dtmf;
00090         struct {
00091             u_int16_t   polarity;   
00092             u_int16_t   ohttimer;   
00093         } rm_common;
00094         struct{
00095             u_int16_t   status;     
00096         } linkstatus;
00097         struct {
00098             u_int32_t   status;     
00099         } serial;
00100         unsigned char reserved[WAN_MAX_EVENT_SZ_UNION]; 
00101     };
00102 
00103 /***************************************************/
00108 #define wp_api_event_type               event_type
00109 #define wp_api_event_mode               mode
00110 #define wp_api_event_channel            channel
00111 #define wp_api_event_span               span
00112 #define wp_api_event_alarm              te1_alarm.alarm
00113 #define wp_api_event_rbs_bits           te1_rbs.rbs_bits
00114 #define wp_api_event_hook_state         rm_hook.state
00115 #define wp_api_event_hook_sig           rm_hook.sig
00116 #define wp_api_event_ring_state         rm_ring.state
00117 #define wp_api_event_tone_type          rm_tone.type
00118 #define wp_api_event_dtmf_digit         dtmf.digit
00119 #define wp_api_event_dtmf_type          dtmf.type
00120 #define wp_api_event_dtmf_port          dtmf.port
00121 #define wp_api_event_ohttimer           rm_common.ohttimer
00122 #define wp_api_event_polarity           rm_common.polarity
00123 #define wp_api_event_link_status        linkstatus.status
00124 #define wp_api_event_serial_status      serial.status
00125 #define wp_api_event_time_stamp_sec     time_stamp_sec
00126 #define wp_api_event_time_stamp_usec    time_stamp_usec
00127 } wp_api_event_t;
00128 
00129 
00130 /***************************************************/
00149 #define WAN_MAX_HDR_SZ 64
00150 #define WAN_MAX_HDR_SZ_UNION WAN_MAX_HDR_SZ-sizeof(u_int8_t)-sizeof(u_int16_t)-(sizeof(u_int32_t)*2)
00151 
00159 typedef struct wp_api_hdr
00160 {
00161     u_int8_t    operation_status;       
00162     u_int16_t   data_length;            
00163     u_int32_t   time_stamp_sec;         
00164     u_int32_t   time_stamp_usec;        
00166     union {
00167         /***********************************************/
00170         struct {
00171 
00172             u_int16_t   crc;                                    
00173             u_int8_t    max_rx_queue_length;                    
00174             u_int8_t    current_number_of_frames_in_rx_queue;   
00175         }rx_h;
00176 
00177         struct {
00178             u_int8_t    max_tx_queue_length;                    
00179             u_int8_t    current_number_of_frames_in_tx_queue;   
00180         }tx_h;
00181 
00182         /***********************************************/
00186         struct {
00187             u_int8_t    status;
00188         }serial;
00189         struct {
00190             u_int32_t   time_stamp_sec; 
00191             u_int32_t   time_stamp_usec;
00192             u_int8_t    exception;
00193             u_int8_t    pf;
00194         }lapb;
00195         struct {
00196             u_int32_t   time_stamp_sec;
00197             u_int32_t   time_stamp_usec;
00198             u_int8_t    state;
00199             u_int8_t    address;
00200             u_int16_t   exception;
00201         }xdlc;
00202         struct {
00203             u_int32_t   time_stamp_sec;
00204             u_int32_t   time_stamp_usec;
00205             u_int8_t    channel;
00206             u_int8_t    direction;
00207         }bitstrm;
00208         struct {
00209             u_int32_t   time_stamp_sec;
00210             u_int32_t   time_stamp_usec;
00211         }chdlc,fr,ppp;
00212         struct {
00213             u_int8_t    repeat;
00214             u_int8_t    len;
00215             u_int8_t    data[8];
00216         }rtp;
00217         struct {
00218             u_int8_t    type;
00219             u_int8_t    force_tx;
00220             u_int8_t    data[8];
00221         }ss7_hw;
00222         u_int8_t reserved[WAN_MAX_HDR_SZ_UNION];
00223     };
00224 
00225 
00226 /***************************************************/
00232 #define wp_api_hdr_operation_status             operation_status
00233 #define wp_api_hdr_data_length                  data_length
00234 #define wp_api_hdr_time_stamp_sec               time_stamp_sec
00235 #define wp_api_hdr_time_stamp_use               time_stamp_usec
00236 
00237 #define wp_api_rx_hdr_crc                       rx_h.crc
00238 #define wp_api_rx_hdr_max_queue_length          rx_h.max_rx_queue_length
00239 #define wp_api_rx_hdr_number_of_frames_in_queue rx_h.current_number_of_frames_in_rx_queue
00240 #define wp_api_rx_hdr_time_stamp_sec            time_stamp_sec
00241 #define wp_api_rx_hdr_time_stamp_use            time_stamp_usec
00242 
00243 #define wp_api_tx_hdr_max_queue_length          tx_h.max_tx_queue_length
00244 #define wp_api_tx_hdr_number_of_frames_in_queue tx_h.current_number_of_frames_in_tx_queue
00245 #define wp_api_tx_hdr_time_stamp_sec            time_stamp_sec
00246 #define wp_api_tx_hdr_time_stamp_use            time_stamp_usec
00247 
00248 /***********************************************/
00253 #if !defined(__WINDOWS__)
00254 #define wp_api_rx_hdr_error_flag                operation_status
00255 #define wp_api_rx_hdr_time_stamp                data_length
00256 #endif
00257 
00258 #define wp_api_tx_hdr_hdlc_rpt_len              rtp.len
00259 #define wp_api_tx_hdr_hdlc_rpt_data             rtp.data
00260 #define wp_api_tx_hdr_hdlc_rpt_repeat           rtp.repeat
00261 
00262 #define wp_api_tx_hdr_aft_ss7_type              ss7_hw.type
00263 #define wp_api_tx_hdr_aft_ss7_force_tx          ss7_hw.force_tx
00264 #define wp_api_tx_hdr_aft_ss7_data              ss7_hw.data
00265 
00266 /* XDLC Old backdward comptabile */
00267 #define wp_api_rx_hdr_xdlc_state                xdlc.state
00268 #define wp_api_rx_hdr_xdlc_address              xdlc.address
00269 #define wp_api_rx_hdr_xdlc_exception            xdlc.exception
00270 
00271 #define wan_hdr_xdlc_state                      xdlc.state
00272 #define wan_hdr_xdlc_address                    xdlc.address
00273 #define wan_hdr_xdlc_exception                  xdlc.exception
00274 
00275 /* CHDLC Old backdward comptabile */
00276 #define wp_api_rx_hdr_chdlc_error_flag          wp_api_rx_hdr_error_flag
00277 #define wp_api_rx_hdr_chdlc_time_stamp          wp_api_rx_hdr_time_stamp
00278 #define wp_api_rx_hdr_chdlc_time_sec            chdlc.time_stamp_sec
00279 #define wp_api_rx_hdr_chdlc_time_usec           chdlc.time_stamp_usec
00280 
00281 #define wan_hdr_chdlc_error_flag                wp_api_rx_hdr_chdlc_error_flag
00282 #define wan_hdr_chdlc_time_stamp                wp_api_rx_hdr_chdlc_time_stamp
00283 #define wan_hdr_chdlc_time_sec                  wp_api_rx_hdr_chdlc_time_sec
00284 #define wan_hdr_chdlc_time_usec                 wp_api_rx_hdr_chdlc_time_usec
00285 
00286 /* BITSTRM Old backdward comptabile */
00287 #define wp_api_rx_hdr_bitstrm_error_flag        wp_api_rx_hdr_error_flag
00288 #define wp_api_rx_hdr_bitstrm_time_stamp        wp_api_rx_hdr_time_stamp
00289 #define wp_api_rx_hdr_bitstrm_time_sec          bitstrm.time_stamp_sec
00290 #define wp_api_rx_hdr_bitstrm_time_usec         bitstrm.time_stamp_usec
00291 #define wp_api_rx_hdr_bitstrm_channel           bitstrm.channel
00292 #define wp_api_rx_hdr_bitstrm_direction         bitstrm.direction
00293 
00294 #define wan_hdr_bitstrm_error_flag              wp_api_rx_hdr_bitstrm_error_flag
00295 #define wan_hdr_bitstrm_time_stamp              wp_api_rx_hdr_bitstrm_data_length
00296 #define wan_hdr_bitstrm_time_sec                wp_api_rx_hdr_bitstrm_time_sec
00297 #define wan_hdr_bitstrm_time_usec               wp_api_rx_hdr_bitstrm_time_usec
00298 #define wan_hdr_bitstrm_channel                 wp_api_rx_hdr_bitstrm_channel
00299 #define wan_hdr_bitstrm_direction               wp_api_rx_hdr_bitstrm_direction
00300 
00301 /* HDLC Old backdward comptabile */
00302 #define wp_api_rx_hdr_hdlc_error_flag           wp_api_rx_hdr_error_flag
00303 #define wp_api_rx_hdr_hdlc_time_stamp           wp_api_rx_hdr_time_stamp
00304 #define wp_api_rx_hdr_hdlc_time_sec             hdlc.time_stamp_sec
00305 #define wp_api_rx_hdr_hdlc_time_usec            hdlc.time_stamp_usec
00306 
00307 #define wan_hdr_hdlc_error_flag                 wp_api_rx_hdr_error_flag
00308 #define wan_hdr_hdlc_time_stamp                 wp_api_rx_hdr_time_stamp
00309 
00310 /* LAPBS Old backdward comptabile */
00311 #define wp_api_rx_hdr_lapb_pf                   lapb.pf
00312 #define wp_api_rx_hdr_lapb_exception            lapb.exception
00313 #define wp_api_rx_hdr_lapb_time_sec             lapb.time_stamp_sec
00314 #define wp_api_rx_hdr_lapb_time_usec            lapb.time_stamp_usec
00315 
00316 #define wan_hdr_lapb_pf                         wp_api_rx_hdr_lapb_pf
00317 #define wan_hdr_lapb_exception                  wp_api_rx_hdr_lapb_exception
00318 
00319 /* FR Old backdward comptabile */
00320 #define wp_api_rx_hdr_fr_attr                   wp_api_rx_hdr_error_flag
00321 #define wp_api_rx_hdr_fr_time_stamp             wp_api_rx_hdr_time_stamp
00322 #define wp_api_rx_hdr_fr_time_sec               fr.time_stamp_sec
00323 #define wp_api_rx_hdr_fr_time_usec              fr.time_stamp_usec
00324 
00325 #define wan_hdr_fr_attr                         wp_api_rx_hdr_fr_attr
00326 #define wan_hdr_fr_time_stamp                   wp_api_rx_hdr_fr_time_stamp
00327 #define wan_hdr_fr_time_sec                     wp_api_rx_hdr_fr_time_sec
00328 #define wan_hdr_fr_time_usec                    wp_api_rx_hdr_fr_time_usec
00329 
00330 /* SS7 Legacy Old backdward comptabile */
00331 #define wp_api_rx_hdr_ss7_legacy_sio            wp_api_rx_hdr_error_flag
00332 #define wp_api_rx_hdr_ss7_legacy_time_stamp     wp_api_rx_hdr_time_stamp
00333 
00334 #define wp_api_rx_hdr_event_serial_status       serial.status
00335 
00336 } wp_api_hdr_t;
00337 
00338 
00339 /***********************************************/
00347 #define MAX_NO_DATA_BYTES_IN_FRAME  8188
00348 
00349 
00363 typedef struct wp_api_element{
00364 
00365     wp_api_hdr_t    hdr;    
00366     unsigned char   data[MAX_NO_DATA_BYTES_IN_FRAME];   
00368 /***************************************************/
00374 #define wp_api_el_operation_status              hdr.wp_api_hdr_operation_status
00375 #define wp_api_el_data_length                   hdr.wp_api_hdr_data_length
00376 #define wp_api_el_time_stamp_sec                hdr.wp_api_hdr_time_stamp_sec
00377 #define wp_api_el_time_stamp_use                hdr.wp_api_hdr_time_stamp_use
00378 
00379 #define wp_api_rx_el_crc                        hdr.wp_api_rx_hdr_crc
00380 #define wp_api_rx_el_max_queue_length           hdr.wp_api_rx_hdr_max_queue_length
00381 #define wp_api_rx_el_number_of_frames_in_queue  hdr.wp_api_rx_hdr_number_of_frames_in_queue
00382 
00383 #define wp_api_tx_el_max_queue_length           hdr.wp_api_tx_hdr_max_queue_length
00384 #define wp_api_tx_el_number_of_frames_in_queue  hdr.wp_api_tx_hdr_number_of_frames_in_queue
00385 
00386 } wp_api_element_t;
00387 
00388 
00389 #pragma pack()
00390 
00391 
00401 typedef struct _API_POLL_STRUCT
00402 {
00403     unsigned char   operation_status;   
00404     u_int32_t       user_flags_bitmap;  
00405     u_int32_t       poll_events_bitmap; 
00406     u_int32_t       timeout;            
00407 }API_POLL_STRUCT;
00408 
00409 
00420 typedef enum SANG_STATUS
00421 {
00422 
00423     SANG_STATUS_SUCCESS=0,                  
00425     /*************************************/
00428     SANG_STATUS_RX_DATA_TIMEOUT,            
00429     SANG_STATUS_RX_DATA_AVAILABLE,          
00430     SANG_STATUS_NO_DATA_AVAILABLE,          
00432     /*************************************/
00435     SANG_STATUS_TX_TIMEOUT,                 
00436     SANG_STATUS_TX_DATA_TOO_LONG,           
00437     SANG_STATUS_TX_DATA_TOO_SHORT,          
00438     SANG_STATUS_TX_HDR_TOO_SHORT,           
00440     /*************************************/
00443     SANG_STATUS_LINE_DISCONNECTED,          
00444     SANG_STATUS_PROTOCOL_DISCONNECTED,      
00445     SANG_STATUS_LINE_CONNECTED,             
00446     SANG_STATUS_PROTOCOL_CONNECTED,         
00448     /*************************************/
00452     SANG_STATUS_COMMAND_ALREADY_RUNNING,    
00453     SANG_STATUS_BUFFER_TOO_SMALL,           
00454     SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY, 
00455     SANG_STATUS_FAILED_ALLOCATE_MEMORY,     
00456     SANG_STATUS_INVALID_DEVICE_REQUEST,     
00457     SANG_STATUS_INVALID_PARAMETER,          
00458     SANG_STATUS_GENERAL_ERROR,              
00459     SANG_STATUS_DEVICE_BUSY,                
00460     SANG_STATUS_INVALID_DEVICE,             
00461     SANG_STATUS_IO_ERROR,                   
00462     SANG_STATUS_UNSUPPORTED_FUNCTION,       
00463     SANG_STATUS_UNSUPPORTED_PROTOCOL,       
00464     SANG_STATUS_DEVICE_ALREADY_EXIST,       
00465     SANG_STATUS_DEV_INIT_INCOMPLETE,        
00466     SANG_STATUS_TRACE_QUEUE_EMPTY,          
00467     SANG_STATUS_OPTION_NOT_SUPPORTED,       
00469     /*************************************/
00472     SANG_STATUS_API_EVENT_AVAILABLE,        
00475     /*************************************/
00478     SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED,       
00479     SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME,     
00480     SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR,        
00481     SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR,      
00484     /*************************************/
00487     SANG_STATUS_REGISTRY_ERROR=180,             
00489     /****************************************/
00493     SANG_STATUS_DATA_QUEUE_EMPTY=190,           
00494     SANG_STATUS_DATA_QUEUE_FULL,                
00495     SANG_STATUS_INVALID_IRQL                    
00497 }SANG_STATUS_T;
00498 
00504 #define SDLA_DECODE_SANG_STATUS(status) \
00505 (status == SANG_STATUS_SUCCESS) ? "SANG_STATUS_SUCCESS" :\
00506 (status == SANG_STATUS_COMMAND_ALREADY_RUNNING) ? "SANG_STATUS_COMMAND_ALREADY_RUNNING":\
00507 (status == SANG_STATUS_BUFFER_TOO_SMALL) ? "SANG_STATUS_BUFFER_TOO_SMALL":\
00508 (status == SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY) ? "SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY":\
00509 (status == SANG_STATUS_FAILED_ALLOCATE_MEMORY) ? "SANG_STATUS_FAILED_ALLOCATE_MEMORY":\
00510 (status == SANG_STATUS_INVALID_DEVICE_REQUEST) ? "SANG_STATUS_INVALID_DEVICE_REQUEST":\
00511 (status == SANG_STATUS_INVALID_PARAMETER) ? "SANG_STATUS_INVALID_PARAMETER":\
00512 (status == SANG_STATUS_DATA_QUEUE_EMPTY) ? "SANG_STATUS_DATA_QUEUE_EMPTY":\
00513 (status == SANG_STATUS_DATA_QUEUE_FULL) ? "SANG_STATUS_DATA_QUEUE_FULL":\
00514 (status == SANG_STATUS_RX_DATA_TIMEOUT) ? "SANG_STATUS_RX_DATA_TIMEOUT":\
00515 (status == SANG_STATUS_RX_DATA_AVAILABLE) ? "SANG_STATUS_RX_DATA_AVAILABLE":\
00516 (status == SANG_STATUS_TX_TIMEOUT) ? "SANG_STATUS_TX_TIMEOUT":\
00517 (status == SANG_STATUS_TX_DATA_TOO_LONG) ? "SANG_STATUS_TX_DATA_TOO_LONG":\
00518 (status == SANG_STATUS_TX_DATA_TOO_SHORT) ? "SANG_STATUS_TX_DATA_TOO_SHORT":\
00519 (status == SANG_STATUS_LINE_DISCONNECTED) ? "SANG_STATUS_LINE_DISCONNECTED":\
00520 (status == SANG_STATUS_LINE_CONNECTED) ? "SANG_STATUS_LINE_CONNECTED":\
00521 (status == SANG_STATUS_PROTOCOL_DISCONNECTED) ? "SANG_STATUS_PROTOCOL_DISCONNECTED":\
00522 (status == SANG_STATUS_PROTOCOL_CONNECTED) ? "SANG_STATUS_PROTOCOL_CONNECTED":\
00523 (status == SANG_STATUS_GENERAL_ERROR) ? "SANG_STATUS_GENERAL_ERROR":\
00524 (status == SANG_STATUS_DEVICE_BUSY) ? "SANG_STATUS_DEVICE_BUSY":\
00525 (status == SANG_STATUS_INVALID_DEVICE) ? "SANG_STATUS_INVALID_DEVICE":\
00526 (status == SANG_STATUS_IO_ERROR) ? "SANG_STATUS_IO_ERROR":\
00527 (status == SANG_STATUS_UNSUPPORTED_FUNCTION) ? "SANG_STATUS_UNSUPPORTED_FUNCTION":\
00528 (status == SANG_STATUS_UNSUPPORTED_PROTOCOL) ? "SANG_STATUS_UNSUPPORTED_PROTOCOL":\
00529 (status == SANG_STATUS_DEVICE_ALREADY_EXIST) ? "SANG_STATUS_DEVICE_ALREADY_EXIST":\
00530 (status == SANG_STATUS_DEV_INIT_INCOMPLETE) ? "SANG_STATUS_DEV_INIT_INCOMPLETE":\
00531 (status == SANG_STATUS_TDM_EVENT_AVAILABLE) ? "SANG_STATUS_TDM_EVENT_AVAILABLE":\
00532 (status == SANG_STATUS_REGISTRY_ERROR) ? "SANG_STATUS_REGISTRY_ERROR":\
00533 (status == SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED) ? "SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED":\
00534 (status == SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME) ? "SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME":\
00535 (status == SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR) ? "SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR":\
00536 (status == SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR) ? "SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR":\
00537 (status == SANG_STATUS_INVALID_IRQL) ? "SANG_STATUS_INVALID_IRQL":\
00538 (status == SANG_STATUS_NO_DATA_AVAILABLE) ? "SANG_STATUS_NO_DATA_AVAILABLE":\
00539 "Status Unknown"
00540 
00541 #if defined(__WINDOWS__)
00542 #if defined(WAN_KERNEL) || defined(BUILD_WANEC_CLIENT)
00543 /*
00544     Cross-Platform return codes.
00545     SOME of these return codes are defined in errno.h, but not ALL of them.
00546 */
00547 # undef EFAULT
00548 # undef EBUSY
00549 # undef ENODEV
00550 # undef EINVAL
00551 # undef EIO
00552 # undef EPFNOSUPPORT
00553 # undef EPROTONOSUPPORT
00554 # undef ENOMEM
00555 # undef EEXIST
00556 # undef ENOBUFS
00557 # undef EOPNOTSUPP
00558 # undef ENXIO
00559 # undef EAGAIN
00560 # undef EFBIG
00561 
00562 # define EFAULT             SANG_STATUS_GENERAL_ERROR
00563 # define EBUSY              SANG_STATUS_DEVICE_BUSY
00564 # define ENODEV             SANG_STATUS_INVALID_DEVICE
00565 # define EINVAL             SANG_STATUS_INVALID_PARAMETER
00566 # define EIO                SANG_STATUS_IO_ERROR
00567 # define EPFNOSUPPORT       SANG_STATUS_UNSUPPORTED_FUNCTION
00568 # define EPROTONOSUPPORT    SANG_STATUS_UNSUPPORTED_PROTOCOL
00569 # define ENOMEM             SANG_STATUS_FAILED_ALLOCATE_MEMORY
00570 # define EEXIST             SANG_STATUS_DEVICE_ALREADY_EXIST
00571 # define ENOBUFS            SANG_STATUS_DEVICE_BUSY /* no free tx buffers */
00572 # define EOPNOTSUPP         SANG_STATUS_OPTION_NOT_SUPPORTED
00573 # define ENXIO              EFAULT
00574 # define ENETDOWN           SANG_STATUS_LINE_DISCONNECTED
00575 # define EAGAIN             SANG_STATUS_DEVICE_BUSY
00576 # define EFBIG              SANG_STATUS_TX_DATA_TOO_LONG
00577 #endif
00578 #endif /* __WINDOWS */
00579 
00580 
00581 #endif

Generated on Tue Jan 6 18:07:39 2009 for sample_c by  doxygen 1.4.7