11static const char *
const TAG =
"wifi_info";
13#ifdef USE_WIFI_LISTENERS
15static constexpr size_t MAX_STATE_LENGTH = 255;
29 for (
const auto &ip : ips) {
50 char buf[network::IP_ADDRESS_BUFFER_SIZE * 2];
52 size_t len1 = strlen(buf);
54 dns2.
str_to(buf + len1 + 1);
67static char *format_scan_entry(
char *buf,
const char *ssid,
size_t ssid_len, int8_t rssi) {
68 memcpy(buf, ssid, ssid_len);
80 char buf[MAX_STATE_LENGTH + 1];
82 const char *
end = buf + MAX_STATE_LENGTH;
84 for (
const auto &scan : results) {
85 if (scan.get_is_hidden())
87 const std::string &ssid = scan.get_ssid();
89 if (ptr + ssid.size() + 9 >
end)
91 ptr = format_scan_entry(ptr, ssid.c_str(), ssid.size(), scan.get_rssi());
119 char buf[18] =
"unknown";
136#define MODE_STR(s) static const char MODE_##s[] PROGMEM = #s
142 const char *mode_str_p;
145 mode_str_p = MODE_NONE;
148 mode_str_p = MODE_LIGHT;
151 mode_str_p = MODE_HIGH;
154 mode_str_p = MODE_UNKNOWN;
159 strncpy_P(mode_str, mode_str_p,
sizeof(mode_str));
160 mode_str[
sizeof(mode_str) - 1] =
'\0';
163 const char *mode_str;
175 mode_str =
"UNKNOWN";
BedjetMode mode
BedJet operating mode.
StringRef is a reference to a string owned by something else.
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
void format_mac_addr_upper(const uint8_t *mac, char *output)
Format MAC address as XX:XX:XX:XX:XX:XX (uppercase, colon separators)
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 * str_to(char *buf) const
Write IP address to buffer. Buffer must be at least IP_ADDRESS_BUFFER_SIZE bytes.