sanity check in serial speed code

This commit is contained in:
folkert van heusden 2024-03-29 22:06:23 +01:00
parent 42c57f1c3a
commit 7baff320d5
Signed by untrusted user who does not match committer: folkert
GPG key ID: 6B6455EDFEED3BD1

View file

@ -87,19 +87,21 @@ void console_thread_wrapper_panel(void *const c)
uint32_t load_serial_speed_configuration() uint32_t load_serial_speed_configuration()
{ {
File dataFile = LittleFS.open(SERIAL_CFG_FILE, "r"); File dataFile = LittleFS.open(SERIAL_CFG_FILE, "r");
if (!dataFile) if (!dataFile)
return 115200; return 115200;
size_t size = dataFile.size(); size_t size = dataFile.size();
uint8_t buffer[4] { 0 }; uint8_t buffer[4] { 0 };
dataFile.read(buffer, 4); dataFile.read(buffer, 4);
dataFile.close(); dataFile.close();
return (buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3]; uint32_t speed = (buffer[0] << 24) | (buffer[1] << 16) | (buffer[2] << 8) | buffer[3];
// sanity check
if (speed < 300)
speed = 115200;
return speed;
} }
bool save_serial_speed_configuration(const uint32_t bps) bool save_serial_speed_configuration(const uint32_t bps)
@ -110,7 +112,6 @@ bool save_serial_speed_configuration(const uint32_t bps)
return false; return false;
const uint8_t buffer[] = { uint8_t(bps >> 24), uint8_t(bps >> 16), uint8_t(bps >> 8), uint8_t(bps) }; const uint8_t buffer[] = { uint8_t(bps >> 24), uint8_t(bps >> 16), uint8_t(bps >> 8), uint8_t(bps) };
dataFile.write(buffer, 4); dataFile.write(buffer, 4);
dataFile.close(); dataFile.close();
@ -306,8 +307,15 @@ std::optional<std::pair<std::vector<disk_backend *>, std::vector<disk_backend *>
if (!SD.begin(21, SD_SCK_MHZ(10))) if (!SD.begin(21, SD_SCK_MHZ(10)))
SD.initErrorHalt(); SD.initErrorHalt();
#elif !defined(BUILD_FOR_RP2040) #elif !defined(BUILD_FOR_RP2040)
if (!SD.begin(SS, SD_SCK_MHZ(15))) if (!SD.begin(SS, SD_SCK_MHZ(15))) {
SD.initErrorHalt(); auto err = SD.sdErrorCode();
if (err)
c->debug("SDerror: 0x%x, data: 0x%x", err, SD.sdErrorData());
else
c->debug("Failed to initialize SD card");
return { };
}
#endif #endif
for(;;) { for(;;) {
@ -425,17 +433,14 @@ void set_hostname()
void configure_network(console *const c) void configure_network(console *const c)
{ {
WiFi.persistent(true); WiFi.persistent(true);
WiFi.setAutoReconnect(true); WiFi.setAutoReconnect(true);
WiFi.mode(WIFI_STA); WiFi.mode(WIFI_STA);
c->put_string_lf("Scanning for wireless networks..."); c->put_string_lf("Scanning for wireless networks...");
int n_ssids = WiFi.scanNetworks(); int n_ssids = WiFi.scanNetworks();
c->put_string_lf("Wireless networks:"); c->put_string_lf("Wireless networks:");
for(int i=0; i<n_ssids; i++) for(int i=0; i<n_ssids; i++)
c->put_string_lf(format("\t%s", WiFi.SSID(i).c_str())); c->put_string_lf(format("\t%s", WiFi.SSID(i).c_str()));
@ -444,7 +449,6 @@ void configure_network(console *const c)
std::string wifi_ap = c->read_line("Enter SSID[|PSK]: "); std::string wifi_ap = c->read_line("Enter SSID[|PSK]: ");
auto parts = split(wifi_ap, "|"); auto parts = split(wifi_ap, "|");
if (parts.size() > 2) { if (parts.size() > 2) {
c->put_string_lf("Invalid SSID/PSK: should not contain '|'"); c->put_string_lf("Invalid SSID/PSK: should not contain '|'");
return; return;