Fix canal parsing: replace sscanf with strchr
This commit is contained in:
27
src/main.cpp
27
src/main.cpp
@@ -212,18 +212,21 @@ public:
|
||||
for (int j = 0; j < 20; j++) { sum += radio_driver.getCurrentRSSI(); delay(50); }
|
||||
char r[32]; snprintf(r, sizeof(r), "noise:%.0fdBm", sum / 20); defer_response(r);
|
||||
} else if (strncmp(cmd, "canal", 5) == 0) {
|
||||
const char* rest = cmd + 5; while (*rest == ' ') rest++;
|
||||
char cname[32], cpass[32];
|
||||
int n = sscanf(rest, "%31s %31s", cname, cpass);
|
||||
if (n == 2) {
|
||||
strncpy(g_channel_name, cname, sizeof(g_channel_name) - 1);
|
||||
strncpy(g_channel_pass, cpass, sizeof(g_channel_pass) - 1);
|
||||
saveChannelConfig();
|
||||
char r[64]; snprintf(r, sizeof(r), "canal %s %s ok", cname, cpass);
|
||||
send_text(r);
|
||||
delay(100);
|
||||
NVIC_SystemReset();
|
||||
} else defer_response("canal name password");
|
||||
char buf[128]; strncpy(buf, cmd, sizeof(buf) - 1); buf[sizeof(buf) - 1] = 0;
|
||||
char* rest = buf + 5; while (*rest == ' ') rest++;
|
||||
char* cname = rest;
|
||||
char* space = strchr(cname, ' ');
|
||||
if (!space) { defer_response("need name and password"); return; }
|
||||
*space = 0;
|
||||
char* cpass = space + 1;
|
||||
if (*cpass == 0) { defer_response("need name and password"); return; }
|
||||
strncpy(g_channel_name, cname, sizeof(g_channel_name) - 1);
|
||||
strncpy(g_channel_pass, cpass, sizeof(g_channel_pass) - 1);
|
||||
saveChannelConfig();
|
||||
char r[64]; snprintf(r, sizeof(r), "canal %s %s ok", cname, cpass);
|
||||
send_text(r);
|
||||
for (int i = 0; i < 5; i++) { digitalWrite(PIN_LED_STATUS, HIGH); delay(100); digitalWrite(PIN_LED_STATUS, LOW); delay(100); }
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user