#include "src/shared/queue.h"
#include "src/shared/att.h"
#include "src/shared/gatt-db.h"
+#include "src/shared/timeout.h"
#include "btio/btio.h"
#include "btd.h"
struct discovery_client *client; /* active discovery client */
GSList *discovery_found; /* list of found devices */
- guint discovery_idle_timeout; /* timeout between discovery runs */
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
guint le_discovery_idle_timeout; /* timeout between le discovery runs */
#endif
- guint passive_scan_timeout; /* timeout between passive scans */
+ unsigned int discovery_idle_timeout; /* timeout between discovery
+ * runs
+ */
+ unsigned int passive_scan_timeout; /* timeout between passive scans */
- guint pairable_timeout_id; /* pairable timeout id */
+ unsigned int pairable_timeout_id; /* pairable timeout id */
guint auth_idle_id; /* Pending authorization dequeue */
GQueue *auths; /* Ongoing and pending auths */
bool pincode_requested; /* PIN requested during last bonding */
struct oob_handler *oob_handler;
unsigned int load_ltks_id;
- guint load_ltks_timeout;
+ unsigned int load_ltks_timeout;
unsigned int confirm_name_id;
- guint confirm_name_timeout;
+ unsigned int confirm_name_timeout;
unsigned int pair_device_id;
- guint pair_device_timeout;
+ unsigned int pair_device_timeout;
unsigned int db_id; /* Service event handler for GATT db */
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
return false;
}
-static gboolean pairable_timeout_handler(gpointer user_data)
+static bool pairable_timeout_handler(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
static void trigger_pairable_timeout(struct btd_adapter *adapter)
{
if (adapter->pairable_timeout_id > 0) {
- g_source_remove(adapter->pairable_timeout_id);
+ timeout_remove(adapter->pairable_timeout_id);
adapter->pairable_timeout_id = 0;
}
if (adapter->pairable_timeout > 0)
adapter->pairable_timeout_id =
- g_timeout_add_seconds(adapter->pairable_timeout,
- pairable_timeout_handler, adapter);
+ timeout_add_seconds(adapter->pairable_timeout,
+ pairable_timeout_handler, adapter,
+ NULL);
}
static void local_name_changed_callback(uint16_t index, uint16_t length,
}
}
-static gboolean passive_scanning_timeout(gpointer user_data)
+static bool passive_scanning_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
struct mgmt_cp_start_discovery cp;
DBG("");
if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}
if (!adapter->connect_list)
return;
- adapter->passive_scan_timeout = g_timeout_add_seconds(CONN_SCAN_TIMEOUT,
- passive_scanning_timeout, adapter);
+ adapter->passive_scan_timeout = timeout_add_seconds(CONN_SCAN_TIMEOUT,
+ passive_scanning_timeout, adapter,
+ NULL);
}
static void stop_passive_scanning_complete(uint8_t status, uint16_t length,
DBG("");
if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}
}
adapter->discovery_type = 0x00;
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}
}
#endif
-static gboolean start_discovery_timeout(gpointer user_data)
+static bool start_discovery_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
#ifndef TIZEN_FEATURE_BLUEZ_MODIFY
cancel_passive_scanning(adapter);
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}
if (!btd_adapter_get_powered(adapter))
return;
- adapter->discovery_idle_timeout = g_timeout_add_seconds(delay,
- start_discovery_timeout, adapter);
+ adapter->discovery_idle_timeout = timeout_add_seconds(delay,
+ start_discovery_timeout, adapter, NULL);
}
#ifndef TIZEN_FEATURE_BLUEZ_MODIFY
* The restart will be triggered when the discovery is resumed.
*/
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}
case 0x01:
if (adapter->discovery_idle_timeout > 0) {
- g_source_remove(adapter->discovery_idle_timeout);
+ timeout_remove(adapter->discovery_idle_timeout);
adapter->discovery_idle_timeout = 0;
}
adapter->dev_id);
}
-static gboolean load_ltks_timeout(gpointer user_data)
+static bool load_ltks_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
adapter->load_ltks_id = 0;
- g_source_remove(adapter->load_ltks_timeout);
+ timeout_remove(adapter->load_ltks_timeout);
adapter->load_ltks_timeout = 0;
DBG("LTKs loaded for hci%u", adapter->dev_id);
* and forgets to send a command complete response. However in
* case of failures it does send a command status.
*/
- adapter->load_ltks_timeout = g_timeout_add_seconds(2,
- load_ltks_timeout, adapter);
+ adapter->load_ltks_timeout = timeout_add_seconds(2,
+ load_ltks_timeout, adapter,
+ NULL);
}
static void load_irks_complete(uint8_t status, uint16_t length,
remove_discovery_list(adapter);
if (adapter->pairable_timeout_id > 0) {
- g_source_remove(adapter->pairable_timeout_id);
+ timeout_remove(adapter->pairable_timeout_id);
adapter->pairable_timeout_id = 0;
}
if (adapter->passive_scan_timeout > 0) {
- g_source_remove(adapter->passive_scan_timeout);
+ timeout_remove(adapter->passive_scan_timeout);
adapter->passive_scan_timeout = 0;
}
if (adapter->load_ltks_timeout > 0)
- g_source_remove(adapter->load_ltks_timeout);
+ timeout_remove(adapter->load_ltks_timeout);
if (adapter->confirm_name_timeout > 0)
- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);
if (adapter->pair_device_timeout > 0)
- g_source_remove(adapter->pair_device_timeout);
+ timeout_remove(adapter->pair_device_timeout);
if (adapter->auth_idle_id)
- g_source_remove(adapter->auth_idle_id);
+ timeout_remove(adapter->auth_idle_id);
g_queue_foreach(adapter->auths, free_service_auth, NULL);
g_queue_free(adapter->auths);
}
#endif
-static gboolean confirm_name_timeout(gpointer user_data)
+static bool confirm_name_timeout(gpointer user_data)
{
struct btd_adapter *adapter = user_data;
adapter->confirm_name_id = 0;
- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);
adapter->confirm_name_timeout = 0;
DBG("Confirm name complete for hci%u", adapter->dev_id);
}
if (adapter->confirm_name_timeout > 0) {
- g_source_remove(adapter->confirm_name_timeout);
+ timeout_remove(adapter->confirm_name_timeout);
adapter->confirm_name_timeout = 0;
}
* and forgets to send a command complete response. However in
* case of failures it does send a command status.
*/
- adapter->confirm_name_timeout = g_timeout_add_seconds(2,
- confirm_name_timeout, adapter);
+ adapter->confirm_name_timeout = timeout_add_seconds(2,
+ confirm_name_timeout, adapter,
+ NULL);
}
static void adapter_msd_notify(struct btd_adapter *adapter,
g_free(data);
}
-static gboolean pair_device_timeout(gpointer user_data)
+static bool pair_device_timeout(gpointer user_data)
{
struct pair_device_data *data = user_data;
struct btd_adapter *adapter = data->adapter;
adapter->pair_device_id = 0;
if (adapter->pair_device_timeout > 0) {
- g_source_remove(adapter->pair_device_timeout);
+ timeout_remove(adapter->pair_device_timeout);
adapter->pair_device_timeout = 0;
}
* request never times out. Therefore, add a timer to clean up
* if no response arrives
*/
- adapter->pair_device_timeout = g_timeout_add_seconds(BONDING_TIMEOUT,
- pair_device_timeout, data);
+ adapter->pair_device_timeout = timeout_add_seconds(BONDING_TIMEOUT,
+ pair_device_timeout, data,
+ NULL);
return 0;
}
#include "src/error.h"
#include "src/shared/mgmt.h"
#include "src/shared/queue.h"
+#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "adv_monitor.h"
*/
time_t last_seen; /* Time when last Adv was received */
bool found; /* State of the device - lost/found */
- guint lost_timer; /* Timer to track if the device goes
+ unsigned int lost_timer; /* Timer to track if the device goes
* offline/out-of-range
*/
};
}
if (dev->lost_timer) {
- g_source_remove(dev->lost_timer);
+ timeout_remove(dev->lost_timer);
dev->lost_timer = 0;
}
}
/* Handles a situation where the device goes offline/out-of-range */
-static gboolean handle_device_lost_timeout(gpointer user_data)
+static bool handle_device_lost_timeout(gpointer user_data)
{
struct adv_monitor_device *dev = user_data;
struct adv_monitor *monitor = dev->monitor;
}
if (dev->lost_timer) {
- g_source_remove(dev->lost_timer);
+ timeout_remove(dev->lost_timer);
dev->lost_timer = 0;
}
*/
if (dev->found) {
dev->lost_timer =
- g_timeout_add_seconds(monitor->low_rssi_timeout,
- handle_device_lost_timeout, dev);
+ timeout_add_seconds(monitor->low_rssi_timeout,
+ handle_device_lost_timeout, dev,
+ NULL);
}
}
#include "src/shared/ad.h"
#include "src/shared/mgmt.h"
#include "src/shared/queue.h"
+#include "src/shared/timeout.h"
#include "src/shared/util.h"
#include "advertising.h"
struct btd_adv_client *client = data;
if (client->to_id > 0)
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);
if (client->disc_to_id > 0)
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
if (client->client) {
g_dbus_client_set_disconnect_watch(client->client, NULL, NULL);
return true;
}
-static gboolean client_timeout(void *user_data)
+static bool client_timeout(void *user_data)
{
struct btd_adv_client *client = user_data;
{
if (!iter) {
client->timeout = 0;
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);
client->to_id = 0;
return true;
}
dbus_message_iter_get_basic(iter, &client->timeout);
if (client->to_id)
- g_source_remove(client->to_id);
+ timeout_remove(client->to_id);
if (client->timeout > 0)
- client->to_id = g_timeout_add_seconds(client->timeout,
- client_timeout, client);
+ client->to_id = timeout_add_seconds(client->timeout,
+ client_timeout, client,
+ NULL);
return true;
}
return refresh_legacy_adv(client, func, mgmt_id);
}
-static gboolean client_discoverable_timeout(void *user_data)
+static bool client_discoverable_timeout(void *user_data)
{
struct btd_adv_client *client = user_data;
{
if (!iter) {
client->discoverable_to = 0;
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
client->disc_to_id = 0;
return true;
}
dbus_message_iter_get_basic(iter, &client->discoverable_to);
if (client->disc_to_id)
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
- client->disc_to_id = g_timeout_add_seconds(client->discoverable_to,
+ client->disc_to_id = timeout_add_seconds(client->discoverable_to,
client_discoverable_timeout,
- client);
+ client, NULL);
return true;
}
}
} else if (client->disc_to_id) {
/* Ignore DiscoverableTimeout if not discoverable */
- g_source_remove(client->disc_to_id);
+ timeout_remove(client->disc_to_id);
client->disc_to_id = 0;
client->discoverable_to = 0;
}
#include "src/shared/gatt-client.h"
#include "src/shared/gatt-server.h"
#include "src/shared/ad.h"
+#include "src/shared/timeout.h"
#include "btio/btio.h"
#include "lib/mgmt.h"
#include "attrib/att.h"
GSList *watches; /* List of disconnect_data */
bool temporary;
bool connectable;
- guint disconn_timer;
- guint discov_timer;
- guint temporary_timer; /* Temporary/disappear timer */
+ unsigned int disconn_timer;
+ unsigned int discov_timer;
+ unsigned int temporary_timer; /* Temporary/disappear timer */
struct browse_req *browse; /* service discover request */
struct bonding_req *bonding;
struct authentication_req *authr; /* authentication request */
(sdp_free_func_t) sdp_record_free);
if (device->disconn_timer)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
if (device->discov_timer)
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);
if (device->temporary_timer)
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
if (device->connect)
dbus_message_unref(device->connect);
}
-static gboolean disconnect_all(gpointer user_data)
+static bool disconnect_all(gpointer user_data)
{
struct btd_device *device = user_data;
return 0;
if (device->disconn_timer > 0)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
disconnect_all(device);
return;
}
- device->disconn_timer = g_timeout_add_seconds(DISCONNECT_TIMER,
+ device->disconn_timer = timeout_add_seconds(DISCONNECT_TIMER,
disconnect_all,
- device);
+ device, NULL);
}
bool device_is_disconnecting(struct btd_device *device)
/* Remove temporary timer while connected */
if (dev->temporary_timer) {
- g_source_remove(dev->temporary_timer);
+ timeout_remove(dev->temporary_timer);
dev->temporary_timer = 0;
}
device_set_svc_refreshed(device, false);
if (device->disconn_timer > 0) {
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
device->disconn_timer = 0;
}
store_device_info(device);
}
-static gboolean device_disappeared(gpointer user_data)
+static bool device_disappeared(gpointer user_data)
{
struct btd_device *dev = user_data;
/* Restart temporary timer */
if (device->temporary_timer)
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
- device->temporary_timer = g_timeout_add_seconds(btd_opts.tmpto,
+ device->temporary_timer = timeout_add_seconds(btd_opts.tmpto,
device_disappeared,
- device);
+ device, NULL);
}
/* It is possible that we have two device objects for the same device in
if (btd_device_is_connected(device)) {
if (device->disconn_timer > 0)
- g_source_remove(device->disconn_timer);
+ timeout_remove(device->disconn_timer);
disconnect_all(device);
}
if (device->temporary_timer > 0) {
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
device->temporary_timer = 0;
}
err = device_browse_gatt(device, NULL);
if (err == 0 && device->discov_timer) {
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);
device->discov_timer = 0;
}
device->temporary = temporary;
if (device->temporary_timer) {
- g_source_remove(device->temporary_timer);
+ timeout_remove(device->temporary_timer);
device->temporary_timer = 0;
}
device->disable_auto_connect = TRUE;
device_set_auto_connect(device, FALSE);
}
- device->temporary_timer = g_timeout_add_seconds(btd_opts.tmpto,
+ device->temporary_timer = timeout_add_seconds(btd_opts.tmpto,
device_disappeared,
- device);
+ device, NULL);
return;
}
#endif
}
-static gboolean start_discovery(gpointer user_data)
+static bool start_discovery(gpointer user_data)
{
struct btd_device *device = user_data;
/* If we are initiators remove any discovery timer and just
* start discovering services directly */
if (device->discov_timer) {
- g_source_remove(device->discov_timer);
+ timeout_remove(device->discov_timer);
device->discov_timer = 0;
}
* active discovery or discovery timer, set discovery
* timer */
DBG("setting timer for reverse service discovery");
- device->discov_timer = g_timeout_add_seconds(
+ device->discov_timer = timeout_add_seconds(
DISCOVERY_TIMER,
start_discovery,
- device);
+ device, NULL);
}
}
}
if (state->svc_resolved || !btd_opts.reverse_discovery)
cb->idle_id = g_idle_add(svc_idle_cb, cb);
- else if (dev->discov_timer > 0) {
- g_source_remove(dev->discov_timer);
- dev->discov_timer = g_idle_add(start_discovery, dev);
+ else if (dev->discov_timer >0) {
+ timeout_remove(dev->discov_timer);
+ dev->discov_timer = timeout_add_seconds(
+ 0,
+ start_discovery,
+ dev, NULL);
}
#ifdef TIZEN_FEATURE_BLUEZ_MODIFY
else if (!dev->browse) {
DBG("Service is not going on. Start discovery");
- dev->discov_timer = g_idle_add(start_discovery, dev);
+ dev->discov_timer = timeout_add_seconds(
+ 0,
+ start_discovery,
+ dev, NULL);
} else
DBG("Wait for service discovery");
#endif
#include "shared/att-types.h"
#include "shared/mainloop.h"
+#include "shared/timeout.h"
#include "lib/uuid.h"
#include "shared/util.h"
#include "btd.h"
mainloop_quit();
}
-static gboolean quit_eventloop(gpointer user_data)
+static bool quit_eventloop(gpointer user_data)
{
btd_exit();
return FALSE;
case SIGTERM:
if (!terminated) {
info("Terminating");
- g_timeout_add_seconds(SHUTDOWN_GRACE_SECONDS,
- quit_eventloop, NULL);
+ timeout_add_seconds(SHUTDOWN_GRACE_SECONDS,
+ quit_eventloop, NULL, NULL);
mainloop_sd_notify("STATUS=Powering down");
adapter_shutdown();
#include "lib/sdp_lib.h"
#include "btio/btio.h"
+#include "shared/timeout.h"
#include "log.h"
#include "sdp-client.h"
bdaddr_t src;
bdaddr_t dst;
sdp_session_t *session;
- guint timer;
+ unsigned int timer;
guint io_id;
};
g_free(cached);
}
-static gboolean cached_session_expired(gpointer user_data)
+static bool cached_session_expired(gpointer user_data)
{
struct cached_sdp_session *cached = user_data;
if (bacmp(&c->src, src) || bacmp(&c->dst, dst))
continue;
- g_source_remove(c->timer);
+ timeout_remove(c->timer);
g_source_remove(c->io_id);
session = c->session;
{
struct cached_sdp_session *cached = user_data;
- g_source_remove(cached->timer);
+ timeout_remove(cached->timer);
cleanup_cached_session(cached);
return FALSE;
cached_sdp_sessions = g_slist_append(cached_sdp_sessions, cached);
- cached->timer = g_timeout_add_seconds(CACHE_TIMEOUT,
+ cached->timer = timeout_add_seconds(CACHE_TIMEOUT,
cached_session_expired,
- cached);
+ cached, NULL);
/* Watch the connection state during cache timeout */
sk = sdp_get_socket(session);