@ -3,7 +3,7 @@
* @ file AutoConnect . cpp
* @ author hieromon @ gmail . com
* @ version 1.2 .0
* @ date 2020 - 04 - 22
* @ date 2020 - 04 - 23
* @ copyright MIT license .
*/
@ -257,11 +257,6 @@ bool AutoConnect::begin(const char* ssid, const char* passphrase, unsigned long
if ( ! _responsePage )
_startWebServer ( ) ;
// Stop ticker
if ( cs )
if ( _ticker )
_ticker - > stop ( ) ;
return cs ;
}
@ -524,7 +519,7 @@ void AutoConnect::handleRequest(void) {
strncat ( password_c , reinterpret_cast < const char * > ( _credential . password ) , sizeof ( password_c ) - 1 ) ;
AC_DBG ( " Attempt:%s Ch(%d) \n " , ssid_c , ( int ) ch ) ;
WiFi . begin ( ssid_c , password_c , ch ) ;
if ( _waitForConnect ( _connectTimeout ) = = WL_CONNECTED ) {
if ( ( _rsConnect = _waitForConnect ( _connectTimeout ) ) = = WL_CONNECTED ) {
if ( WiFi . BSSID ( ) ! = NULL ) {
memcpy ( _credential . bssid , WiFi . BSSID ( ) , sizeof ( station_config_t : : bssid ) ) ;
_currentHostIP = WiFi . localIP ( ) ;
@ -556,12 +551,14 @@ void AutoConnect::handleRequest(void) {
else {
_currentHostIP = WiFi . softAPIP ( ) ;
_redirectURI = String ( F ( AUTOCONNECT_URI_FAIL ) ) ;
_rsConnect = WiFi . status ( ) ;
_disconnectWiFi ( false ) ;
while ( WiFi . status ( ) ! = WL_IDLE_STATUS & & WiFi . status ( ) ! = WL_DISCONNECTED ) {
delay ( 1 ) ;
yield ( ) ;
}
// Restore the ticker
if ( _ticker & & WiFi . getMode ( ) = = WIFI_AP_STA )
_ticker - > start ( AUTOCONNECT_FLICKER_PERIODAP , ( uint8_t ) AUTOCONNECT_FLICKER_WIDTHAP ) ;
}
_rfConnect = false ;
}
@ -619,6 +616,12 @@ void AutoConnect::handleRequest(void) {
// Reflect the menu display specifier from AutoConnectConfig to AutoConnectOTA page
_ota - > menu ( _apConfig . menuItems & AC_MENUITEM_UPDATE ) ;
}
// Post-process for ticker
if ( _ticker ) {
if ( WiFi . status ( ) = = WL_CONNECTED )
_ticker - > stop ( ) ;
}
}
/**
@ -1212,6 +1215,16 @@ void AutoConnect::_disconnectWiFi(bool wifiOff) {
delay ( 1 ) ;
yield ( ) ;
}
// Restart the ticker to indicate that ESP module into the disconnected state.
if ( _ticker ) {
uint32_t tc = AUTOCONNECT_FLICKER_PERIODDC ;
uint8_t tw = AUTOCONNECT_FLICKER_WIDTHDC ;
if ( WiFi . getMode ( ) = = WIFI_AP_STA ) {
tc = AUTOCONNECT_FLICKER_PERIODAP ;
tw = AUTOCONNECT_FLICKER_WIDTHAP ;
}
_ticker - > start ( tc , tw ) ;
}
}
/**