mirror of
https://github.com/esphome/esphome.git
synced 2026-09-11 23:37:34 +00:00
Merge remote-tracking branch 'upstream/wifi-esp8266-roam-scan-dwell' into integration
This commit is contained in:
@@ -665,11 +665,22 @@ bool WiFiComponent::wifi_scan_start_(bool passive) {
|
||||
config.show_hidden = 1;
|
||||
#if USE_ARDUINO_VERSION_CODE >= VERSION_CODE(2, 4, 0)
|
||||
config.scan_type = passive ? WIFI_SCAN_TYPE_PASSIVE : WIFI_SCAN_TYPE_ACTIVE;
|
||||
// Use shorter dwell times for roaming scans - we only need to detect strong
|
||||
// nearby APs, not do a thorough survey. This also reduces off-channel time
|
||||
// which can cause Beacon Timeout disconnects on some APs.
|
||||
// Roaming times match the ESP32 IDF scan defaults.
|
||||
static constexpr uint32_t SCAN_PASSIVE_DEFAULT = 500;
|
||||
static constexpr uint32_t SCAN_PASSIVE_ROAMING = 300;
|
||||
static constexpr uint32_t SCAN_ACTIVE_MIN_DEFAULT = 400;
|
||||
static constexpr uint32_t SCAN_ACTIVE_MAX_DEFAULT = 500;
|
||||
static constexpr uint32_t SCAN_ACTIVE_MIN_ROAMING = 100;
|
||||
static constexpr uint32_t SCAN_ACTIVE_MAX_ROAMING = 300;
|
||||
bool roaming = this->roaming_state_ == RoamingState::SCANNING;
|
||||
if (passive) {
|
||||
config.scan_time.passive = 500;
|
||||
config.scan_time.passive = roaming ? SCAN_PASSIVE_ROAMING : SCAN_PASSIVE_DEFAULT;
|
||||
} else {
|
||||
config.scan_time.active.min = 400;
|
||||
config.scan_time.active.max = 500;
|
||||
config.scan_time.active.min = roaming ? SCAN_ACTIVE_MIN_ROAMING : SCAN_ACTIVE_MIN_DEFAULT;
|
||||
config.scan_time.active.max = roaming ? SCAN_ACTIVE_MAX_ROAMING : SCAN_ACTIVE_MAX_DEFAULT;
|
||||
}
|
||||
#endif
|
||||
bool ret = wifi_station_scan(&config, &WiFiComponent::s_wifi_scan_done_callback);
|
||||
|
||||
Reference in New Issue
Block a user