119 lines
3.6 KiB
Plaintext
119 lines
3.6 KiB
Plaintext
/*****************************************************************************
|
|
* libhpsangoma.h : Sangoma High Performance TDM API - Span Based Library
|
|
*
|
|
* Author(s): Nenad Corbic <ncorbic@sangoma.com>
|
|
*
|
|
* Copyright: (c) 2008 Nenad Corbic <ncorbic@sangoma.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
* ============================================================================
|
|
*/
|
|
|
|
#ifndef _LIB_HP_SANGOMA_PRIV_H
|
|
#define _LIB_HP_SANGOMA_PRIV_H
|
|
|
|
#include "libhpsangoma.h"
|
|
|
|
|
|
/*!
|
|
\brief library print function based on registered span callback function
|
|
\return void
|
|
*/
|
|
#define lib_printf(level, fp, fmt, ...) if (lib_log) lib_log(level, fp, __FILE__, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
|
|
|
|
extern void (*lib_log)(int level, FILE *fp, char *file, const char *func, int line, char *fmt, ...);
|
|
|
|
|
|
/*---------------------------------------------------------
|
|
* PRIVATE - FUNCTIONS
|
|
*/
|
|
|
|
/*!
|
|
\brief Span read data from a hw interface
|
|
\param fd socket file descriptor to span hw interface
|
|
\param hdrbuf pointer to header buffer used for misc oob data - not used
|
|
\param hdrlen size of hdr buffer - always standard 16 bytes
|
|
\param databuf pointer to span data that includes all timeslots * chunk size
|
|
\param datalen size of span data: timeslots * chunk size
|
|
\param flag selects normal (0) or oob (MSG_OOB) read queue
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_readmsg_hp_tdm(int fd, void *hdrbuf, int hdrlen, void *databuf, int datalen, int flag);
|
|
|
|
|
|
/*!
|
|
\brief Span write data into a hw interface
|
|
\param fd socket file descriptor to span hw interface
|
|
\param hdrbuf pointer to header buffer used for misc oob data - not used
|
|
\param hdrlen size of hdr buffer - always standard 16 bytes
|
|
\param databuf pointer to span data that includes all timeslots * chunk size
|
|
\param datalen size of span data: timeslots * chunk size
|
|
\param flag selects normal (0) or oob (MSG_OOB) read queue
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_writemsg_hp_tdm(int fd, void *hdrbuf, int hdrlen, void *databuf, unsigned short datalen, int flag);
|
|
|
|
/*!
|
|
\brief Execute a management ioctl command
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int do_wanpipemon_cmd(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Get full span hw configuration
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
unsigned char sangoma_get_cfg(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Open socket to span hw interface
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_hptdm_span_open(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Read oob event from hw and push oob event up to the user. Called after select()
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_hp_tdm_handle_oob_event(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Multiplex span rx data and push it up to each channel
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_hp_tdm_push_rx_data(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Read data from hw interface and pass it up to the rxdata handler: called by run_span()
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_hp_tdm_handle_read_event(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
/*!
|
|
\brief Pull data from all chans and write data to hw interface: called by run_span()
|
|
\param span span object
|
|
\return 0 = pass, non zero fail
|
|
*/
|
|
int sangoma_hp_tdm_handle_write_event(sangoma_hptdm_span_t *span);
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|