fclose(fp);
}
-int netconfig_wifi_driver_and_supplicant(gboolean enable)
-{
- /* There are 3 thumb rules for Wi-Fi power management
- * 1. Do not make exposed API to control wpa_supplicant and driver directly.
- * It probably breaks ConnMan technology operation.
- *
- * 2. Do not remove driver and wpa_supplicant if ConnMan already enabled.
- * It breaks ConnMan technology operation.
- *
- * 3. Final the best rule: make it as simple as possible.
- * Simple code enables easy maintenance and reduces logical errors.
- */
- if (enable == TRUE)
- return _load_driver_and_supplicant();
- else {
- if (connman_wifi_technology_state == TRUE)
- return -ENOSYS;
-
- return _load_driver_and_supplicant();
- }
-}
-
void netconfig_wifi_disable_technology_state_by_only_connman_signal(void)
{
/* Important: it's only done by ConnMan technology signal update */
wifi_tech_state_e tech_state;
tech_state = wifi_state_get_technology_state();
- if (tech_state >= NETCONFIG_WIFI_TECH_POWERED)
+ if (tech_state >= NETCONFIG_WIFI_TECH_POWERED) {
+ /* There can be a scenario where wifi is automatically *
+ * activated by connman if wifi was powered in last boot. *
+ * So we should update connman_wifi_technology_state variable *
+ * if it is found that wifi_tech_state variable is *
+ * NETCONFIG_WIFI_TECH_POWERED and connman_wifi_technology_state *
+ * variable is FALSE. Earlier connman_wifi_technology_state *
+ * variable was only updated when wifi was Powered on from *
+ * net-config resulting in variable not getting updated. *
+ * This caused wifi to not get deactivated after reboot if *
+ * last power state was activated */
+ ERR("Net-Config WiFi connman technology state %d",
+ connman_wifi_technology_state);
+ if (connman_wifi_technology_state == FALSE)
+ connman_wifi_technology_state = TRUE;
return -EALREADY;
+ }
if (__is_wifi_restricted() == TRUE)
return -EPERM;