summaryrefslogtreecommitdiff
path: root/emulator/btdev.h
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-12-17 02:03:22 +0100
committerMarcel Holtmann <marcel@holtmann.org>2012-12-17 02:03:22 +0100
commit747c74538fcd1130ab038d944c0e4861c93ab42e (patch)
tree59ef9eee8779ce7ee06af3e385672aaa6da286f3 /emulator/btdev.h
parent81ae935d1b0ea951090c30fb0d7825a61ba9b611 (diff)
downloadbluez-747c74538fcd1130ab038d944c0e4861c93ab42e.tar.gz
emulator: Add support for custom HCI command handling
Diffstat (limited to 'emulator/btdev.h')
-rw-r--r--emulator/btdev.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/emulator/btdev.h b/emulator/btdev.h
index 1a4be372a..8c4afc751 100644
--- a/emulator/btdev.h
+++ b/emulator/btdev.h
@@ -24,6 +24,32 @@
#include <stdint.h>
+#define BTDEV_RESPONSE_DEFAULT 0
+#define BTDEV_RESPONSE_COMMAND_STATUS 1
+#define BTDEV_RESPONSE_COMMAND_COMPLETE 2
+
+typedef struct btdev_callback * btdev_callback;
+
+void btdev_command_response(btdev_callback callback, uint8_t response,
+ uint8_t status, const void *data, uint8_t len);
+
+#define btdev_command_default(callback) \
+ btdev_command_response(callback, \
+ BTDEV_RESPONSE_DEFAULT, 0x00, NULL, 0);
+
+#define btdev_command_status(callback, status) \
+ btdev_command_response(callback, \
+ BTDEV_RESPONSE_COMMAND_STATUS, status, NULL, 0);
+
+#define btdev_command_complete(callback, data, len) \
+ btdev_command_response(callback, \
+ BTDEV_RESPONSE_COMMAND_COMPLETE, 0x00, data, len);
+
+
+typedef void (*btdev_command_func) (uint16_t opcode,
+ const void *data, uint8_t len,
+ btdev_callback callback, void *user_data);
+
typedef void (*btdev_send_func) (const void *data, uint16_t len,
void *user_data);
@@ -40,6 +66,9 @@ void btdev_destroy(struct btdev *btdev);
void btdev_set_bdaddr(struct btdev *btdev, uint8_t *bdaddr);
+void btdev_set_command_handler(struct btdev *btdev, btdev_command_func handler,
+ void *user_data);
+
void btdev_set_send_handler(struct btdev *btdev, btdev_send_func handler,
void *user_data);