summaryrefslogtreecommitdiff
path: root/package/libtapi/src/tapi-port.h
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2010-11-03 19:12:34 +0000
committerJohn Crispin <john@openwrt.org>2010-11-03 19:12:34 +0000
commita8b2a07f375edefec242de9f20d4aefafa927517 (patch)
treed15f5bb696bfa9dfd9555788d411e0ba59b99a65 /package/libtapi/src/tapi-port.h
parent72ae8452cda47d6e18e664097a4adbc0eee3fc7b (diff)
downloadmtk-20170518-a8b2a07f375edefec242de9f20d4aefafa927517.zip
mtk-20170518-a8b2a07f375edefec242de9f20d4aefafa927517.tar.gz
mtk-20170518-a8b2a07f375edefec242de9f20d4aefafa927517.tar.bz2
* adds a rewrite of the tapi drivers + sip app. this is the result of lars' gsoc 2010 project, Thanks !
SVN-Revision: 23840
Diffstat (limited to 'package/libtapi/src/tapi-port.h')
-rw-r--r--package/libtapi/src/tapi-port.h66
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 0000000..a290a40
--- /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