12static const char *
const TAG =
"wifi_info";
14#ifdef USE_WIFI_IP_STATE_LISTENERS
26 char buf[network::IP_ADDRESS_BUFFER_SIZE];
30 for (
const auto &ip : ips) {
52 char buf[network::IP_ADDRESS_BUFFER_SIZE * 2];
54 size_t len1 = strlen(buf);
56 dns2.
str_to(buf + len1 + 1);
62#ifdef USE_WIFI_SCAN_RESULTS_LISTENERS
73static char *format_scan_entry(
char *buf,
const char *ssid,
size_t ssid_len, int8_t rssi) {
74 memcpy(buf, ssid, ssid_len);
86 char buf[MAX_STATE_LEN + 1];
88 const char *
end = buf + MAX_STATE_LEN;
90 for (
const auto &scan : results) {
91 if (scan.get_is_hidden())
93 const auto &ssid = scan.get_ssid();
95 if (ptr + ssid.size() + 9 >
end)
97 ptr = format_scan_entry(ptr, ssid.c_str(), ssid.size(), scan.get_rssi());
106#ifdef USE_WIFI_CONNECT_STATE_LISTENERS
129 char buf[MAC_ADDRESS_PRETTY_BUFFER_SIZE] =
"unknown";
138#ifdef USE_WIFI_POWER_SAVE_LISTENERS
150#define MODE_STR(s) static const char MODE_##s[] PROGMEM = #s
156 const char *mode_str_p;
159 mode_str_p = MODE_NONE;
162 mode_str_p = MODE_LIGHT;
165 mode_str_p = MODE_HIGH;
168 mode_str_p = MODE_UNKNOWN;
173 strncpy_P(mode_str, mode_str_p,
sizeof(mode_str));
174 mode_str[
sizeof(mode_str) - 1] =
'\0';
177 const char *mode_str;
189 mode_str =
"UNKNOWN";
BedjetMode mode
BedJet operating mode.
StringRef is a reference to a string owned by something else.
constexpr const char * c_str() const
constexpr size_type size() const
void publish_state(const std::string &state)
void add_connect_state_listener(WiFiConnectStateListener *listener)
Add a listener for WiFi connection state changes.
void add_power_save_listener(WiFiPowerSaveListener *listener)
Add a listener for WiFi power save mode changes.
void add_ip_state_listener(WiFiIPStateListener *listener)
Add a listener for IP state changes.
void add_scan_results_listener(WiFiScanResultsListener *listener)
Add a listener for WiFi scan results.
void dump_config() override
void on_wifi_connect_state(StringRef ssid, std::span< const uint8_t, 6 > bssid) override
void on_ip_state(const network::IPAddresses &ips, const network::IPAddress &dns1, const network::IPAddress &dns2) override
void dump_config() override
void dump_config() override
void on_ip_state(const network::IPAddresses &ips, const network::IPAddress &dns1, const network::IPAddress &dns2) override
std::array< text_sensor::TextSensor *, 5 > ip_sensors_
void dump_config() override
void dump_config() override
void on_wifi_power_save(wifi::WiFiPowerSaveMode mode) override
void on_wifi_connect_state(StringRef ssid, std::span< const uint8_t, 6 > bssid) override
void dump_config() override
void on_wifi_scan_results(const wifi::wifi_scan_vector_t< wifi::WiFiScanResult > &results) override
void dump_config() override
std::array< IPAddress, 5 > IPAddresses
std::vector< T > wifi_scan_vector_t
WiFiComponent * global_wifi_component
bool mac_address_is_valid(const uint8_t *mac)
Check if the MAC address is not all zeros or all ones.
char * int8_to_str(char *buf, int8_t val)
Write int8 value to buffer without modulo operations.
char * format_mac_addr_upper(const uint8_t *mac, char *output)
Format MAC address as XX:XX:XX:XX:XX:XX (uppercase, colon separators)
char * str_to(char *buf) const