static gboolean adapter_create(gpointer user_data) { adapter_data *adapter = user_data; dbus_g_proxy_connect_signal(adapter->proxy, "PropertyChanged", G_CALLBACK(property_changed), adapter, NULL); create_adapter(adapter); return FALSE; }
int server_register(struct btd_adapter *adapter, uint16_t id) { struct network_adapter *na; struct network_server *ns; const char *path; na = find_adapter(adapters, adapter); if (!na) { na = create_adapter(adapter); if (!na) return -EINVAL; adapters = g_slist_append(adapters, na); } ns = find_server(na->servers, id); if (ns) return 0; ns = g_new0(struct network_server, 1); ns->name = g_strdup("Network service"); path = adapter_get_path(adapter); if (g_slist_length(na->servers) > 0) goto done; if (!g_dbus_register_interface(btd_get_dbus_connection(), path, NETWORK_SERVER_INTERFACE, server_methods, NULL, NULL, na, path_unregister)) { error("D-Bus failed to register %s interface", NETWORK_SERVER_INTERFACE); server_free(ns); return -1; } DBG("Registered interface %s on path %s", NETWORK_SERVER_INTERFACE, path); done: bacpy(&ns->src, btd_adapter_get_address(adapter)); ns->id = id; ns->na = na; ns->record_id = 0; na->servers = g_slist_append(na->servers, ns); return 0; }
int server_register(struct btd_adapter *adapter) { struct network_adapter *na; struct network_server *ns; const char *path; na = find_adapter(adapters, adapter); if (!na) { na = create_adapter(adapter); if (!na) return -EINVAL; adapters = g_slist_append(adapters, na); } ns = find_server(na->servers, BNEP_SVC_NAP); if (ns) return 0; ns = g_new0(struct network_server, 1); ns->iface = g_strdup(NETWORK_SERVER_INTERFACE); ns->name = g_strdup("Network service"); path = adapter_get_path(adapter); if (!g_dbus_register_interface(connection, path, ns->iface, server_methods, NULL, NULL, ns, path_unregister)) { error("D-Bus failed to register %s interface", ns->iface); server_free(ns); return -1; } adapter_get_address(adapter, &ns->src); ns->id = BNEP_SVC_NAP; ns->na = na; ns->record_id = 0; na->servers = g_slist_append(na->servers, ns); DBG("Registered interface %s on path %s", ns->iface, path); return 0; }