#include "log.h"
+#include "lib/uuid.h"
#include "../src/adapter.h"
#include "../src/device.h"
#include "../src/profile.h"
uint32_t reconnect_attempt;
};
-static GSList *devices = NULL;
static int idle_timeout = 0;
void input_set_idle_timeout(int timeout)
static void input_device_enter_reconnect_mode(struct input_device *idev);
-static struct input_device *find_device_by_path(GSList *list, const char *path)
-{
- for (; list; list = list->next) {
- struct input_device *idev = list->data;
-
- if (!strcmp(idev->path, path))
- return idev;
- }
-
- return NULL;
-}
-
static void input_device_free(struct input_device *idev)
{
if (idev->dc_id)
DBG("%s", path);
- idev = find_device_by_path(devices, path);
- if (idev)
- return -EEXIST;
-
idev = input_device_new(service);
if (!idev)
return -EINVAL;
btd_service_set_user_data(service, idev);
- devices = g_slist_append(devices, idev);
-
return 0;
}
static struct input_device *find_device(const bdaddr_t *src,
const bdaddr_t *dst)
{
- GSList *list;
+ struct btd_device *device;
+ struct btd_service *service;
- for (list = devices; list != NULL; list = list->next) {
- struct input_device *idev = list->data;
+ device = adapter_find_device(adapter_find(src), dst);
+ if (device == NULL)
+ return NULL;
- if (!bacmp(&idev->src, src) && !bacmp(&idev->dst, dst))
- return idev;
- }
+ service = btd_device_get_service(device, HID_UUID);
+ if (service == NULL)
+ return NULL;
- return NULL;
+ return btd_service_get_user_data(service);
}
void input_device_unregister(struct btd_service *service)
g_dbus_unregister_interface(btd_get_dbus_connection(),
idev->path, INPUT_INTERFACE);
- devices = g_slist_remove(devices, idev);
input_device_free(idev);
}