diff --git a/src/adapter.c b/src/adapter.c
index c1cde18..e1dbb0b 100644
--- a/src/adapter.c
+++ b/src/adapter.c
uint8_t minor_class; /* configured minor class */
char *system_name; /* configured system name */
char *modalias; /* device id (modalias) */
- uint32_t discov_timeout; /* discoverable time(sec) */
+ bool stored_discoverable; /* stored discoverable mode */
+ uint32_t discoverable_timeout; /* discoverable time(sec) */
uint32_t pairable_timeout; /* pairable time(sec) */
char *current_alias; /* current adapter name alias */
char address[18];
char *str;
gsize length = 0;
- gboolean discov;
+ gboolean discoverable;
key_file = g_key_file_new();
g_key_file_set_integer(key_file, "General", "PairableTimeout",
adapter->pairable_timeout);
- if (adapter->discov_timeout > 0)
- discov = FALSE;
+ if ((adapter->current_settings & MGMT_SETTING_DISCOVERABLE) &&
+ !adapter->discoverable_timeout)
+ discoverable = TRUE;
else
- discov = mgmt_discoverable(adapter->current_settings);
+ discoverable = FALSE;
- g_key_file_set_boolean(key_file, "General", "Discoverable", discov);
+ g_key_file_set_boolean(key_file, "General", "Discoverable",
+ discoverable);
- if (adapter->discov_timeout != main_opts.discovto)
+ if (adapter->discoverable_timeout != main_opts.discovto)
g_key_file_set_integer(key_file, "General",
"DiscoverableTimeout",
- adapter->discov_timeout);
+ adapter->discoverable_timeout);
if (adapter->stored_alias)
g_key_file_set_string(key_file, "General", "Alias",
return;
}
- if (mgmt_powered(adapter->current_settings))
+ if (adapter->current_settings & MGMT_SETTING_POWERED)
mgmt_stop_discovery(adapter);
else
discovery_cleanup(adapter);
const char *sender = dbus_message_get_sender(msg);
int err;
- if (!mgmt_powered(adapter->current_settings))
+ if (!(adapter->current_settings & MGMT_SETTING_POWERED))
return btd_error_not_ready(msg);
req = find_session(adapter->disc_sessions, sender);
struct session_req *req;
const char *sender = dbus_message_get_sender(msg);
- if (!mgmt_powered(adapter->current_settings))
+ if (!(adapter->current_settings & MGMT_SETTING_POWERED))
return btd_error_not_ready(msg);
req = find_session(adapter->disc_sessions, sender);
case MGMT_SETTING_DISCOVERABLE:
memset(&cp, 0, sizeof(cp));
cp.val = mode;
- cp.timeout = htobs(adapter->discov_timeout);
+ cp.timeout = htobs(adapter->discoverable_timeout);
opcode = MGMT_OP_SET_DISCOVERABLE;
param = &cp;
DBusMessageIter *iter, void *user_data)
{
struct btd_adapter *adapter = user_data;
- dbus_uint32_t value = adapter->discov_timeout;
+ dbus_uint32_t value = adapter->discoverable_timeout;
dbus_message_iter_append_basic(iter, DBUS_TYPE_UINT32, &value);
dbus_message_iter_get_basic(iter, &value);
- adapter->discov_timeout = value;
+ adapter->discoverable_timeout = value;
g_dbus_pending_property_success(id);
ADAPTER_INTERFACE, "DiscoverableTimeout");
if (adapter->current_settings & MGMT_SETTING_DISCOVERABLE)
- set_discoverable(adapter, 0x01, adapter->discov_timeout);
+ set_discoverable(adapter, 0x01, adapter->discoverable_timeout);
}
static gboolean property_get_pairable(const GDBusPropertyTable *property,
bool btd_adapter_get_pairable(struct btd_adapter *adapter)
{
- return mgmt_pairable(adapter->current_settings);
+ if (adapter->current_settings & MGMT_SETTING_PAIRABLE)
+ return true;
+
+ return false;
}
uint32_t btd_adapter_get_class(struct btd_adapter *adapter)
DBG("%s added to %s's connect_list", device_get_path(device),
adapter->system_name);
- if (!mgmt_powered(adapter->current_settings))
+ if (!(adapter->current_settings & MGMT_SETTING_POWERED))
return;
if (adapter->scanning_session)
char address[18];
struct stat st;
GError *gerr = NULL;
- gboolean stored_discoverable;
ba2str(&adapter->bdaddr, address);
}
/* Get discoverable mode */
- stored_discoverable = g_key_file_get_boolean(key_file, "General",
- "Discoverable", &gerr);
+ adapter->stored_discoverable = g_key_file_get_boolean(key_file,
+ "General", "Discoverable", &gerr);
if (gerr) {
- stored_discoverable = FALSE;
+ adapter->stored_discoverable = false;
g_error_free(gerr);
gerr = NULL;
}
/* Get discoverable timeout */
- adapter->discov_timeout = g_key_file_get_integer(key_file, "General",
- "DiscoverableTimeout", &gerr);
+ adapter->discoverable_timeout = g_key_file_get_integer(key_file,
+ "General", "DiscoverableTimeout", &gerr);
if (gerr) {
- adapter->discov_timeout = main_opts.discovto;
+ adapter->discoverable_timeout = main_opts.discovto;
g_error_free(gerr);
gerr = NULL;
}
- if (adapter->discov_timeout > 0 &&
- mgmt_discoverable(adapter->current_settings)) {
- if (mgmt_connectable(adapter->current_settings))
- set_discoverable(adapter, 0x00, 0);
- else
- adapter->toggle_discoverable = true;
- } else if (stored_discoverable !=
- mgmt_discoverable(adapter->current_settings)) {
- if (mgmt_connectable(adapter->current_settings))
- set_discoverable(adapter, stored_discoverable,
- adapter->discov_timeout);
- else
- adapter->toggle_discoverable = true;
- }
-
g_key_file_free(key_file);
}
main_opts.did_vendor,
main_opts.did_product,
main_opts.did_version);
- adapter->discov_timeout = main_opts.discovto;
+ adapter->discoverable_timeout = main_opts.discovto;
adapter->pairable_timeout = main_opts.pairto;
DBG("System name: %s", adapter->system_name);
DBG("Major class: %u", adapter->major_class);
DBG("Minor class: %u", adapter->minor_class);
DBG("Modalias: %s", adapter->modalias);
- DBG("Discoverable timeout: %u seconds", adapter->discov_timeout);
+ DBG("Discoverable timeout: %u seconds", adapter->discoverable_timeout);
DBG("Pairable timeout: %u seconds", adapter->pairable_timeout);
adapter->auths = g_queue_new();
int btd_adapter_restore_powered(struct btd_adapter *adapter)
{
- if (mgmt_powered(adapter->current_settings))
+ if (adapter->current_settings & MGMT_SETTING_POWERED)
return 0;
set_mode(adapter, MGMT_OP_SET_POWERED, 0x01);
int btd_adapter_set_fast_connectable(struct btd_adapter *adapter,
gboolean enable)
{
- if (!mgmt_powered(adapter->current_settings))
+ if (!(adapter->current_settings & MGMT_SETTING_POWERED))
return -EINVAL;
set_mode(adapter, MGMT_OP_SET_FAST_CONNECTABLE, enable ? 0x01 : 0x00);
int which, int timeout, uint32_t *clock,
uint16_t *accuracy)
{
- if (!mgmt_powered(adapter->current_settings))
+ if (!(adapter->current_settings & MGMT_SETTING_POWERED))
return -EINVAL;
return -ENOSYS;
set_mode(adapter, MGMT_OP_SET_PAIRABLE, 0x01);
set_mode(adapter, MGMT_OP_SET_CONNECTABLE, 0x01);
- if (mgmt_powered(rp->current_settings))
+ if (adapter->stored_discoverable && !adapter->discoverable_timeout)
+ set_discoverable(adapter, 0x01, 0);
+
+ if (adapter->current_settings & MGMT_SETTING_POWERED)
adapter_start(adapter);
return;