summaryrefslogtreecommitdiffstats
path: root/input/manager.c
diff options
context:
space:
mode:
authorClaudio Takahasi <claudio.takahasi@openbossa.org>2008-09-04 12:18:28 -0300
committerClaudio Takahasi <claudio.takahasi@openbossa.org>2008-09-04 12:18:28 -0300
commitddb4d5c0e46f6fd606e1d4123447c4a8ce747b3d (patch)
tree2b9fdbb8e29864030d1eafb9ac38e2ca020a36d3 /input/manager.c
parent9304400a8efe5b59c4bcd88fda9083b4a5cf7b93 (diff)
Input: Converting hid server to adapter driver structure
Diffstat (limited to 'input/manager.c')
-rw-r--r--input/manager.c41
1 files changed, 35 insertions, 6 deletions
diff --git a/input/manager.c b/input/manager.c
index dfd2da3a..a2a22762 100644
--- a/input/manager.c
+++ b/input/manager.c
@@ -171,7 +171,7 @@ static void input_remove(struct btd_device *device, const char *uuid)
input_device_unregister(path, uuid);
}
-static int hid_probe(struct btd_device *device, GSList *records)
+static int hid_device_probe(struct btd_device *device, GSList *records)
{
struct btd_adapter *adapter = device_get_adapter(device);
const gchar *path = device_get_path(device);
@@ -206,7 +206,7 @@ done:
HID_UUID, hidp.idle_to);
}
-static void hid_remove(struct btd_device *device)
+static void hid_device_remove(struct btd_device *device)
{
input_remove(device, HID_UUID);
}
@@ -252,11 +252,33 @@ static void headset_remove(struct btd_device *device)
input_remove(device, HSP_HS_UUID);
}
+static int hid_server_probe(struct btd_adapter *adapter)
+{
+ const char *addr;
+ bdaddr_t src;
+
+ addr = adapter_get_address(adapter);
+ str2ba(addr, &src);
+
+ return server_start(&src);
+}
+
+static void hid_server_remove(struct btd_adapter *adapter)
+{
+ const char *addr;
+ bdaddr_t src;
+
+ addr = adapter_get_address(adapter);
+ str2ba(addr, &src);
+
+ server_stop(&src);
+}
+
static struct btd_device_driver input_hid_driver = {
.name = "input-hid",
.uuids = BTD_UUIDS(HID_UUID),
- .probe = hid_probe,
- .remove = hid_remove,
+ .probe = hid_device_probe,
+ .remove = hid_device_remove,
};
static struct btd_device_driver input_headset_driver = {
@@ -266,6 +288,12 @@ static struct btd_device_driver input_headset_driver = {
.remove = headset_remove,
};
+static struct btd_adapter_driver input_server_driver = {
+ .name = "input-server",
+ .probe = hid_server_probe,
+ .remove = hid_server_remove,
+};
+
int input_manager_init(DBusConnection *conn, GKeyFile *config)
{
GError *err = NULL;
@@ -281,7 +309,7 @@ int input_manager_init(DBusConnection *conn, GKeyFile *config)
connection = dbus_connection_ref(conn);
- server_start();
+ btd_register_adapter_driver(&input_server_driver);
btd_register_device_driver(&input_hid_driver);
btd_register_device_driver(&input_headset_driver);
@@ -291,7 +319,8 @@ int input_manager_init(DBusConnection *conn, GKeyFile *config)
void input_manager_exit(void)
{
- server_stop();
+
+ btd_unregister_adapter_driver(&input_server_driver);
btd_unregister_device_driver(&input_hid_driver);
btd_unregister_device_driver(&input_headset_driver);