diff options
Diffstat (limited to 'plugins/hfp_hf_bluez5.c')
-rw-r--r-- | plugins/hfp_hf_bluez5.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/plugins/hfp_hf_bluez5.c b/plugins/hfp_hf_bluez5.c index ca20bfc0..6de5065e 100644 --- a/plugins/hfp_hf_bluez5.c +++ b/plugins/hfp_hf_bluez5.c @@ -63,7 +63,6 @@ struct hfp { DBusMessage *msg; }; -static GHashTable *modem_hash = NULL; static GDBusClient *bluez = NULL; static guint sco_watch = 0; @@ -181,8 +180,6 @@ static struct ofono_modem *modem_register(const char *device, ofono_modem_set_name(modem, alias); ofono_modem_register(modem); - g_hash_table_insert(modem_hash, g_strdup(device), modem); - return modem; } @@ -300,6 +297,18 @@ static struct ofono_modem_driver hfp_driver = { .post_sim = hfp_post_sim, }; +static ofono_bool_t device_path_compare(struct ofono_modem *modem, + void *userdata) +{ + const char *path = userdata; + const char *value = ofono_modem_get_string(modem, "DevicePath"); + + if (value == NULL) + return FALSE; + + return g_str_equal(path, value); +} + static DBusMessage *profile_new_connection(DBusConnection *conn, DBusMessage *msg, void *user_data) { @@ -327,7 +336,7 @@ static DBusMessage *profile_new_connection(DBusConnection *conn, if (fd < 0) goto invalid; - modem = g_hash_table_lookup(modem_hash, device); + modem = ofono_modem_find(device_path_compare, (void *) device); if (modem == NULL) { close(fd); return g_dbus_create_error(msg, BLUEZ_ERROR_INTERFACE @@ -392,7 +401,7 @@ static DBusMessage *profile_disconnection(DBusConnection *conn, dbus_message_iter_get_basic(&entry, &device); - modem = g_hash_table_lookup(modem_hash, device); + modem = ofono_modem_find(device_path_compare, (void *) device); if (modem == NULL) goto error; @@ -645,9 +654,6 @@ static int hfp_init(void) return -ENOMEM; } - modem_hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, - NULL); - g_dbus_client_set_connect_watch(bluez, connect_handler, NULL); g_dbus_client_set_proxy_handlers(bluez, proxy_added, NULL, property_changed, NULL); @@ -665,8 +671,6 @@ static void hfp_exit(void) ofono_modem_driver_unregister(&hfp_driver); g_dbus_client_unref(bluez); - g_hash_table_destroy(modem_hash); - if (sco_watch > 0) g_source_remove(sco_watch); } |