diff options
author | John Crispin <blogic@openwrt.org> | 2010-11-03 19:12:34 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2010-11-03 19:12:34 +0000 |
commit | b27571141a7270c79f4e8bde7212797cd2fa8f22 (patch) | |
tree | 1b900bd32ce90c62703905c460db950c7c2ba9ec /package/libtapi/src/tapi-port.h | |
parent | 5f37a84ad559c0c8101cea2c2d86e4aab0a35404 (diff) | |
download | upstream-b27571141a7270c79f4e8bde7212797cd2fa8f22.tar.gz upstream-b27571141a7270c79f4e8bde7212797cd2fa8f22.tar.bz2 upstream-b27571141a7270c79f4e8bde7212797cd2fa8f22.zip |
[ifxmips]
* adds a rewrite of the tapi drivers + sip app. this is the result of lars' gsoc 2010 project, Thanks !
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23840 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/libtapi/src/tapi-port.h')
-rw-r--r-- | package/libtapi/src/tapi-port.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/package/libtapi/src/tapi-port.h b/package/libtapi/src/tapi-port.h new file mode 100644 index 0000000000..a290a4002d --- /dev/null +++ b/package/libtapi/src/tapi-port.h @@ -0,0 +1,66 @@ +#ifndef __TAPI_PORT_H__ +#define __TAPI_PORT_H__ + +#include <sys/time.h> + +#include "list.h" +#include "events.h" + +struct tapi_port; +struct tapi_device; + +struct tapi_dtmf_event { + struct timeval time; + unsigned char code; +}; + +struct tapi_hook_event { + bool on; +}; + +enum tapi_event_type { + TAPI_EVENT_TYPE_DTMF, + TAPI_EVENT_TYPE_HOOK, +}; + +struct tapi_event { + enum tapi_event_type type; + union { + struct tapi_dtmf_event dtmf; + struct tapi_hook_event hook; + }; +}; + +struct tapi_port_event_listener { + void (*callback)(struct tapi_port *, struct tapi_event *event, void *data); + void *data; + + struct list_head head; +}; + +struct tapi_port { + int id; + int fd; + int input_fd; + unsigned int ep; + + struct event_callback input_cb; + + struct list_head event_listeners; +}; + +int tapi_port_open(struct tapi_device *dev, unsigned int id, struct tapi_port +*port); +int tapi_port_set_ring(struct tapi_port *port, bool ring); +int tapi_port_register_event(struct tapi_port *port, + struct tapi_port_event_listener *cb); + +void tapi_port_unregister_event(struct tapi_port *port, + struct tapi_port_event_listener *cb); + +static inline int tapi_port_get_endpoint(struct tapi_port *port) +{ + return port->ep; +} + +#endif |