summaryrefslogtreecommitdiff
path: root/deps/bt/c_src/bt_sub.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/bt/c_src/bt_sub.h')
-rw-r--r--deps/bt/c_src/bt_sub.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/deps/bt/c_src/bt_sub.h b/deps/bt/c_src/bt_sub.h
new file mode 100644
index 0000000..75aed8a
--- /dev/null
+++ b/deps/bt/c_src/bt_sub.h
@@ -0,0 +1,82 @@
+#ifndef __BT_SUB_H__
+#define __BT_SUB_H__
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "dthread/include/ddata.h"
+
+typedef enum {
+ INQUIRY,
+ REMOTE_NAME,
+ CONNECT,
+ SDP_QUERY,
+ SDP,
+ RFCOMM,
+ RFCOMM_LISTEN,
+ L2CAP,
+ L2CAP_LISTEN
+} subscription_type_t;
+
+typedef struct _subscription_t
+{
+ uint32_t ref; // ref count
+ subscription_type_t type; // type of subscription
+ uint32_t id; // subscription id
+ uint32_t cmdid; // current async cmdid (if any)
+ void* handle; // Bluetooth object handle
+ void* opaque; // subscription data
+ ddata_t* out; // send buffer
+ void (*cleanup)(struct _subscription_t* s); // clean up callback
+ struct _subscription_t* accept; // if on accept list
+} subscription_t;
+
+typedef struct _subscription_link_t
+{
+ struct _subscription_list_t* list;
+ struct _subscription_link_t* next;
+ struct _subscription_link_t* prev;
+ subscription_t* s;
+} subscription_link_t;
+
+typedef struct _subscription_list_t
+{
+ subscription_link_t* first;
+ subscription_link_t* last;
+ size_t length;
+} subscription_list_t;
+
+extern char* format_subscription(subscription_t* s);
+extern subscription_t* new_subscription(subscription_type_t type,
+ uint32_t id, uint32_t cmdid,
+ void* handle,
+ void (*cleanup)(subscription_t* s));
+extern subscription_list_t* new_subscription_list(void);
+extern subscription_t* retain_subscription(subscription_t* s);
+extern subscription_link_t* new_subscription_link(subscription_list_t* list,
+ subscription_t* s);
+extern void free_subscription(subscription_t* s);
+extern subscription_t* release_subscription(subscription_t* s);
+extern subscription_link_t* insert_after_link(subscription_link_t* link,
+ subscription_link_t* after_link);
+extern subscription_link_t* insert_before_link(subscription_link_t* link,
+ subscription_link_t* before_link);
+extern int insert_link_first(subscription_link_t* link);
+extern int insert_first(subscription_list_t* list, subscription_t* s);
+extern int insert_link_last(subscription_link_t* link);
+extern int insert_last(subscription_list_t* list, subscription_t*s);
+extern subscription_link_t* find_subscription_link(subscription_list_t* list,
+ subscription_type_t type,
+ uint32_t sid);
+extern subscription_t* find_subscription(subscription_list_t* list,
+ subscription_type_t type,
+ uint32_t sid);
+extern void unlink_subscription(subscription_link_t* link);
+extern int remove_subscription(subscription_list_t* list,
+ subscription_type_t type, uint32_t sid);
+
+
+
+
+
+#endif