35 #ifndef __WANPIPE_API_HDR__
36 #define __WANPIPE_API_HDR__
49 #define WAN_MAX_EVENT_SZ 64
50 #define WAN_MAX_EVENT_SZ_UNION WAN_MAX_EVENT_SZ-(sizeof(u_int8_t)*4)-(sizeof(u_int32_t)*2)
93 u_int16_t polarity_reverse;
112 #define wp_api_event_type event_type
113 #define wp_api_event_mode mode
114 #define wp_api_event_channel channel
115 #define wp_api_event_span span
116 #define wp_api_event_alarm te1_alarm.alarm
117 #define wp_api_event_rbs_bits te1_rbs.rbs_bits
118 #define wp_api_event_hook_state rm_hook.state
119 #define wp_api_event_hook_sig rm_hook.sig
120 #define wp_api_event_ring_state rm_ring.state
121 #define wp_api_event_tone_type rm_tone.type
122 #define wp_api_event_dtmf_digit dtmf.digit
123 #define wp_api_event_dtmf_type dtmf.type
124 #define wp_api_event_dtmf_port dtmf.port
125 #define wp_api_event_ohttimer rm_common.ohttimer
126 #define wp_api_event_polarity rm_common.polarity
127 #define wp_api_event_polarity_reverse rm_common.polarity_reverse
128 #define wp_api_event_link_status linkstatus.status
129 #define wp_api_event_serial_status serial.status
130 #define wp_api_event_time_stamp_sec time_stamp_sec
131 #define wp_api_event_time_stamp_usec time_stamp_usec
132 #define wp_api_event_gain_value rm_gain.gain
155 #define WAN_MAX_HDR_SZ 64
156 #define WAN_MAX_HDR_SZ_UNION WAN_MAX_HDR_SZ-sizeof(u_int8_t)-sizeof(u_int16_t)-(sizeof(u_int32_t)*2)
224 u_int8_t reserved[WAN_MAX_HDR_SZ_UNION];
234 #define wp_api_hdr_operation_status operation_status
235 #define wp_api_hdr_data_length data_length
236 #define wp_api_hdr_time_stamp_sec time_stamp_sec
237 #define wp_api_hdr_time_stamp_use time_stamp_usec
239 #define wp_api_legacy_rbs_channel aft_legacy_rbs.channel
240 #define wp_api_legacy_rbs_status aft_legacy_rbs.status
242 #define wp_api_rx_hdr_crc rx_h.crc
243 #define wp_api_rx_hdr_error_map rx_h.crc
244 #define wp_api_rx_hdr_max_queue_length rx_h.max_rx_queue_length
245 #define wp_api_rx_hdr_number_of_frames_in_queue rx_h.current_number_of_frames_in_rx_queue
246 #define wp_api_rx_hdr_time_stamp_sec time_stamp_sec
247 #define wp_api_rx_hdr_time_stamp_use time_stamp_usec
248 #define wp_api_rx_hdr_errors rx_h.errors
250 #define wp_api_tx_hdr_max_queue_length tx_h.max_tx_queue_length
251 #define wp_api_tx_hdr_number_of_frames_in_queue tx_h.current_number_of_frames_in_tx_queue
252 #define wp_api_tx_hdr_tx_idle_packets tx_h.tx_idle_packets
253 #define wp_api_tx_hdr_time_stamp_sec time_stamp_sec
254 #define wp_api_tx_hdr_time_stamp_use time_stamp_usec
255 #define wp_api_tx_hdr_errors tx_h.errors
262 #if !defined(__WINDOWS__)
263 #define wp_api_rx_hdr_error_flag operation_status
264 #define wp_api_rx_hdr_station operation_status
265 #define wp_api_rx_hdr_time_stamp data_length
268 #define wp_api_tx_hdr_hdlc_rpt_len rpt.len
269 #define wp_api_tx_hdr_hdlc_rpt_data rpt.data
270 #define wp_api_tx_hdr_hdlc_rpt_repeat rpt.repeat
272 #define wp_api_tx_hdr_aft_ss7_type ss7_hw.type
273 #define wp_api_tx_hdr_aft_ss7_force_tx ss7_hw.force_tx
274 #define wp_api_tx_hdr_aft_ss7_data ss7_hw.data
277 #define wp_api_rx_hdr_xdlc_state xdlc.state
278 #define wp_api_rx_hdr_xdlc_address xdlc.address
279 #define wp_api_rx_hdr_xdlc_exception xdlc.exception
281 #define wan_hdr_xdlc_state xdlc.state
282 #define wan_hdr_xdlc_address xdlc.address
283 #define wan_hdr_xdlc_exception xdlc.exception
286 #define wp_api_rx_hdr_chdlc_error_flag wp_api_rx_hdr_error_flag
287 #define wp_api_rx_hdr_chdlc_time_stamp wp_api_rx_hdr_time_stamp
288 #define wp_api_rx_hdr_chdlc_time_sec time_stamp_sec
289 #define wp_api_rx_hdr_chdlc_time_usec time_stamp_usec
291 #define wan_hdr_chdlc_error_flag wp_api_rx_hdr_chdlc_error_flag
292 #define wan_hdr_chdlc_time_stamp wp_api_rx_hdr_chdlc_time_stamp
293 #define wan_hdr_chdlc_time_sec wp_api_rx_hdr_chdlc_time_sec
294 #define wan_hdr_chdlc_time_usec wp_api_rx_hdr_chdlc_time_usec
297 #define wp_api_rx_hdr_bitstrm_error_flag wp_api_rx_hdr_error_flag
298 #define wp_api_rx_hdr_bitstrm_time_stamp wp_api_rx_hdr_time_stamp
299 #define wp_api_rx_hdr_bitstrm_time_sec time_stamp_sec
300 #define wp_api_rx_hdr_bitstrm_time_usec time_stamp_usec
301 #define wp_api_rx_hdr_bitstrm_channel bitstrm.channel
302 #define wp_api_rx_hdr_bitstrm_direction bitstrm.direction
304 #define wan_hdr_bitstrm_error_flag wp_api_rx_hdr_bitstrm_error_flag
305 #define wan_hdr_bitstrm_time_stamp wp_api_rx_hdr_bitstrm_data_length
306 #define wan_hdr_bitstrm_time_sec wp_api_rx_hdr_bitstrm_time_sec
307 #define wan_hdr_bitstrm_time_usec wp_api_rx_hdr_bitstrm_time_usec
308 #define wan_hdr_bitstrm_channel wp_api_rx_hdr_bitstrm_channel
309 #define wan_hdr_bitstrm_direction wp_api_rx_hdr_bitstrm_direction
312 #define wp_api_rx_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
313 #define wp_api_rx_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
314 #define wp_api_rx_hdr_hdlc_time_sec time_stamp_sec
315 #define wp_api_rx_hdr_hdlc_time_usec time_stamp_usec
317 #define wan_hdr_hdlc_error_flag wp_api_rx_hdr_error_flag
318 #define wan_hdr_hdlc_time_stamp wp_api_rx_hdr_time_stamp
321 #define wp_api_rx_hdr_lapb_pf lapb.pf
322 #define wp_api_rx_hdr_lapb_exception lapb.exception
323 #define wp_api_rx_hdr_lapb_time_sec time_stamp_sec
324 #define wp_api_rx_hdr_lapb_time_usec time_stamp_usec
326 #define wan_hdr_lapb_pf wp_api_rx_hdr_lapb_pf
327 #define wan_hdr_lapb_exception wp_api_rx_hdr_lapb_exception
330 #define wp_api_rx_hdr_fr_attr wp_api_rx_hdr_error_flag
331 #define wp_api_rx_hdr_fr_time_stamp wp_api_rx_hdr_time_stamp
332 #define wp_api_rx_hdr_fr_time_sec time_stamp_sec
333 #define wp_api_rx_hdr_fr_time_usec time_stamp_usec
335 #define wan_hdr_fr_attr wp_api_rx_hdr_fr_attr
336 #define wan_hdr_fr_time_stamp wp_api_rx_hdr_fr_time_stamp
337 #define wan_hdr_fr_time_sec wp_api_rx_hdr_fr_time_sec
338 #define wan_hdr_fr_time_usec wp_api_rx_hdr_fr_time_usec
341 #define wp_api_rx_hdr_ss7_legacy_sio wp_api_rx_hdr_error_flag
342 #define wp_api_rx_hdr_ss7_legacy_time_stamp wp_api_rx_hdr_time_stamp
344 #define wp_api_rx_hdr_event_serial_status serial.status
357 #define MAX_NO_DATA_BYTES_IN_FRAME 8188
384 #define wp_api_el_operation_status hdr.wp_api_hdr_operation_status
385 #define wp_api_el_data_length hdr.wp_api_hdr_data_length
386 #define wp_api_el_time_stamp_sec hdr.wp_api_hdr_time_stamp_sec
387 #define wp_api_el_time_stamp_use hdr.wp_api_hdr_time_stamp_use
389 #define wp_api_rx_el_crc hdr.wp_api_rx_hdr_crc
390 #define wp_api_rx_el_max_queue_length hdr.wp_api_rx_hdr_max_queue_length
391 #define wp_api_rx_el_number_of_frames_in_queue hdr.wp_api_rx_hdr_number_of_frames_in_queue
393 #define wp_api_tx_el_max_queue_length hdr.wp_api_tx_hdr_max_queue_length
394 #define wp_api_tx_el_number_of_frames_in_queue hdr.wp_api_tx_hdr_number_of_frames_in_queue
421 void * WP_POINTER_64 iov_base;
434 #define WAN_IOVEC_LIST_LEN 5
547 SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR,
557 SANG_STATUS_NO_FREE_BUFFERS,
575 #define SDLA_DECODE_SANG_STATUS(status) \
576 (abs((int)status) == SANG_STATUS_SUCCESS) ? "SANG_STATUS_SUCCESS" :\
577 (abs((int)status) == SANG_STATUS_COMMAND_ALREADY_RUNNING) ? "SANG_STATUS_COMMAND_ALREADY_RUNNING":\
578 (abs((int)status) == SANG_STATUS_BUFFER_TOO_SMALL) ? "SANG_STATUS_BUFFER_TOO_SMALL":\
579 (abs((int)status) == SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY) ? "SANG_STATUS_FAILED_TO_LOCK_USER_MEMORY":\
580 (abs((int)status) == SANG_STATUS_FAILED_ALLOCATE_MEMORY) ? "SANG_STATUS_FAILED_ALLOCATE_MEMORY":\
581 (abs((int)status) == SANG_STATUS_INVALID_DEVICE_REQUEST) ? "SANG_STATUS_INVALID_DEVICE_REQUEST":\
582 (abs((int)status) == SANG_STATUS_INVALID_PARAMETER) ? "SANG_STATUS_INVALID_PARAMETER":\
583 (abs((int)status) == SANG_STATUS_DATA_QUEUE_EMPTY) ? "SANG_STATUS_DATA_QUEUE_EMPTY":\
584 (abs((int)status) == SANG_STATUS_DATA_QUEUE_FULL) ? "SANG_STATUS_DATA_QUEUE_FULL":\
585 (abs((int)status) == SANG_STATUS_RX_DATA_TIMEOUT) ? "SANG_STATUS_RX_DATA_TIMEOUT":\
586 (abs((int)status) == SANG_STATUS_RX_DATA_AVAILABLE) ? "SANG_STATUS_RX_DATA_AVAILABLE":\
587 (abs((int)status) == SANG_STATUS_TX_TIMEOUT) ? "SANG_STATUS_TX_TIMEOUT":\
588 (abs((int)status) == SANG_STATUS_TX_DATA_TOO_LONG) ? "SANG_STATUS_TX_DATA_TOO_LONG":\
589 (abs((int)status) == SANG_STATUS_TX_DATA_TOO_SHORT) ? "SANG_STATUS_TX_DATA_TOO_SHORT":\
590 (abs((int)status) == SANG_STATUS_LINE_DISCONNECTED) ? "SANG_STATUS_LINE_DISCONNECTED":\
591 (abs((int)status) == SANG_STATUS_LINE_CONNECTED) ? "SANG_STATUS_LINE_CONNECTED":\
592 (abs((int)status) == SANG_STATUS_PROTOCOL_DISCONNECTED) ? "SANG_STATUS_PROTOCOL_DISCONNECTED":\
593 (abs((int)status) == SANG_STATUS_PROTOCOL_CONNECTED) ? "SANG_STATUS_PROTOCOL_CONNECTED":\
594 (abs((int)status) == SANG_STATUS_GENERAL_ERROR) ? "SANG_STATUS_GENERAL_ERROR":\
595 (abs((int)status) == SANG_STATUS_DEVICE_BUSY) ? "SANG_STATUS_DEVICE_BUSY":\
596 (abs((int)status) == SANG_STATUS_INVALID_DEVICE) ? "SANG_STATUS_INVALID_DEVICE":\
597 (abs((int)status) == SANG_STATUS_IO_ERROR) ? "SANG_STATUS_IO_ERROR":\
598 (abs((int)status) == SANG_STATUS_UNSUPPORTED_FUNCTION) ? "SANG_STATUS_UNSUPPORTED_FUNCTION":\
599 (abs((int)status) == SANG_STATUS_UNSUPPORTED_PROTOCOL) ? "SANG_STATUS_UNSUPPORTED_PROTOCOL":\
600 (abs((int)status) == SANG_STATUS_DEVICE_ALREADY_EXIST) ? "SANG_STATUS_DEVICE_ALREADY_EXIST":\
601 (abs((int)status) == SANG_STATUS_DEV_INIT_INCOMPLETE) ? "SANG_STATUS_DEV_INIT_INCOMPLETE":\
602 (abs((int)status) == SANG_STATUS_API_EVENT_AVAILABLE) ? "SANG_STATUS_API_EVENT_AVAILABLE":\
603 (abs((int)status) == SANG_STATUS_REGISTRY_ERROR) ? "SANG_STATUS_REGISTRY_ERROR":\
604 (abs((int)status) == SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED) ? "SANG_STATUS_CAN_NOT_STOP_DEVICE_WHEN_ALREADY_STOPPED":\
605 (abs((int)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":\
606 (abs((int)status) == SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR) ? "SANG_STATUS_ASSOCIATED_IRP_SYSTEM_BUFFER_NULL_ERROR":\
607 (abs((int)status) == SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR) ? "SANG_STATUS_STRUCTURE_SIZE_MISMATCH_ERROR":\
608 (abs((int)status) == SANG_STATUS_INVALID_IRQL) ? "SANG_STATUS_INVALID_IRQL":\
609 (abs((int)status) == SANG_STATUS_NO_DATA_AVAILABLE) ? "SANG_STATUS_NO_DATA_AVAILABLE":\
610 (abs((int)status) == SANG_STATUS_IO_PENDING) ? "SANG_STATUS_IO_PENDING":\
611 (abs((int)status) == SANG_STATUS_APIPOLL_TIMEOUT) ? "SANG_STATUS_APIPOLL_TIMEOUT":\
612 (abs((int)status) == SANG_STATUS_NO_FREE_BUFFERS) ? "SANG_STATUS_NO_FREE_BUFFERS":\
613 (abs((int)status) == SANG_STATUS_OPTION_NOT_SUPPORTED) ? "SANG_STATUS_OPTION_NOT_SUPPORTED":\
616 #define SANG_SUCCESS(status) (status == SANG_STATUS_SUCCESS)
617 #define SANG_ERROR(status) (!SANG_SUCCESS(status))
619 #if defined(__WINDOWS__)
620 #if defined(WAN_KERNEL) || defined(USE_SANGOMA_ERRNO)
631 # undef EPROTONOSUPPORT
640 # define ETIMEDOUT SANG_STATUS_GENERAL_ERROR
641 # define EFAULT SANG_STATUS_GENERAL_ERROR
642 # define EBUSY SANG_STATUS_DEVICE_BUSY
643 # define ENODEV SANG_STATUS_INVALID_DEVICE
644 # define EINVAL SANG_STATUS_INVALID_PARAMETER
645 # define EIO SANG_STATUS_IO_ERROR
646 # define EPFNOSUPPORT SANG_STATUS_UNSUPPORTED_FUNCTION
647 # define EPROTONOSUPPORT SANG_STATUS_UNSUPPORTED_PROTOCOL
648 # define ENOMEM SANG_STATUS_FAILED_ALLOCATE_MEMORY
649 # define EEXIST SANG_STATUS_DEVICE_ALREADY_EXIST
650 # define ENOBUFS SANG_STATUS_NO_FREE_BUFFERS
651 # define EOPNOTSUPP SANG_STATUS_OPTION_NOT_SUPPORTED
652 # define ENXIO EFAULT
653 # define ENETDOWN SANG_STATUS_LINE_DISCONNECTED
654 # define EAGAIN SANG_STATUS_DEVICE_BUSY
655 # define EFBIG SANG_STATUS_TX_DATA_TOO_LONG
656 # define EAFNOSUPPORT SANG_STATUS_UNSUPPORTED_FUNCTION
SANG_STATUS
Wanpipe API Return codes.
enum SANG_STATUS SANG_STATUS_T
Wanpipe API Return codes.
struct wan_iovec_list wan_iovec_list_t
Fixed-length List of Memory Descriptors.
unsigned char data[MAX_NO_DATA_BYTES_IN_FRAME]
struct wp_api_hdr::@39::@43 serial
u_int8_t operation_status
u_int8_t current_number_of_frames_in_tx_queue
Memory Descriptor of a single buffer. This structure used internally by libsangoma.
unsigned char reserved[WAN_MAX_EVENT_SZ_UNION]
u_int32_t poll_events_bitmap
u_int32_t tx_idle_packets
u_int8_t current_number_of_frames_in_rx_queue
struct _API_POLL_STRUCT API_POLL_STRUCT
Windows poll structure used to implement blocking poll for read/write/event.
struct wp_api_hdr::@39::@41 rx_h
Wanpipe API Element contains header and data.
struct wp_api_element wp_api_element_t
Wanpipe API Element contains header and data.
u_int32_t user_flags_bitmap
Wanpipe API Event Structure.
u_int32_t time_stamp_usec
Fixed-length List of Memory Descriptors.
Variable-length List of Memory Descriptors.
wan_iovec_t *WP_POINTER_64 msg_iov
u_int8_t max_rx_queue_length
u_int32_t time_stamp_usec
struct wan_iovec wan_iovec_t
Memory Descriptor of a single buffer. This structure used internally by libsangoma.
Windows poll structure used to implement blocking poll for read/write/event.
u_int8_t max_tx_queue_length
struct wp_api_event wp_api_event_t
Wanpipe API Event Structure.
struct wan_msghdr wan_msghdr_t
Variable-length List of Memory Descriptors.
Wanpipe API Header Structure.
unsigned char operation_status
#define MAX_NO_DATA_BYTES_IN_FRAME
Maximum tx/rx data size.
wan_iovec_t iovec_list[WAN_IOVEC_LIST_LEN]
struct wp_api_hdr wp_api_hdr_t
Wanpipe API Header Structure.