Removed WL_ prefix in StaStatus and added eth connected bool
This commit is contained in:
@@ -106,7 +106,7 @@ bool _long_range = false;
|
|||||||
wifi_ps_type_t _sleepEnabled = WIFI_PS_MIN_MODEM;
|
wifi_ps_type_t _sleepEnabled = WIFI_PS_MIN_MODEM;
|
||||||
|
|
||||||
// sta
|
// sta
|
||||||
std::atomic<WiFiStaStatus> _sta_status{WiFiStaStatus::WL_NO_SHIELD};
|
std::atomic<WiFiStaStatus> _sta_status{WiFiStaStatus::NO_SHIELD};
|
||||||
std::optional<espchrono::millis_clock::time_point> _wifiConnectFailFlag;
|
std::optional<espchrono::millis_clock::time_point> _wifiConnectFailFlag;
|
||||||
uint8_t _wifiConnectFailCounter{};
|
uint8_t _wifiConnectFailCounter{};
|
||||||
|
|
||||||
@@ -392,7 +392,7 @@ void update(const config &config)
|
|||||||
{
|
{
|
||||||
if (_wifiState == WiFiState::None)
|
if (_wifiState == WiFiState::None)
|
||||||
{
|
{
|
||||||
if (get_sta_status() == WiFiStaStatus::WL_CONNECTED)
|
if (get_sta_status() == WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Unexpected connected!");
|
ESP_LOGI(TAG, "Unexpected connected!");
|
||||||
|
|
||||||
@@ -458,7 +458,7 @@ void update(const config &config)
|
|||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Finished scan with %zd results", scanResult->entries.size());
|
ESP_LOGI(TAG, "Finished scan with %zd results", scanResult->entries.size());
|
||||||
|
|
||||||
if (get_sta_status() != WiFiStaStatus::WL_CONNECTED)
|
if (get_sta_status() != WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "Not connected after scan, building connect plan...");
|
ESP_LOGI(TAG, "Not connected after scan, building connect plan...");
|
||||||
buildConnectPlan(config, *scanResult);
|
buildConnectPlan(config, *scanResult);
|
||||||
@@ -482,7 +482,7 @@ void update(const config &config)
|
|||||||
if (_wifiState == WiFiState::Connecting)
|
if (_wifiState == WiFiState::Connecting)
|
||||||
{
|
{
|
||||||
const auto status = get_sta_status();
|
const auto status = get_sta_status();
|
||||||
if (status == WiFiStaStatus::WL_CONNECTED)
|
if (status == WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
if (const auto interf = esp_netifs[ESP_IF_WIFI_STA])
|
if (const auto interf = esp_netifs[ESP_IF_WIFI_STA])
|
||||||
{
|
{
|
||||||
@@ -553,7 +553,7 @@ void update(const config &config)
|
|||||||
if (_wifiState == WiFiState::Connected)
|
if (_wifiState == WiFiState::Connected)
|
||||||
{
|
{
|
||||||
const auto status = get_sta_status();
|
const auto status = get_sta_status();
|
||||||
if (status != WiFiStaStatus::WL_CONNECTED)
|
if (status != WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
ESP_LOGW(TAG, "lost connection: %s", toString(status).c_str());
|
ESP_LOGW(TAG, "lost connection: %s", toString(status).c_str());
|
||||||
if (const auto result = wifi_sta_disconnect(config, false, true); result != ESP_OK)
|
if (const auto result = wifi_sta_disconnect(config, false, true); result != ESP_OK)
|
||||||
@@ -618,7 +618,7 @@ void update(const config &config)
|
|||||||
setWifiState(WiFiState::None);
|
setWifiState(WiFiState::None);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cpputils::is_in(get_sta_status(), WiFiStaStatus::WL_IDLE_STATUS, WiFiStaStatus::WL_DISCONNECTED) ||
|
if (!cpputils::is_in(get_sta_status(), WiFiStaStatus::IDLE_STATUS, WiFiStaStatus::DISCONNECTED) ||
|
||||||
!cpputils::is_in(_wifiState, WiFiState::None, WiFiState::Scanning))
|
!cpputils::is_in(_wifiState, WiFiState::None, WiFiState::Scanning))
|
||||||
{
|
{
|
||||||
ESP_LOGI(TAG, "disconnecting, because wifi_enabled is false");
|
ESP_LOGI(TAG, "disconnecting, because wifi_enabled is false");
|
||||||
@@ -808,6 +808,11 @@ esp_eth_handle_t getEthHandle()
|
|||||||
{
|
{
|
||||||
return eth_handle;
|
return eth_handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get_eth_connected()
|
||||||
|
{
|
||||||
|
return wifi_get_status_bits() & ETH_CONNECTED_BIT;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
@@ -1102,9 +1107,9 @@ void set_sta_status(WiFiStaStatus status)
|
|||||||
|
|
||||||
ESP_LOGI(TAG, "%s (from %s)", toString(status).c_str(), toString(oldStatus).c_str());
|
ESP_LOGI(TAG, "%s (from %s)", toString(status).c_str(), toString(oldStatus).c_str());
|
||||||
|
|
||||||
if (oldStatus == WiFiStaStatus::WL_CONNECTED && status != WiFiStaStatus::WL_CONNECTED)
|
if (oldStatus == WiFiStaStatus::CONNECTED && status != WiFiStaStatus::CONNECTED)
|
||||||
_lastStaSwitchedFromConnected = espchrono::millis_clock::now();
|
_lastStaSwitchedFromConnected = espchrono::millis_clock::now();
|
||||||
else if (oldStatus != WiFiStaStatus::WL_CONNECTED && status == WiFiStaStatus::WL_CONNECTED)
|
else if (oldStatus != WiFiStaStatus::CONNECTED && status == WiFiStaStatus::CONNECTED)
|
||||||
_lastStaSwitchedToConnected = espchrono::millis_clock::now();
|
_lastStaSwitchedToConnected = espchrono::millis_clock::now();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1157,17 +1162,17 @@ void wifi_event_callback(const config &config, const WifiEvent &event)
|
|||||||
wifi_scan_done();
|
wifi_scan_done();
|
||||||
break;
|
break;
|
||||||
case WifiEventId::WIFI_STA_START:
|
case WifiEventId::WIFI_STA_START:
|
||||||
set_sta_status(WiFiStaStatus::WL_IDLE_STATUS);
|
set_sta_status(WiFiStaStatus::IDLE_STATUS);
|
||||||
wifi_set_status_bits(STA_STARTED_BIT);
|
wifi_set_status_bits(STA_STARTED_BIT);
|
||||||
if (const auto result = esp_wifi_set_ps(_sleepEnabled); result != ESP_OK)
|
if (const auto result = esp_wifi_set_ps(_sleepEnabled); result != ESP_OK)
|
||||||
ESP_LOGE(TAG, "esp_wifi_set_ps() failed with %s", esp_err_to_name(result));
|
ESP_LOGE(TAG, "esp_wifi_set_ps() failed with %s", esp_err_to_name(result));
|
||||||
break;
|
break;
|
||||||
case WifiEventId::WIFI_STA_STOP:
|
case WifiEventId::WIFI_STA_STOP:
|
||||||
set_sta_status(WiFiStaStatus::WL_NO_SHIELD);
|
set_sta_status(WiFiStaStatus::NO_SHIELD);
|
||||||
wifi_clear_status_bits(STA_STARTED_BIT | STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT);
|
wifi_clear_status_bits(STA_STARTED_BIT | STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT);
|
||||||
break;
|
break;
|
||||||
case WifiEventId::WIFI_STA_CONNECTED:
|
case WifiEventId::WIFI_STA_CONNECTED:
|
||||||
set_sta_status(WiFiStaStatus::WL_IDLE_STATUS);
|
set_sta_status(WiFiStaStatus::IDLE_STATUS);
|
||||||
wifi_set_status_bits(STA_CONNECTED_BIT);
|
wifi_set_status_bits(STA_CONNECTED_BIT);
|
||||||
//esp_netif_create_ip6_linklocal(esp_netifs[ESP_IF_WIFI_STA]);
|
//esp_netif_create_ip6_linklocal(esp_netifs[ESP_IF_WIFI_STA]);
|
||||||
break;
|
break;
|
||||||
@@ -1197,18 +1202,18 @@ void wifi_event_callback(const config &config, const WifiEvent &event)
|
|||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
const auto sta_status = get_sta_status();
|
const auto sta_status = get_sta_status();
|
||||||
if (sta_status != WiFiStaStatus::WL_DISCONNECTING)
|
if (sta_status != WiFiStaStatus::DISCONNECTING)
|
||||||
{
|
{
|
||||||
ESP_LOGW(TAG, "setting fail flag");
|
ESP_LOGW(TAG, "setting fail flag");
|
||||||
_wifiConnectFailFlag = espchrono::millis_clock::now();
|
_wifiConnectFailFlag = espchrono::millis_clock::now();
|
||||||
}
|
}
|
||||||
switch (sta_status)
|
switch (sta_status)
|
||||||
{
|
{
|
||||||
case WiFiStaStatus::WL_CONNECTED: set_sta_status(WiFiStaStatus::WL_CONNECTION_LOST); break;
|
case WiFiStaStatus::CONNECTED: set_sta_status(WiFiStaStatus::CONNECTION_LOST); break;
|
||||||
case WiFiStaStatus::WL_CONNECTING: set_sta_status(WiFiStaStatus::WL_CONNECT_FAILED); break;
|
case WiFiStaStatus::CONNECTING: set_sta_status(WiFiStaStatus::CONNECT_FAILED); break;
|
||||||
case WiFiStaStatus::WL_DISCONNECTING:
|
case WiFiStaStatus::DISCONNECTING:
|
||||||
default:
|
default:
|
||||||
set_sta_status(WiFiStaStatus::WL_DISCONNECTED);
|
set_sta_status(WiFiStaStatus::DISCONNECTED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1233,12 +1238,12 @@ void wifi_event_callback(const config &config, const WifiEvent &event)
|
|||||||
wifi_stack::toString(event.got_ip.ip_info.netmask).c_str(),
|
wifi_stack::toString(event.got_ip.ip_info.netmask).c_str(),
|
||||||
wifi_stack::toString(event.got_ip.ip_info.gw).c_str()
|
wifi_stack::toString(event.got_ip.ip_info.gw).c_str()
|
||||||
);
|
);
|
||||||
set_sta_status(WiFiStaStatus::WL_CONNECTED);
|
set_sta_status(WiFiStaStatus::CONNECTED);
|
||||||
wifi_set_status_bits(STA_HAS_IP_BIT | STA_CONNECTED_BIT);
|
wifi_set_status_bits(STA_HAS_IP_BIT | STA_CONNECTED_BIT);
|
||||||
break;
|
break;
|
||||||
case WifiEventId::WIFI_STA_LOST_IP:
|
case WifiEventId::WIFI_STA_LOST_IP:
|
||||||
ESP_LOGW(TAG, "WIFI_STA_LOST_IP");
|
ESP_LOGW(TAG, "WIFI_STA_LOST_IP");
|
||||||
set_sta_status(WiFiStaStatus::WL_IDLE_STATUS);
|
set_sta_status(WiFiStaStatus::IDLE_STATUS);
|
||||||
wifi_clear_status_bits(STA_HAS_IP_BIT);
|
wifi_clear_status_bits(STA_HAS_IP_BIT);
|
||||||
break;
|
break;
|
||||||
case WifiEventId::WIFI_AP_START:
|
case WifiEventId::WIFI_AP_START:
|
||||||
@@ -2134,7 +2139,7 @@ esp_err_t wifi_sta_begin(const config &config, const wifi_entry &sta_config,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (get_sta_status() == WiFiStaStatus::WL_CONNECTED)
|
else if (get_sta_status() == WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
ESP_LOGW(TAG, "when already connected?!");
|
ESP_LOGW(TAG, "when already connected?!");
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
@@ -2174,7 +2179,7 @@ esp_err_t wifi_sta_begin(const config &config, const wifi_entry &sta_config,
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_sta_status(WiFiStaStatus::WL_CONNECTING);
|
set_sta_status(WiFiStaStatus::CONNECTING);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
@@ -2219,7 +2224,7 @@ esp_err_t wifi_sta_restart(const config &config)
|
|||||||
|
|
||||||
//last_sta_static_dns = config.sta.static_dns;
|
//last_sta_static_dns = config.sta.static_dns;
|
||||||
|
|
||||||
if (get_sta_status() != WiFiStaStatus::WL_CONNECTED)
|
if (get_sta_status() != WiFiStaStatus::CONNECTED)
|
||||||
{
|
{
|
||||||
_wifiConnectFailFlag = std::nullopt;
|
_wifiConnectFailFlag = std::nullopt;
|
||||||
|
|
||||||
@@ -2229,7 +2234,7 @@ esp_err_t wifi_sta_restart(const config &config)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_sta_status(WiFiStaStatus::WL_CONNECTING);
|
set_sta_status(WiFiStaStatus::CONNECTING);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ESP_LOGW(TAG, "when already connected?!");
|
ESP_LOGW(TAG, "when already connected?!");
|
||||||
@@ -2255,7 +2260,7 @@ esp_err_t wifi_sta_disconnect(const config &config, bool wifioff, bool eraseap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
set_sta_status(WiFiStaStatus::WL_DISCONNECTING);
|
set_sta_status(WiFiStaStatus::DISCONNECTING);
|
||||||
|
|
||||||
if (const auto result = esp_wifi_disconnect(); result != ESP_OK)
|
if (const auto result = esp_wifi_disconnect(); result != ESP_OK)
|
||||||
{
|
{
|
||||||
|
@@ -68,5 +68,6 @@ tl::expected<tcpip_adapter_ip_info_t, std::string> get_ip_info(tcpip_adapter_if_
|
|||||||
|
|
||||||
#ifdef CONFIG_ETH_ENABLED
|
#ifdef CONFIG_ETH_ENABLED
|
||||||
esp_eth_handle_t getEthHandle();
|
esp_eth_handle_t getEthHandle();
|
||||||
|
bool get_eth_connected();
|
||||||
#endif
|
#endif
|
||||||
} // namespace wifi_stack
|
} // namespace wifi_stack
|
||||||
|
@@ -13,16 +13,16 @@ namespace wifi_stack {
|
|||||||
DECLARE_TYPESAFE_ENUM(WiFiState, : uint8_t, WiFiStateValues)
|
DECLARE_TYPESAFE_ENUM(WiFiState, : uint8_t, WiFiStateValues)
|
||||||
|
|
||||||
#define WiFiStaStatusValues(x) \
|
#define WiFiStaStatusValues(x) \
|
||||||
x(WL_IDLE_STATUS) \
|
x(IDLE_STATUS) \
|
||||||
x(WL_NO_SSID_AVAIL) \
|
x(NO_SSID_AVAIL) \
|
||||||
x(WL_SCAN_COMPLETED) \
|
x(SCAN_COMPLETED) \
|
||||||
x(WL_CONNECTED) \
|
x(CONNECTED) \
|
||||||
x(WL_CONNECT_FAILED) \
|
x(CONNECT_FAILED) \
|
||||||
x(WL_CONNECTION_LOST) \
|
x(CONNECTION_LOST) \
|
||||||
x(WL_DISCONNECTED) \
|
x(DISCONNECTED) \
|
||||||
x(WL_CONNECTING) \
|
x(CONNECTING) \
|
||||||
x(WL_DISCONNECTING) \
|
x(DISCONNECTING) \
|
||||||
x(WL_NO_SHIELD)
|
x(NO_SHIELD)
|
||||||
DECLARE_TYPESAFE_ENUM(WiFiStaStatus, : uint8_t, WiFiStaStatusValues)
|
DECLARE_TYPESAFE_ENUM(WiFiStaStatus, : uint8_t, WiFiStaStatusValues)
|
||||||
|
|
||||||
#define WiFiScanStatusValues(x) \
|
#define WiFiScanStatusValues(x) \
|
||||||
|
Reference in New Issue
Block a user