diff --git a/src/adapter.c b/src/adapter.c
index d9601e1..a41eb15 100644
--- a/src/adapter.c
+++ b/src/adapter.c
adapter);
}
-void btd_adapter_pairable_changed(struct btd_adapter *adapter,
- gboolean pairable)
+void adapter_update_pairable(struct btd_adapter *adapter, bool pairable)
{
+ if (adapter->pairable == pairable)
+ return;
+
adapter->pairable = pairable;
store_adapter_info(adapter);
}
}
-void adapter_mode_changed(struct btd_adapter *adapter, bool connectable,
+void adapter_update_connectable(struct btd_adapter *adapter, bool connectable)
+{
+ struct DBusConnection *conn = btd_get_dbus_connection();
+
+ if (adapter->connectable == connectable)
+ return;
+
+ adapter->connectable = connectable;
+ g_dbus_emit_property_changed(conn, adapter->path, ADAPTER_INTERFACE,
+ "Connectable");
+
+ store_adapter_info(adapter);
+}
+
+void adapter_update_discoverable(struct btd_adapter *adapter,
bool discoverable)
{
struct DBusConnection *conn = btd_get_dbus_connection();
- DBG("connectable %u (old %u) discoverable %u (old %u)",
- connectable, adapter->connectable,
- discoverable, adapter->discoverable);
+ if (adapter->discoverable == discoverable)
+ return;
- if (connectable != adapter->connectable) {
- adapter->connectable = connectable;
- g_dbus_emit_property_changed(conn, adapter->path,
- ADAPTER_INTERFACE,
- "Connectable");
- }
+ adapter->discoverable = discoverable;
+ g_dbus_emit_property_changed(conn, adapter->path, ADAPTER_INTERFACE,
+ "Discoverable");
- if (discoverable != adapter->discoverable) {
- adapter->discoverable = discoverable;
- g_dbus_emit_property_changed(conn, adapter->path,
- ADAPTER_INTERFACE,
- "Discoverable");
- }
+ store_adapter_info(adapter);
}
struct agent *adapter_get_agent(struct btd_adapter *adapter)
diff --git a/src/adapter.h b/src/adapter.h
index a192a71..b998219 100644
--- a/src/adapter.h
+++ b/src/adapter.h
uint8_t bdaddr_type, int8_t rssi,
bool confirm_name, bool legacy,
uint8_t *data, uint8_t data_len);
-void adapter_mode_changed(struct btd_adapter *adapter, bool connectable,
+void adapter_update_connectable(struct btd_adapter *adapter, bool connectable);
+void adapter_update_discoverable(struct btd_adapter *adapter,
bool discoverable);
int adapter_set_name(struct btd_adapter *adapter, const char *name);
void adapter_name_changed(struct btd_adapter *adapter, const char *name);
void adapter_service_remove(struct btd_adapter *adapter, void *rec);
void btd_adapter_class_changed(struct btd_adapter *adapter,
uint8_t *new_class);
-void btd_adapter_pairable_changed(struct btd_adapter *adapter,
- gboolean pairable);
+void adapter_update_pairable(struct btd_adapter *adapter, bool pairable);
struct agent *adapter_get_agent(struct btd_adapter *adapter);
void adapter_add_connection(struct btd_adapter *adapter,
diff --git a/src/mgmt.c b/src/mgmt.c
index f5b368d..f34c555 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
return (settings & MGMT_SETTING_LE) != 0;
}
-static int mode_changed(uint32_t s1, uint32_t s2)
-{
- if (mgmt_connectable(s1) != mgmt_connectable(s2))
- return 1;
-
- if (mgmt_discoverable(s1) != mgmt_discoverable(s2))
- return 1;
-
- return 0;
-}
-
static void update_settings(struct btd_adapter *adapter, uint32_t settings)
{
struct controller_info *info;
info = &controllers[index];
- if (mode_changed(settings, info->current_settings))
- adapter_mode_changed(adapter, mgmt_connectable(settings),
- mgmt_discoverable(settings));
-
- if (mgmt_pairable(settings) != mgmt_pairable(info->current_settings))
- btd_adapter_pairable_changed(adapter, mgmt_pairable(settings));
+ adapter_update_connectable(adapter, mgmt_connectable(settings));
+ adapter_update_discoverable(adapter, mgmt_discoverable(settings));
+ adapter_update_pairable(adapter, mgmt_pairable(settings));
if (mgmt_ssp(info->supported_settings) && !mgmt_ssp(settings))
mgmt_set_ssp(index, TRUE);