Merge remote-tracking branch 'upstream/wifi-manual-ip-esp8266-rodata' into integration

This commit is contained in:
J. Nick Koston
2026-02-23 16:13:28 -06:00
3 changed files with 24 additions and 6 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ std::string get_random_ha_tag_ndef() {
for (int i = 0; i < 12; i++) {
uri += ALPHANUM[random_uint32() % (sizeof(ALPHANUM) - 1)];
}
ESP_LOGD("pn7160", "Payload to be written: %s", uri.c_str());
ESP_LOGD(TAG, "Payload to be written: %s", uri.c_str());
return uri;
}
+17 -5
View File
@@ -439,13 +439,25 @@ def safe_ip(ip):
def manual_ip(config):
if config is None:
return None
fields = {
"static_ip": CONF_STATIC_IP,
"gateway": CONF_GATEWAY,
"subnet": CONF_SUBNET,
"dns1": CONF_DNS1,
"dns2": CONF_DNS2,
}
if CORE.is_esp8266:
# On ESP8266, .rodata is mapped to RAM. Using StructInitializer with all
# compile-time constant fields causes the compiler to place a const blob
# in .rodata, silently consuming ~20 bytes of RAM. Field-by-field assignment
# encodes the values as immediate operands in flash instructions instead.
cg.add(cg.RawExpression("wifi::ManualIP manual_ip{}"))
for member, key in fields.items():
cg.add(cg.RawExpression(f"manual_ip.{member} = {safe_ip(config.get(key))}"))
return cg.RawExpression("manual_ip")
return cg.StructInitializer(
ManualIP,
("static_ip", safe_ip(config[CONF_STATIC_IP])),
("gateway", safe_ip(config[CONF_GATEWAY])),
("subnet", safe_ip(config[CONF_SUBNET])),
("dns1", safe_ip(config.get(CONF_DNS1))),
("dns2", safe_ip(config.get(CONF_DNS2))),
*((member, safe_ip(config.get(key))) for member, key in fields.items()),
)
@@ -1,6 +1,12 @@
wifi:
min_auth_mode: WPA2
post_connect_roaming: true
manual_ip:
static_ip: 192.168.1.100
gateway: 192.168.1.1
subnet: 255.255.255.0
dns1: 1.1.1.1
dns2: 8.8.8.8
packages:
- !include common.yaml