- struct connman_device *device = user_data;
-
- DBG("device %p", device);
-
- if (device->driver == NULL) {
- device->scan_timeout = 0;
- return FALSE;
- }
-
- if (device->driver->scan)
- device->driver->scan(device);
-
- return TRUE;
-}
-
-static void clear_scan_trigger(struct connman_device *device)
-{
- if (device->scan_timeout > 0) {
- g_source_remove(device->scan_timeout);
- device->scan_timeout = 0;
- }
-}
-
-static void reset_scan_trigger(struct connman_device *device)
-{
- clear_scan_trigger(device);
-
- if (device->scan_interval > 0) {
- guint interval;
-
- if (g_hash_table_size(device->networks) == 0) {
- if (device->backoff_interval >= device->scan_interval)
- device->backoff_interval = SCAN_INITIAL_DELAY;
- interval = device->backoff_interval;
- } else
- interval = device->scan_interval;
-
- DBG("interval %d", interval);
-
- device->scan_timeout = g_timeout_add_seconds(interval,
- device_scan_trigger, device);
-
- device->backoff_interval *= 2;
- if (device->backoff_interval > device->scan_interval)
- device->backoff_interval = device->scan_interval;