diff --git a/lib/AmsConfiguration/include/hexutils.h b/lib/AmsConfiguration/include/hexutils.h index 28e2c93d..e67af750 100644 --- a/lib/AmsConfiguration/include/hexutils.h +++ b/lib/AmsConfiguration/include/hexutils.h @@ -7,6 +7,6 @@ String toHex(uint8_t* in); String toHex(uint8_t* in, uint16_t size); void fromHex(uint8_t *out, String in, uint16_t size); -void stripNonAscii(uint8_t* in, uint16_t size); +void stripNonAscii(uint8_t* in, uint16_t size, bool extended = false); #endif \ No newline at end of file diff --git a/lib/AmsConfiguration/src/AmsConfiguration.cpp b/lib/AmsConfiguration/src/AmsConfiguration.cpp index 0856f1ee..bbf737bb 100644 --- a/lib/AmsConfiguration/src/AmsConfiguration.cpp +++ b/lib/AmsConfiguration/src/AmsConfiguration.cpp @@ -62,7 +62,7 @@ bool AmsConfiguration::setWiFiConfig(WiFiConfig& config) { wifiChanged = true; } - stripNonAscii((uint8_t*) config.ssid, 32); + stripNonAscii((uint8_t*) config.ssid, 32, true); stripNonAscii((uint8_t*) config.psk, 64); stripNonAscii((uint8_t*) config.ip, 16); stripNonAscii((uint8_t*) config.gateway, 16); diff --git a/lib/AmsConfiguration/src/hexutils.cpp b/lib/AmsConfiguration/src/hexutils.cpp index 54f95412..c09be976 100644 --- a/lib/AmsConfiguration/src/hexutils.cpp +++ b/lib/AmsConfiguration/src/hexutils.cpp @@ -22,13 +22,15 @@ void fromHex(uint8_t *out, String in, uint16_t size) { } } -void stripNonAscii(uint8_t* in, uint16_t size) { +void stripNonAscii(uint8_t* in, uint16_t size, bool extended) { for(uint16_t i = 0; i < size; i++) { if(in[i] == 0) { // Clear the rest with null-terminator memset(in+i, 0, size-i); break; } - if(in[i] < 32 || in[i] > 126) { + if(extended && (in[i] < 32 || in[i] == 127 || in[i] == 129 || in[i] == 141 || in[i] == 143 || in[i] == 144 || in[i] == 157)) { + memset(in+i, ' ', 1); + } else if(in[i] < 32 || in[i] > 126) { memset(in+i, ' ', 1); } }