#include "hal-msg.h"
#include "ipc.h"
#include "hidhost.h"
-#include "adapter.h"
#include "utils.h"
#define L2CAP_PSM_HIDP_CTRL 0x11
/* HID Virtual Cable Unplug */
#define HID_VIRTUAL_CABLE_UNPLUG 0x05
+static bdaddr_t adapter_addr;
+
static int notification_sk = -1;
static GIOChannel *ctrl_io = NULL;
static GIOChannel *intr_io = NULL;
{
struct hid_device *dev = user_data;
GError *err = NULL;
- const bdaddr_t *src = bt_adapter_get_address();
DBG("");
/* Connect to the HID interrupt channel */
dev->intr_io = bt_io_connect(interrupt_connect_cb, dev, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, src,
+ BT_IO_OPT_SOURCE_BDADDR, &adapter_addr,
BT_IO_OPT_DEST_BDADDR, &dev->dst,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_INTR,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
struct hid_device *dev = data;
sdp_list_t *list;
GError *gerr = NULL;
- const bdaddr_t *src = bt_adapter_get_address();
DBG("");
}
dev->ctrl_io = bt_io_connect(control_connect_cb, dev, NULL, &gerr,
- BT_IO_OPT_SOURCE_BDADDR, src,
+ BT_IO_OPT_SOURCE_BDADDR, &adapter_addr,
BT_IO_OPT_DEST_BDADDR, &dev->dst,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
char addr[18];
bdaddr_t dst;
GSList *l;
- const bdaddr_t *src = bt_adapter_get_address();
uuid_t uuid;
DBG("");
DBG("connecting to %s", addr);
bt_string2uuid(&uuid, HID_UUID);
- if (bt_search_service(src, &dev->dst, &uuid, hid_sdp_search_cb, dev,
- NULL) < 0) {
+ if (bt_search_service(&adapter_addr, &dev->dst, &uuid,
+ hid_sdp_search_cb, dev, NULL) < 0) {
error("Failed to search sdp details");
hid_device_free(dev);
return HAL_STATUS_FAILED;
bool bt_hid_register(int sk, const bdaddr_t *addr)
{
GError *err = NULL;
- const bdaddr_t *src = bt_adapter_get_address();
DBG("");
+ bacpy(&adapter_addr, addr);
+
ctrl_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, src,
+ BT_IO_OPT_SOURCE_BDADDR, &adapter_addr,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_CTRL,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);
}
intr_io = bt_io_listen(connect_cb, NULL, NULL, NULL, &err,
- BT_IO_OPT_SOURCE_BDADDR, src,
+ BT_IO_OPT_SOURCE_BDADDR, &adapter_addr,
BT_IO_OPT_PSM, L2CAP_PSM_HIDP_INTR,
BT_IO_OPT_SEC_LEVEL, BT_IO_SEC_LOW,
BT_IO_OPT_INVALID);