void SetDhcpProgressState(void) { g_dhcpInProgress = true; // disable power save mode while DHCP in progress if (GetAppPowerSaveMode() == true) { WFConfigureLowPowerMode(WF_LOW_POWER_MODE_OFF); } }
void WiFiTask(void) { #if defined (WF_USE_POWER_SAVE_FUNCTIONS) //-------------------------------------------------------------------------- // if not waiting for a mgmt response and the application wants PS-Poll Mode //-------------------------------------------------------------------------- if ((!g_WaitingForMgmtResponse) && (GetAppPowerSaveMode() == TRUE)) { // else if changed from connected to disconnected, or vice-versa if (g_WiFiConnectionChanged == TRUE) { g_WiFiConnectionChanged = FALSE; // if lost connection if (g_WiFiConnection == FALSE) { WFConfigureLowPowerMode(WF_LOW_POWER_MODE_OFF); } // else connected (or reconnected) else { // if not using DHCP if (AppConfig.Flags.bIsDHCPEnabled == FALSE) { WF_PsPollEnable(g_rxDtim); WFConfigureLowPowerMode(WF_LOW_POWER_MODE_ON); } // note: if using DHCP, another case will reenable PS-Poll mode } } // else if app is using DHCP and we just got an IP address via DHCP else if ((AppConfig.Flags.bIsDHCPEnabled == TRUE) && (g_DhcpSuccessful == TRUE)) { g_DhcpSuccessful = FALSE; WF_PsPollEnable(g_rxDtim); WFConfigureLowPowerMode(WF_LOW_POWER_MODE_ON); } // if application wants PS-Poll, but the driver disabled it to send a message (and not waiting for DHCP) else if ( g_WiFiConnection == TRUE && isSleepNeeded() && !isDhcpInProgress() ) { ClearSleepNeeded(); WFConfigureLowPowerMode(WF_LOW_POWER_MODE_ON); } } #endif /* WF_USE_POWER_SAVE_FUNCTIONS */ }