static void remove_device (NMBluez5Manager *self, NMBluezDevice *device) { g_signal_handlers_disconnect_by_func (device, G_CALLBACK (device_initialized), self); g_signal_handlers_disconnect_by_func (device, G_CALLBACK (device_usable), self); if (nm_bluez_device_get_usable (device)) g_signal_emit_by_name (device, NM_BLUEZ_DEVICE_REMOVED); }
void nm_bluez5_manager_query_devices (NMBluez5Manager *self) { NMBluez5ManagerPrivate *priv = NM_BLUEZ5_MANAGER_GET_PRIVATE (self); NMBluezDevice *device; GHashTableIter iter; g_hash_table_iter_init (&iter, priv->devices); while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device)) { if (nm_bluez_device_get_usable (device)) emit_bdaddr_added (self, device); } }
GSList * nm_bluez_adapter_get_devices (NMBluezAdapter *self) { GSList *devices = NULL; GHashTableIter iter; NMBluezDevice *device; g_hash_table_iter_init (&iter, NM_BLUEZ_ADAPTER_GET_PRIVATE (self)->devices); while (g_hash_table_iter_next (&iter, NULL, (gpointer) &device)) { if (nm_bluez_device_get_usable (device)) devices = g_slist_append (devices, device); } return devices; }
static void device_usable (NMBluezDevice *device, GParamSpec *pspec, NMBluez5Manager *self) { gboolean usable = nm_bluez_device_get_usable (device); nm_log_dbg (LOGD_BT, "(%s): bluez device now %s", nm_bluez_device_get_path (device), usable ? "usable" : "unusable"); if (usable) { nm_log_dbg (LOGD_BT, "(%s): bluez device address %s", nm_bluez_device_get_path (device), nm_bluez_device_get_address (device)); emit_bdaddr_added (self, device); } else g_signal_emit_by_name (device, NM_BLUEZ_DEVICE_REMOVED); }
static void device_usable (NMBluezDevice *device, GParamSpec *pspec, gpointer user_data) { NMBluezAdapter *self = NM_BLUEZ_ADAPTER (user_data); gboolean usable = nm_bluez_device_get_usable (device); nm_log_dbg (LOGD_BT, "(%s): bluez device now %s", nm_bluez_device_get_path (device), usable ? "usable" : "unusable"); if (usable) { nm_log_dbg (LOGD_BT, "(%s): bluez device address %s", nm_bluez_device_get_path (device), nm_bluez_device_get_address (device)); g_signal_emit (self, signals[DEVICE_ADDED], 0, device); } else g_signal_emit (self, signals[DEVICE_REMOVED], 0, device); }