gboolean netconfig_wifi_get_scanning(void);
void netconfig_wifi_set_scanning(gboolean scanning);
+gboolean netconfig_wifi_block_bgscan(int status);
void netconfig_wifi_set_bgscan_pause(gboolean pause);
gboolean netconfig_wifi_bgscan_set_interval(guint interval);
void netconfig_wifi_bgscan_get_interval(guint *interval);
gboolean netconfig_wifi_is_bgscan_paused(void);
-void netconfig_wifi_set_bgscan_pause(gboolean pause);
gboolean handle_set_bgscan(Wifi *wifi, GDBusMethodInvocation *context, guint scan_mode);
gboolean handle_resume_bgscan(Wifi *wifi, GDBusMethodInvocation *context);
return FALSE;
}
#endif
+ if (netconfig_wifi_block_bgscan(-1))
+ return FALSE;
if (state == NETCONFIG_WIFI_CONNECTED) {
if (netconfig_wifi_bgscan_get_mode() == WIFI_BGSCAN_MODE_EXPONENTIAL) {
return FALSE;
}
+gboolean netconfig_wifi_block_bgscan(int status)
+{
+ static gboolean blocked = FALSE;
+
+ if (status == 1)
+ blocked = TRUE;
+ else if (status == 0)
+ blocked = FALSE;
+
+ return blocked;
+}
+
void netconfig_wifi_set_bgscan_pause(gboolean pause)
{
struct bgscan_data *data = __netconfig_wifi_bgscan_get_data();
gboolean netconfig_wifi_is_bgscan_paused(void)
{
struct bgscan_data *data = __netconfig_wifi_bgscan_get_data();
- DBG("Wi-Fi background scan is [%s]", data->paused ? "Paused" : "Runnable");
+ DBG("Wi-Fi background scan is [%s]", data->paused ? "Paused" : "Runable");
return data->paused;
}
prev_state = new_state;
}
+static void __doze_level_changed_cb(keynode_t* node, void* user_data)
+{
+ int doze_level = -1;
+
+ if (node != NULL)
+ doze_level = vconf_keynode_get_int(node);
+ else
+ netconfig_vconf_get_int(VCONFKEY_SYSMAN_DOZE_MODE_LEVEL, &doze_level);
+
+ if (doze_level < 0) {
+ DBG("Invalid Doze Level: %d", doze_level);
+ return;
+ }
+
+ DBG("Doze Level: %d", doze_level);
+
+ if (doze_level >= 1) {
+ netconfig_wifi_block_bgscan(1);
+ DBG("Block BG scan!");
+ } else {
+ netconfig_wifi_block_bgscan(0);
+ DBG("Unblock BG scan!");
+ }
+}
+
static void __netconfig_telephony_ready_changed_cb(keynode_t * node, void *data)
{
int telephony_ready = 0;
vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, __emergency_mode_changed_cb, NULL);
vconf_notify_key_changed(VCONFKEY_PM_STATE, __pm_state_changed_cb, NULL);
+ vconf_notify_key_changed(VCONFKEY_SYSMAN_DOZE_MODE_LEVEL, __doze_level_changed_cb, NULL);
+ __doze_level_changed_cb(NULL, NULL);
}
void wifi_power_deinitialize(void)
{
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, __emergency_mode_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_PM_STATE, __pm_state_changed_cb);
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_DOZE_MODE_LEVEL, __doze_level_changed_cb);
}
gboolean handle_load_driver(Wifi *wifi,