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
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
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
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
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
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
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
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
00545
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
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
00579
00580
00581 #endif