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 u_int16_t polarity_reverse;
00094 } rm_common;
00095 struct{
00096 u_int16_t status;
00097 } linkstatus;
00098 struct {
00099 u_int32_t status;
00100 } serial;
00101 unsigned char reserved[WAN_MAX_EVENT_SZ_UNION];
00102 };
00103
00104
00109 #define wp_api_event_type event_type
00110 #define wp_api_event_mode mode
00111 #define wp_api_event_channel channel
00112 #define wp_api_event_span span
00113 #define wp_api_event_alarm te1_alarm.alarm
00114 #define wp_api_event_rbs_bits te1_rbs.rbs_bits
00115 #define wp_api_event_hook_state rm_hook.state
00116 #define wp_api_event_hook_sig rm_hook.sig
00117 #define wp_api_event_ring_state rm_ring.state
00118 #define wp_api_event_tone_type rm_tone.type
00119 #define wp_api_event_dtmf_digit dtmf.digit
00120 #define wp_api_event_dtmf_type dtmf.type
00121 #define wp_api_event_dtmf_port dtmf.port
00122 #define wp_api_event_ohttimer rm_common.ohttimer
00123 #define wp_api_event_polarity rm_common.polarity
00124 #define wp_api_event_polarity_reverse rm_common.polarity_reverse
00125 #define wp_api_event_link_status linkstatus.status
00126 #define wp_api_event_serial_status serial.status
00127 #define wp_api_event_time_stamp_sec time_stamp_sec
00128 #define wp_api_event_time_stamp_usec time_stamp_usec
00129 } wp_api_event_t;
00130
00131
00132
00151 #define WAN_MAX_HDR_SZ 64
00152 #define WAN_MAX_HDR_SZ_UNION WAN_MAX_HDR_SZ-sizeof(u_int8_t)-sizeof(u_int16_t)-(sizeof(u_int32_t)*2)
00153
00161 typedef struct wp_api_hdr
00162 {
00163 u_int8_t operation_status;
00164 u_int16_t data_length;
00165 u_int32_t time_stamp_sec;
00166 u_int32_t time_stamp_usec;
00168 union {
00169
00172 struct {
00173
00174 u_int16_t crc;
00175 u_int8_t max_rx_queue_length;
00176 u_int8_t current_number_of_frames_in_rx_queue;
00177 }rx_h;
00178
00179 struct {
00180 u_int8_t max_tx_queue_length;
00181 u_int8_t current_number_of_frames_in_tx_queue;
00182 }tx_h;
00183
00184
00188 struct {
00189 u_int8_t status;
00190 }serial;
00191 struct {
00192 u_int32_t time_stamp_sec;
00193 u_int32_t time_stamp_usec;
00194 u_int8_t exception;
00195 u_int8_t pf;
00196 }lapb;
00197 struct {
00198 u_int32_t time_stamp_sec;
00199 u_int32_t time_stamp_usec;
00200 u_int8_t state;
00201 u_int8_t address;
00202 u_int16_t exception;
00203 }xdlc;
00204 struct {
00205 u_int32_t time_stamp_sec;
00206 u_int32_t time_stamp_usec;
00207 u_int8_t channel;
00208 u_int8_t direction;
00209 }bitstrm;
00210 struct {
00211 u_int32_t time_stamp_sec;
00212 u_int32_t time_stamp_usec;
00213 }chdlc,fr,ppp;
00214 struct {
00215 u_int8_t repeat;
00216 u_int8_t len;
00217 u_int8_t data[8];
00218 }rtp;
00219 struct {
00220 u_int8_t type;
00221 u_int8_t force_tx;
00222 u_int8_t data[8];
00223 }ss7_hw;
00224 u_int8_t reserved[WAN_MAX_HDR_SZ_UNION];
00225 };
00226
00227
00228
00234 #define wp_api_hdr_operation_status operation_status
00235 #define wp_api_hdr_data_length data_length
00236 #define wp_api_hdr_time_stamp_sec time_stamp_sec
00237 #define wp_api_hdr_time_stamp_use time_stamp_usec
00238
00239 #define wp_api_rx_hdr_crc rx_h.crc
00240 #define wp_api_rx_hdr_max_queue_length rx_h.max_rx_queue_length
00241 #define wp_api_rx_hdr_number_of_frames_in_queue rx_h.current_number_of_frames_in_rx_queue
00242 #define wp_api_rx_hdr_time_stamp_sec time_stamp_sec
00243 #define wp_api_rx_hdr_time_stamp_use time_stamp_usec
00244
00245 #define wp_api_tx_hdr_max_queue_length tx_h.max_tx_queue_length
00246 #define wp_api_tx_hdr_number_of_frames_in_queue tx_h.current_number_of_frames_in_tx_queue
00247 #define wp_api_tx_hdr_time_stamp_sec time_stamp_sec
00248 #define wp_api_tx_hdr_time_stamp_use time_stamp_usec
00249
00250
00255 #if !defined(__WINDOWS__)
00256 #define wp_api_rx_hdr_error_flag operation_status
00257 #define wp_api_rx_hdr_station operation_status
00258 #define wp_api_rx_hdr_time_stamp data_length
00259 #endif
00260
00261 #define wp_api_tx_hdr_hdlc_rpt_len rtp.len
00262 #define wp_api_tx_hdr_hdlc_rpt_data rtp.data
00263 #define wp_api_tx_hdr_hdlc_rpt_repeat rtp.repeat
00264
00265 #define wp_api_tx_hdr_aft_ss7_type ss7_hw.type
00266 #define wp_api_tx_hdr_aft_ss7_force_tx ss7_hw.force_tx
00267 #define wp_api_tx_hdr_aft_ss7_data ss7_hw.data
00268
00269
00270 #define wp_api_rx_hdr_xdlc_state xdlc.state
00271 #define wp_api_rx_hdr_xdlc_address xdlc.address
00272 #define wp_api_rx_hdr_xdlc_exception xdlc.exception
00273
00274 #define wan_hdr_xdlc_state xdlc.state
00275 #define wan_hdr_xdlc_address xdlc.address
00276 #define wan_hdr_xdlc_exception xdlc.exception
00277
00278
00279 #define wp_api_rx_hdr_chdlc_error_flag wp_api_rx_hdr_error_flag
00280 #define wp_api_rx_hdr_chdlc_time_stamp wp_api_rx_hdr_time_stamp
00281 #define wp_api_rx_hdr_chdlc_time_sec chdlc.time_stamp_sec
00282 #define wp_api_rx_hdr_chdlc_time_usec chdlc.time_stamp_usec
00283
00284 #define wan_hdr_chdlc_error_flag wp_api_rx_hdr_chdlc_error_flag
00285 #define wan_hdr_chdlc_time_stamp wp_api_rx_hdr_chdlc_time_stamp
00286 #define wan_hdr_chdlc_time_sec wp_api_rx_hdr_chdlc_time_sec
00287 #define wan_hdr_chdlc_time_usec wp_api_rx_hdr_chdlc_time_usec
00288
00289
00290 #define wp_api_rx_hdr_bitstrm_error_flag wp_api_rx_hdr_error_flag
00291 #define wp_api_rx_hdr_bitstrm_time_stamp wp_api_rx_hdr_time_stamp
00292 #define wp_api_rx_hdr_bitstrm_time_sec bitstrm.time_stamp_sec
00293 #define wp_api_rx_hdr_bitstrm_time_usec bitstrm.time_stamp_usec
00294 #define wp_api_rx_hdr_bitstrm_channel bitstrm.channel
00295 #define wp_api_rx_hdr_bitstrm_direction bitstrm.direction
00296
00297 #define wan_hdr_bitstrm_error_flag wp_api_rx_hdr_bitstrm_error_flag
00298 #define wan_hdr_bitstrm_time_stamp wp_api_rx_hdr_bitstrm_data_length
00299 #define wan_hdr_bitstrm_time_sec wp_api_rx_hdr_bitstrm_time_sec
00300 #define wan_hdr_bitstrm_time_usec wp_api_rx_hdr_bitstrm_time_usec
00301 #define wan_hdr_bitstrm_channel wp_api_rx_hdr_bitstrm_channel
00302 #define wan_hdr_bitstrm_direction wp_api_rx_hdr_bitstrm_direction
00303
00304
00305 #define wp_api_rx_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
00306 #define wp_api_rx_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
00307 #define wp_api_rx_hdr_hdlc_time_sec hdlc.time_stamp_sec
00308 #define wp_api_rx_hdr_hdlc_time_usec hdlc.time_stamp_usec
00309
00310 #define wan_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
00311 #define wan_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
00312
00313
00314 #define wp_api_rx_hdr_lapb_pf lapb.pf
00315 #define wp_api_rx_hdr_lapb_exception lapb.exception
00316 #define wp_api_rx_hdr_lapb_time_sec lapb.time_stamp_sec
00317 #define wp_api_rx_hdr_lapb_time_usec lapb.time_stamp_usec
00318
00319 #define wan_hdr_lapb_pf wp_api_rx_hdr_lapb_pf
00320 #define wan_hdr_lapb_exception wp_api_rx_hdr_lapb_exception
00321
00322
00323 #define wp_api_rx_hdr_fr_attr wp_api_rx_hdr_error_flag
00324 #define wp_api_rx_hdr_fr_time_stamp wp_api_rx_hdr_time_stamp
00325 #define wp_api_rx_hdr_fr_time_sec fr.time_stamp_sec
00326 #define wp_api_rx_hdr_fr_time_usec fr.time_stamp_usec
00327
00328 #define wan_hdr_fr_attr wp_api_rx_hdr_fr_attr
00329 #define wan_hdr_fr_time_stamp wp_api_rx_hdr_fr_time_stamp
00330 #define wan_hdr_fr_time_sec wp_api_rx_hdr_fr_time_sec
00331 #define wan_hdr_fr_time_usec wp_api_rx_hdr_fr_time_usec
00332
00333
00334 #define wp_api_rx_hdr_ss7_legacy_sio wp_api_rx_hdr_error_flag
00335 #define wp_api_rx_hdr_ss7_legacy_time_stamp wp_api_rx_hdr_time_stamp
00336
00337 #define wp_api_rx_hdr_event_serial_status serial.status
00338
00339 } wp_api_hdr_t;
00340
00341
00342
00350 #define MAX_NO_DATA_BYTES_IN_FRAME 8188
00351
00352
00366 typedef struct wp_api_element{
00367
00368 wp_api_hdr_t hdr;
00369 unsigned char data[MAX_NO_DATA_BYTES_IN_FRAME];
00371
00377 #define wp_api_el_operation_status hdr.wp_api_hdr_operation_status
00378 #define wp_api_el_data_length hdr.wp_api_hdr_data_length
00379 #define wp_api_el_time_stamp_sec hdr.wp_api_hdr_time_stamp_sec
00380 #define wp_api_el_time_stamp_use hdr.wp_api_hdr_time_stamp_use
00381
00382 #define wp_api_rx_el_crc hdr.wp_api_rx_hdr_crc
00383 #define wp_api_rx_el_max_queue_length hdr.wp_api_rx_hdr_max_queue_length
00384 #define wp_api_rx_el_number_of_frames_in_queue hdr.wp_api_rx_hdr_number_of_frames_in_queue
00385
00386 #define wp_api_tx_el_max_queue_length hdr.wp_api_tx_hdr_max_queue_length
00387 #define wp_api_tx_el_number_of_frames_in_queue hdr.wp_api_tx_hdr_number_of_frames_in_queue
00388
00389 } wp_api_element_t;
00390
00391
00392 #pragma pack()
00393
00394
00404 typedef struct _API_POLL_STRUCT
00405 {
00406 unsigned char operation_status;
00407 u_int32_t user_flags_bitmap;
00408 u_int32_t poll_events_bitmap;
00409 }API_POLL_STRUCT;
00410
00411
00422 typedef enum SANG_STATUS
00423 {
00424
00425 SANG_STATUS_SUCCESS=0,
00427
00430 SANG_STATUS_RX_DATA_TIMEOUT,
00431 SANG_STATUS_RX_DATA_AVAILABLE,
00432 SANG_STATUS_NO_DATA_AVAILABLE,
00434
00437 SANG_STATUS_TX_TIMEOUT,
00438 SANG_STATUS_TX_DATA_TOO_LONG,
00439 SANG_STATUS_TX_DATA_TOO_SHORT,
00440 SANG_STATUS_TX_HDR_TOO_SHORT,
00442
00445 SANG_STATUS_LINE_DISCONNECTED,
00446 SANG_STATUS_PROTOCOL_DISCONNECTED,
00447 SANG_STATUS_LINE_CONNECTED,
00448 SANG_STATUS_PROTOCOL_CONNECTED,
00450
00454 SANG_STATUS_COMMAND_ALREADY_RUNNING,
00455 SANG_STATUS_BUFFER_TOO_SMALL,
00456 SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY,
00457 SANG_STATUS_FAILED_ALLOCATE_MEMORY,
00458 SANG_STATUS_INVALID_DEVICE_REQUEST,
00459 SANG_STATUS_INVALID_PARAMETER,
00460 SANG_STATUS_GENERAL_ERROR,
00461 SANG_STATUS_DEVICE_BUSY,
00462 SANG_STATUS_INVALID_DEVICE,
00463 SANG_STATUS_IO_ERROR,
00464 SANG_STATUS_UNSUPPORTED_FUNCTION,
00465 SANG_STATUS_UNSUPPORTED_PROTOCOL,
00466 SANG_STATUS_DEVICE_ALREADY_EXIST,
00467 SANG_STATUS_DEV_INIT_INCOMPLETE,
00468 SANG_STATUS_TRACE_QUEUE_EMPTY,
00469 SANG_STATUS_OPTION_NOT_SUPPORTED,
00471
00474 SANG_STATUS_API_EVENT_AVAILABLE,
00477
00480 SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED,
00481 SANG_STATUS_CAN_NOT_RUN_TWO_PORT_CMDS_AT_THE_SAME_TIME,
00482 SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR,
00483 SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR,
00486
00489 SANG_STATUS_REGISTRY_ERROR=180,
00490 SANG_STATUS_IO_PENDING,
00491 SANG_STATUS_APIPOLL_TIMEOUT,
00492 SANG_STATUS_NO_FREE_BUFFERS,
00493 SANG_STATUS_SHARED_EVENT_INIT_ERROR,
00495
00499 SANG_STATUS_DATA_QUEUE_EMPTY=190,
00500 SANG_STATUS_DATA_QUEUE_FULL,
00501 SANG_STATUS_INVALID_IRQL
00503 }SANG_STATUS_T;
00504
00510 #define SDLA_DECODE_SANG_STATUS(status) \
00511 (abs(status) == SANG_STATUS_SUCCESS) ? "SANG_STATUS_SUCCESS" :\
00512 (abs(status) == SANG_STATUS_COMMAND_ALREADY_RUNNING) ? "SANG_STATUS_COMMAND_ALREADY_RUNNING":\
00513 (abs(status) == SANG_STATUS_BUFFER_TOO_SMALL) ? "SANG_STATUS_BUFFER_TOO_SMALL":\
00514 (abs(status) == SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY) ? "SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY":\
00515 (abs(status) == SANG_STATUS_FAILED_ALLOCATE_MEMORY) ? "SANG_STATUS_FAILED_ALLOCATE_MEMORY":\
00516 (abs(status) == SANG_STATUS_INVALID_DEVICE_REQUEST) ? "SANG_STATUS_INVALID_DEVICE_REQUEST":\
00517 (abs(status) == SANG_STATUS_INVALID_PARAMETER) ? "SANG_STATUS_INVALID_PARAMETER":\
00518 (abs(status) == SANG_STATUS_DATA_QUEUE_EMPTY) ? "SANG_STATUS_DATA_QUEUE_EMPTY":\
00519 (abs(status) == SANG_STATUS_DATA_QUEUE_FULL) ? "SANG_STATUS_DATA_QUEUE_FULL":\
00520 (abs(status) == SANG_STATUS_RX_DATA_TIMEOUT) ? "SANG_STATUS_RX_DATA_TIMEOUT":\
00521 (abs(status) == SANG_STATUS_RX_DATA_AVAILABLE) ? "SANG_STATUS_RX_DATA_AVAILABLE":\
00522 (abs(status) == SANG_STATUS_TX_TIMEOUT) ? "SANG_STATUS_TX_TIMEOUT":\
00523 (abs(status) == SANG_STATUS_TX_DATA_TOO_LONG) ? "SANG_STATUS_TX_DATA_TOO_LONG":\
00524 (abs(status) == SANG_STATUS_TX_DATA_TOO_SHORT) ? "SANG_STATUS_TX_DATA_TOO_SHORT":\
00525 (abs(status) == SANG_STATUS_LINE_DISCONNECTED) ? "SANG_STATUS_LINE_DISCONNECTED":\
00526 (abs(status) == SANG_STATUS_LINE_CONNECTED) ? "SANG_STATUS_LINE_CONNECTED":\
00527 (abs(status) == SANG_STATUS_PROTOCOL_DISCONNECTED) ? "SANG_STATUS_PROTOCOL_DISCONNECTED":\
00528 (abs(status) == SANG_STATUS_PROTOCOL_CONNECTED) ? "SANG_STATUS_PROTOCOL_CONNECTED":\
00529 (abs(status) == SANG_STATUS_GENERAL_ERROR) ? "SANG_STATUS_GENERAL_ERROR":\
00530 (abs(status) == SANG_STATUS_DEVICE_BUSY) ? "SANG_STATUS_DEVICE_BUSY":\
00531 (abs(status) == SANG_STATUS_INVALID_DEVICE) ? "SANG_STATUS_INVALID_DEVICE":\
00532 (abs(status) == SANG_STATUS_IO_ERROR) ? "SANG_STATUS_IO_ERROR":\
00533 (abs(status) == SANG_STATUS_UNSUPPORTED_FUNCTION) ? "SANG_STATUS_UNSUPPORTED_FUNCTION":\
00534 (abs(status) == SANG_STATUS_UNSUPPORTED_PROTOCOL) ? "SANG_STATUS_UNSUPPORTED_PROTOCOL":\
00535 (abs(status) == SANG_STATUS_DEVICE_ALREADY_EXIST) ? "SANG_STATUS_DEVICE_ALREADY_EXIST":\
00536 (abs(status) == SANG_STATUS_DEV_INIT_INCOMPLETE) ? "SANG_STATUS_DEV_INIT_INCOMPLETE":\
00537 (abs(status) == SANG_STATUS_API_EVENT_AVAILABLE) ? "SANG_STATUS_API_EVENT_AVAILABLE":\
00538 (abs(status) == SANG_STATUS_REGISTRY_ERROR) ? "SANG_STATUS_REGISTRY_ERROR":\
00539 (abs(status) == SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED) ? "SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED":\
00540 (abs(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":\
00541 (abs(status) == SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR) ? "SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR":\
00542 (abs(status) == SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR) ? "SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR":\
00543 (abs(status) == SANG_STATUS_INVALID_IRQL) ? "SANG_STATUS_INVALID_IRQL":\
00544 (abs(status) == SANG_STATUS_NO_DATA_AVAILABLE) ? "SANG_STATUS_NO_DATA_AVAILABLE":\
00545 (abs(status) == SANG_STATUS_IO_PENDING) ? "SANG_STATUS_IO_PENDING":\
00546 (abs(status) == SANG_STATUS_APIPOLL_TIMEOUT) ? "SANG_STATUS_APIPOLL_TIMEOUT":\
00547 (abs(status) == SANG_STATUS_NO_FREE_BUFFERS) ? "SANG_STATUS_NO_FREE_BUFFERS":\
00548 "Status Unknown"
00549
00550 #define SANG_SUCCESS(status) (status == SANG_STATUS_SUCCESS)
00551 #define SANG_ERROR(status) (!SANG_SUCCESS(status))
00552
00553 #if defined(__WINDOWS__)
00554 #if defined(WAN_KERNEL) || defined(USE_SANGOMA_ERRNO)
00555
00556
00557
00558
00559 # undef EFAULT
00560 # undef EBUSY
00561 # undef ENODEV
00562 # undef EINVAL
00563 # undef EIO
00564 # undef EPFNOSUPPORT
00565 # undef EPROTONOSUPPORT
00566 # undef ENOMEM
00567 # undef EEXIST
00568 # undef ENOBUFS
00569 # undef EOPNOTSUPP
00570 # undef ENXIO
00571 # undef EAGAIN
00572 # undef EFBIG
00573
00574 # define EFAULT SANG_STATUS_GENERAL_ERROR
00575 # define EBUSY SANG_STATUS_DEVICE_BUSY
00576 # define ENODEV SANG_STATUS_INVALID_DEVICE
00577 # define EINVAL SANG_STATUS_INVALID_PARAMETER
00578 # define EIO SANG_STATUS_IO_ERROR
00579 # define EPFNOSUPPORT SANG_STATUS_UNSUPPORTED_FUNCTION
00580 # define EPROTONOSUPPORT SANG_STATUS_UNSUPPORTED_PROTOCOL
00581 # define ENOMEM SANG_STATUS_FAILED_ALLOCATE_MEMORY
00582 # define EEXIST SANG_STATUS_DEVICE_ALREADY_EXIST
00583 # define ENOBUFS SANG_STATUS_NO_FREE_BUFFERS
00584 # define EOPNOTSUPP SANG_STATUS_OPTION_NOT_SUPPORTED
00585 # define ENXIO EFAULT
00586 # define ENETDOWN SANG_STATUS_LINE_DISCONNECTED
00587 # define EAGAIN SANG_STATUS_DEVICE_BUSY
00588 # define EFBIG SANG_STATUS_TX_DATA_TOO_LONG
00589 #endif
00590 #endif
00591
00592
00593 #endif