mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
test: read and write shades.cfg and backups on the PC
The records move to ConfigRecords, free of the file system and the shade model, with 33 unit tests: each record's size against the header, a round trip of each, the layouts of versions 2 to 24, and a real backup when CONFIG_BACKUP names one. The tests found, and this fixes: - A quoted value as long as its field (a hostname of 30 or more characters, a full NTP server, MQTT host or time zone) was read short, and every value after it shifted. - A comma in a shade, group or room name shifted the rest of its record. Names are read at their fixed width. - 4.0 boards without Ethernet declared the network record 28 bytes longer than they wrote it, so a restore of the radio without the network read the radio from the middle of its record. Records are read and skipped to their newline, and backup() measures what it writes. - A restore cleared rooms beyond the backup's only on load. A restore now takes the backup's rolling codes even when they are lower than NVS's; a load still keeps the higher. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6db449e878
commit
8c59cf4903
8 changed files with 1881 additions and 915 deletions
|
|
@ -226,36 +226,6 @@ void ConfigSettings::print() {
|
|||
if(this->connType == conn_types_t::ethernet || this->connType == conn_types_t::ethernetpref) this->Ethernet.print();
|
||||
#endif
|
||||
}
|
||||
uint16_t ConfigSettings::calcSettingsRecSize() {
|
||||
return strlen(this->fwVersion.name) + 3
|
||||
+ strlen(this->hostname) + 3
|
||||
+ strlen(this->NTP.ntpServer) + 3
|
||||
+ strlen(this->NTP.posixZone) + 3
|
||||
+ 6 // ssdpbroadcast
|
||||
+ 6; // updateCheck
|
||||
}
|
||||
uint16_t ConfigSettings::calcNetRecSize() {
|
||||
return 4 // connType
|
||||
+ 6 // dhcp
|
||||
+ this->IP.ip.toString().length() + 3
|
||||
+ this->IP.gateway.toString().length() + 3
|
||||
+ this->IP.subnet.toString().length() + 3
|
||||
+ this->IP.dns1.toString().length() + 3
|
||||
+ this->IP.dns2.toString().length() + 3
|
||||
+ strlen(this->MQTT.protocol) + 3
|
||||
+ strlen(this->MQTT.hostname) + 3
|
||||
+ 6 // MQTT Port
|
||||
+ 6 // PubDisco
|
||||
+ strlen(this->MQTT.rootTopic) + 3
|
||||
+ strlen(this->MQTT.discoTopic) + 3
|
||||
+ 4 // ETH.boardType
|
||||
+ 4 // ETH.phyType
|
||||
+ 4 // ETH.clkMode
|
||||
+ 5 // ETH.phyAddress
|
||||
+ 5 // ETH.PWRPin
|
||||
+ 5 // ETH.MDCPin
|
||||
+ 5; // ETH.MDIOPin
|
||||
}
|
||||
bool MQTTSettings::begin() {
|
||||
this->load();
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue