1
0
mirror of https://github.com/esphome/esphome.git synced 2026-02-08 00:31:58 +00:00

might as well make it span

This commit is contained in:
J. Nick Koston
2025-12-26 14:43:01 -10:00
parent 3fe4e18dc4
commit f446860166
8 changed files with 18 additions and 19 deletions

View File

@@ -8,6 +8,7 @@
#include "esphome/core/helpers.h"
#include "esphome/core/string_ref.h"
#include <span>
#include <string>
#include <vector>
@@ -275,7 +276,7 @@ class WiFiScanResultsListener {
*/
class WiFiConnectStateListener {
public:
virtual void on_wifi_connect_state(StringRef ssid, const bssid_t &bssid) = 0;
virtual void on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) = 0;
};
/** Listener interface for WiFi power save mode changes.

View File

@@ -525,10 +525,8 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
it.channel);
s_sta_connected = true;
#ifdef USE_WIFI_LISTENERS
bssid_t bssid;
std::copy_n(it.bssid, 6, bssid.begin());
for (auto *listener : global_wifi_component->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), bssid);
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), it.bssid);
}
// For static IP configurations, GOT_IP event may not fire, so notify IP listeners here
#ifdef USE_WIFI_MANUAL_IP
@@ -561,8 +559,9 @@ void WiFiComponent::wifi_event_callback(System_Event_t *event) {
s_sta_connected = false;
s_sta_connecting = false;
#ifdef USE_WIFI_LISTENERS
static constexpr uint8_t EMPTY_BSSID[6] = {};
for (auto *listener : global_wifi_component->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(), bssid_t({0, 0, 0, 0, 0, 0}));
listener->on_wifi_connect_state(StringRef(), EMPTY_BSSID);
}
#endif
break;

View File

@@ -736,10 +736,8 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
format_mac_address_pretty(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode));
s_sta_connected = true;
#ifdef USE_WIFI_LISTENERS
bssid_t bssid;
std::copy_n(it.bssid, 6, bssid.begin());
for (auto *listener : this->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), bssid);
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), it.bssid);
}
// For static IP configurations, GOT_IP event may not fire, so notify IP listeners here
#ifdef USE_WIFI_MANUAL_IP
@@ -774,8 +772,9 @@ void WiFiComponent::wifi_process_event_(IDFWiFiEvent *data) {
s_sta_connecting = false;
error_from_callback_ = true;
#ifdef USE_WIFI_LISTENERS
static constexpr uint8_t EMPTY_BSSID[6] = {};
for (auto *listener : this->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(), bssid_t({0, 0, 0, 0, 0, 0}));
listener->on_wifi_connect_state(StringRef(), EMPTY_BSSID);
}
#endif

View File

@@ -302,10 +302,8 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
ESP_LOGV(TAG, "Connected ssid='%s' bssid=" LOG_SECRET("%s") " channel=%u, authmode=%s", buf,
format_mac_address_pretty(it.bssid).c_str(), it.channel, get_auth_mode_str(it.authmode));
#ifdef USE_WIFI_LISTENERS
bssid_t bssid;
std::copy_n(it.bssid, 6, bssid.begin());
for (auto *listener : this->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), bssid);
listener->on_wifi_connect_state(StringRef(buf, it.ssid_len), it.bssid);
}
// For static IP configurations, GOT_IP event may not fire, so notify IP listeners here
#ifdef USE_WIFI_MANUAL_IP
@@ -359,8 +357,9 @@ void WiFiComponent::wifi_event_callback_(esphome_wifi_event_id_t event, esphome_
s_sta_connecting = false;
#ifdef USE_WIFI_LISTENERS
static constexpr uint8_t EMPTY_BSSID[6] = {};
for (auto *listener : this->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(), bssid_t({0, 0, 0, 0, 0, 0}));
listener->on_wifi_connect_state(StringRef(), EMPTY_BSSID);
}
#endif
break;

View File

@@ -277,8 +277,9 @@ void WiFiComponent::wifi_loop_() {
s_sta_had_ip = false;
ESP_LOGV(TAG, "Disconnected");
#ifdef USE_WIFI_LISTENERS
static constexpr uint8_t EMPTY_BSSID[6] = {};
for (auto *listener : this->connect_state_listeners_) {
listener->on_wifi_connect_state(StringRef(), bssid_t({0, 0, 0, 0, 0, 0}));
listener->on_wifi_connect_state(StringRef(), EMPTY_BSSID);
}
#endif
}

View File

@@ -103,7 +103,7 @@ void SSIDWiFiInfo::setup() { wifi::global_wifi_component->add_connect_state_list
void SSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "SSID", this); }
void SSIDWiFiInfo::on_wifi_connect_state(StringRef ssid, const wifi::bssid_t &bssid) {
void SSIDWiFiInfo::on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) {
this->publish_state(ssid.str());
}
@@ -115,7 +115,7 @@ void BSSIDWiFiInfo::setup() { wifi::global_wifi_component->add_connect_state_lis
void BSSIDWiFiInfo::dump_config() { LOG_TEXT_SENSOR("", "BSSID", this); }
void BSSIDWiFiInfo::on_wifi_connect_state(StringRef ssid, const wifi::bssid_t &bssid) {
void BSSIDWiFiInfo::on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) {
char buf[18] = "unknown";
if (mac_address_is_valid(bssid.data())) {
format_mac_addr_upper(bssid.data(), buf);

View File

@@ -52,7 +52,7 @@ class SSIDWiFiInfo final : public Component, public text_sensor::TextSensor, pub
void dump_config() override;
// WiFiConnectStateListener interface
void on_wifi_connect_state(StringRef ssid, const wifi::bssid_t &bssid) override;
void on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) override;
};
class BSSIDWiFiInfo final : public Component, public text_sensor::TextSensor, public wifi::WiFiConnectStateListener {
@@ -61,7 +61,7 @@ class BSSIDWiFiInfo final : public Component, public text_sensor::TextSensor, pu
void dump_config() override;
// WiFiConnectStateListener interface
void on_wifi_connect_state(StringRef ssid, const wifi::bssid_t &bssid) override;
void on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) override;
};
class PowerSaveModeWiFiInfo final : public Component,

View File

@@ -28,7 +28,7 @@ class WiFiSignalSensor : public sensor::Sensor, public PollingComponent {
#ifdef USE_WIFI_LISTENERS
// WiFiConnectStateListener interface - update RSSI immediately on connect
void on_wifi_connect_state(StringRef ssid, const wifi::bssid_t &bssid) override { this->update(); }
void on_wifi_connect_state(StringRef ssid, std::span<const uint8_t, 6> bssid) override { this->update(); }
#endif
};