mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-18 10:59:45 +00:00
move embedded tutorials out of protocol tree
This commit is contained in:
1 parent
338756d0b0
commit
8fc5651044
287 files changed
+720
-267
No files matched your search
@@ -0,0 +1,94 @@
|
||||
#include "main.h"
|
||||
|
||||
static void cli_wifi(const char *ssid, const char *pass) {
|
||||
if (wifi_init(ssid, pass)) {
|
||||
mg_file_printf(&mg_fs_posix, WIFI_FILE, "{%m:%m,%m:%m}\n", mg_print_esc, 0,
|
||||
"ssid", mg_print_esc, 0, ssid, mg_print_esc, 0, "pass",
|
||||
mg_print_esc, 0, pass);
|
||||
MG_INFO(("Reboot now"));
|
||||
}
|
||||
}
|
||||
|
||||
static void cli_ls(void) {
|
||||
DIR *dirp = opendir(FS_ROOT);
|
||||
struct dirent *dp;
|
||||
if (dirp == NULL) {
|
||||
MG_ERROR(("Cannot open FS: %d", errno));
|
||||
} else {
|
||||
while ((dp = readdir(dirp)) != NULL) {
|
||||
/* Do not show current and parent dirs */
|
||||
if (strcmp((const char *) dp->d_name, ".") == 0 ||
|
||||
strcmp((const char *) dp->d_name, "..") == 0) {
|
||||
continue;
|
||||
} else {
|
||||
printf("%s\n", dp->d_name);
|
||||
}
|
||||
}
|
||||
closedir(dirp);
|
||||
}
|
||||
}
|
||||
|
||||
static void cli_cat(const char *fname) {
|
||||
char path[MG_PATH_MAX];
|
||||
snprintf(path, sizeof(path), "%s/%s", FS_ROOT, fname);
|
||||
FILE *fp = fopen(path, "r");
|
||||
if (fp != NULL) {
|
||||
int ch;
|
||||
while ((ch = fgetc(fp)) != EOF) putchar(ch);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
static void cli_rm(const char *fname) {
|
||||
char path[100];
|
||||
snprintf(path, sizeof(path), "%s/%s", FS_ROOT, fname);
|
||||
remove(path);
|
||||
}
|
||||
|
||||
static struct mg_iobuf in;
|
||||
|
||||
void cli(uint8_t input_byte) {
|
||||
if (input_byte == 0 || input_byte == 0xff) return;
|
||||
if (in.len >= 128) in.len = 0;
|
||||
mg_iobuf_add(&in, in.len, &input_byte, sizeof(input_byte));
|
||||
|
||||
if (input_byte == '\n') {
|
||||
const char *arrow = "---";
|
||||
char buf0[10], buf1[50], buf2[250];
|
||||
|
||||
in.buf[in.len] = '\0';
|
||||
buf0[0] = buf1[0] = buf2[0] = '\0';
|
||||
sscanf((char *) in.buf, "%9s %49s %249[^\r\n]", buf0, buf1, buf2);
|
||||
|
||||
printf("%s CLI command: '%s'\n", arrow, buf0);
|
||||
if (strcmp(buf0, "reboot") == 0) {
|
||||
esp_restart();
|
||||
} else if (strcmp(buf0, "ls") == 0) {
|
||||
cli_ls();
|
||||
} else if (strcmp(buf0, "cat") == 0) {
|
||||
cli_cat(buf1);
|
||||
} else if (strcmp(buf0, "rm") == 0) {
|
||||
cli_rm(buf1);
|
||||
} else if (strcmp(buf0, "reboot") == 0) {
|
||||
esp_restart();
|
||||
} else if (strcmp(buf0, "ll") == 0) {
|
||||
mg_log_set(atoi(buf1));
|
||||
} else if (strcmp(buf0, "wifi") == 0) {
|
||||
cli_wifi(buf1, buf2);
|
||||
} else {
|
||||
printf("%s %s\n", arrow, "Unknown command. Usage:");
|
||||
printf("%s %s\n", arrow, " set NAME VALUE");
|
||||
printf("%s %s\n", arrow, " rm FILENAME");
|
||||
printf("%s %s\n", arrow, " cat FILENAME");
|
||||
printf("%s %s\n", arrow, " ls");
|
||||
printf("%s %s\n", arrow, " reboot");
|
||||
printf("%s %s\n", arrow, " wifi WIFI_NET WIFI_PASS");
|
||||
}
|
||||
printf("%s %s\n", arrow, "CLI output end");
|
||||
in.len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void cli_init(void) {
|
||||
mg_iobuf_init(&in, 0, 32);
|
||||
}
|
||||
Reference in new issue
Block a user