diff --git a/plugins/dbusoob.c b/plugins/dbusoob.c
index 0e0eeca..885f247 100644
--- a/plugins/dbusoob.c
+++ b/plugins/dbusoob.c
struct btd_adapter *adapter = data;
struct oob_request *oob_request;
+ if (!btd_adapter_ssp_enabled(adapter))
+ return btd_error_not_supported(msg);
+
if (find_oob_request(adapter))
return btd_error_in_progress(msg);
struct oob_data remote_data;
struct btd_device *device;
+ if (!btd_adapter_ssp_enabled(adapter))
+ return btd_error_not_supported(msg);
+
memset(&remote_data, 0, sizeof(remote_data));
dbus_message_iter_init(msg, &args);
const char *addr;
bdaddr_t bdaddr;
+ if (!btd_adapter_ssp_enabled(adapter))
+ return btd_error_not_supported(msg);
+
if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &addr,
DBUS_TYPE_INVALID))
return btd_error_invalid_args(msg);
diff --git a/src/adapter.c b/src/adapter.c
index b7691d0..e6b5559 100644
--- a/src/adapter.c
+++ b/src/adapter.c
{
return mgmt_remove_remote_oob_data(adapter->dev_id, bdaddr);
}
+
+int btd_adapter_ssp_enabled(struct btd_adapter *adapter)
+{
+ return mgmt_ssp_enabled(adapter->dev_id);
+}
diff --git a/src/adapter.h b/src/adapter.h
index d8a1bb1..5a0247e 100644
--- a/src/adapter.h
+++ b/src/adapter.h
int btd_adapter_gatt_server_start(struct btd_adapter *adapter);
void btd_adapter_gatt_server_stop(struct btd_adapter *adapter);
+
+int btd_adapter_ssp_enabled(struct btd_adapter *adapter);
diff --git a/src/mgmt.c b/src/mgmt.c
index c893972..b3ae776 100644
--- a/src/mgmt.c
+++ b/src/mgmt.c
return err;
}
+
+int mgmt_ssp_enabled(int index)
+{
+ struct controller_info *info = &controllers[index];
+
+ return mgmt_ssp(info->current_settings);
+}
diff --git a/src/mgmt.h b/src/mgmt.h
index 0658198..95245d2 100644
--- a/src/mgmt.h
+++ b/src/mgmt.h
int mgmt_confirm_name(int index, bdaddr_t *bdaddr, uint8_t bdaddr_type,
gboolean name_known);
+
+int mgmt_ssp_enabled(int index);