settings_changed(adapter, settings);
}
+struct set_mode_data {
+ struct btd_adapter *adapter;
+ uint32_t setting;
+};
+
static void set_mode_complete(uint8_t status, uint16_t length,
const void *param, void *user_data)
{
- struct btd_adapter *adapter = user_data;
+ struct set_mode_data *data = user_data;
+ struct btd_adapter *adapter = data->adapter;
if (status != MGMT_STATUS_SUCCESS) {
btd_error(adapter->dev_id, "Failed to set mode: %s (0x%02x)",
mgmt_errstr(status), status);
+ adapter->pending_settings &= ~data->setting;
return;
}
{
struct mgmt_mode cp;
uint32_t setting = 0;
+ struct set_mode_data *data;
memset(&cp, 0, sizeof(cp));
cp.val = mode;
DBG("sending set mode command for index %u", adapter->dev_id);
#endif
+ data = g_new0(struct set_mode_data, 1);
+ data->adapter = adapter;
+ data->setting = setting;
+
if (mgmt_send(adapter->mgmt, opcode,
adapter->dev_id, sizeof(cp), &cp,
- set_mode_complete, adapter, NULL) > 0)
+ set_mode_complete, data, g_free) > 0){
+ adapter->pending_settings |= setting;
return true;
+ }
+ g_free(data);
btd_error(adapter->dev_id, "Failed to set mode for index %u",
adapter->dev_id);
uint16_t timeout)
{
struct mgmt_cp_set_discoverable cp;
+ struct set_mode_data *data;
memset(&cp, 0, sizeof(cp));
cp.val = mode;
}
#endif
+ data = g_new0(struct set_mode_data, 1);
+ data->adapter = adapter;
+ data->setting = 0;
+
if (mgmt_send(adapter->mgmt, MGMT_OP_SET_DISCOVERABLE,
adapter->dev_id, sizeof(cp), &cp,
- set_mode_complete, adapter, NULL) > 0)
+ set_mode_complete, data, g_free) > 0)
return true;
+ g_free(data);
btd_error(adapter->dev_id, "Failed to set mode for index %u",
adapter->dev_id);
struct property_set_data {
struct btd_adapter *adapter;
+ uint32_t setting;
GDBusPendingPropertySet id;
};
g_dbus_pending_property_error(data->id, dbus_err,
mgmt_errstr(status));
+
+ adapter->pending_settings &= ~data->setting;
return;
}
mode = (enable == TRUE) ? 0x01 : 0x00;
- adapter->pending_settings |= setting;
-
switch (setting) {
case MGMT_SETTING_POWERED:
opcode = MGMT_OP_SET_POWERED;
goto failed;
data->adapter = adapter;
+ data->setting = setting;
data->id = id;
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
*/
if (mgmt_send_nowait(adapter->mgmt, opcode, adapter->dev_id, len, param,
property_set_mode_complete, data, g_free) > 0)
+ return;
#else
if (mgmt_send(adapter->mgmt, opcode, adapter->dev_id, len, param,
- property_set_mode_complete, data, g_free) > 0)
-#endif
+ propertyi_set_mode_complete, data, g_free) > 0){
+ adapter->pending_settings |= setting;
return;
+ }
+#endif
g_free(data);