mirror of
https://github.com/jeelabs/esp-link.git
synced 2026-03-14 04:56:57 +01:00
Fixed whitespace
This commit is contained in:
@@ -18,17 +18,17 @@ Some random cgi routines.
|
||||
#include "cgi.h"
|
||||
|
||||
void noCacheHeaders(HttpdConnData *connData, int code) {
|
||||
httpdStartResponse(connData, code);
|
||||
httpdHeader(connData, "Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
httpdHeader(connData, "Pragma", "no-cache");
|
||||
httpdHeader(connData, "Expires", "0");
|
||||
httpdStartResponse(connData, code);
|
||||
httpdHeader(connData, "Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
httpdHeader(connData, "Pragma", "no-cache");
|
||||
httpdHeader(connData, "Expires", "0");
|
||||
}
|
||||
|
||||
void ICACHE_FLASH_ATTR
|
||||
jsonHeader(HttpdConnData *connData, int code) {
|
||||
noCacheHeaders(connData, code);
|
||||
httpdHeader(connData, "Content-Type", "application/json");
|
||||
httpdEndHeaders(connData);
|
||||
httpdHeader(connData, "Content-Type", "application/json");
|
||||
httpdEndHeaders(connData);
|
||||
}
|
||||
|
||||
void ICACHE_FLASH_ATTR
|
||||
@@ -119,43 +119,43 @@ UTILS_StrToIP(const char* str, void *ip){
|
||||
// Handle system information variables and print their value, returns the number of
|
||||
// characters appended to buff
|
||||
int ICACHE_FLASH_ATTR printGlobalInfo(char *buff, int buflen, char *token) {
|
||||
if (TOKEN("si_chip_id")) {
|
||||
return os_sprintf(buff, "0x%x", system_get_chip_id());
|
||||
} else if (TOKEN("si_freeheap")) {
|
||||
return os_sprintf(buff, "%dKB", system_get_free_heap_size()/1024);
|
||||
} else if (TOKEN("si_uptime")) {
|
||||
uint32 t = system_get_time() / 1000000; // in seconds
|
||||
return os_sprintf(buff, "%dd%dh%dm%ds", t/(24*3600), (t/(3600))%24, (t/60)%60, t%60);
|
||||
} else if (TOKEN("si_boot_version")) {
|
||||
return os_sprintf(buff, "%d", system_get_boot_version());
|
||||
} else if (TOKEN("si_boot_address")) {
|
||||
return os_sprintf(buff, "0x%x", system_get_userbin_addr());
|
||||
} else if (TOKEN("si_cpu_freq")) {
|
||||
return os_sprintf(buff, "%dMhz", system_get_cpu_freq());
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
if (TOKEN("si_chip_id")) {
|
||||
return os_sprintf(buff, "0x%x", system_get_chip_id());
|
||||
} else if (TOKEN("si_freeheap")) {
|
||||
return os_sprintf(buff, "%dKB", system_get_free_heap_size()/1024);
|
||||
} else if (TOKEN("si_uptime")) {
|
||||
uint32 t = system_get_time() / 1000000; // in seconds
|
||||
return os_sprintf(buff, "%dd%dh%dm%ds", t/(24*3600), (t/(3600))%24, (t/60)%60, t%60);
|
||||
} else if (TOKEN("si_boot_version")) {
|
||||
return os_sprintf(buff, "%d", system_get_boot_version());
|
||||
} else if (TOKEN("si_boot_address")) {
|
||||
return os_sprintf(buff, "0x%x", system_get_userbin_addr());
|
||||
} else if (TOKEN("si_cpu_freq")) {
|
||||
return os_sprintf(buff, "%dMhz", system_get_cpu_freq());
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
extern char *esp_link_version; // in user_main.c
|
||||
|
||||
int ICACHE_FLASH_ATTR cgiMenu(HttpdConnData *connData) {
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
char buff[1024];
|
||||
// don't use jsonHeader so the response does get cached
|
||||
httpdStartResponse(connData, 200);
|
||||
httpdHeader(connData, "Cache-Control", "max-age=3600, must-revalidate");
|
||||
httpdHeader(connData, "Content-Type", "application/json");
|
||||
httpdEndHeaders(connData);
|
||||
// construct json response
|
||||
os_sprintf(buff,
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
char buff[1024];
|
||||
// don't use jsonHeader so the response does get cached
|
||||
httpdStartResponse(connData, 200);
|
||||
httpdHeader(connData, "Cache-Control", "max-age=3600, must-revalidate");
|
||||
httpdHeader(connData, "Content-Type", "application/json");
|
||||
httpdEndHeaders(connData);
|
||||
// construct json response
|
||||
os_sprintf(buff,
|
||||
"{\"menu\": [\"Home\", \"/home.html\", "
|
||||
"\"Wifi\", \"/wifi/wifi.html\","
|
||||
"\"\xC2\xB5" "C Console\", \"/console.html\", "
|
||||
"\"REST/MQTT\", \"/mqtt.html\","
|
||||
"\"Debug log\", \"/log.html\" ],\n"
|
||||
" \"version\": \"%s\" }", esp_link_version);
|
||||
httpdSend(connData, buff, -1);
|
||||
return HTTPD_CGI_DONE;
|
||||
" \"version\": \"%s\" }", esp_link_version);
|
||||
httpdSend(connData, buff, -1);
|
||||
return HTTPD_CGI_DONE;
|
||||
}
|
||||
|
||||
202
esp-link/log.c
202
esp-link/log.c
@@ -22,139 +22,139 @@ static bool log_newline; // at start of a new line
|
||||
// when we connect to wifi AP. Here this is gated by the flash setting
|
||||
void ICACHE_FLASH_ATTR
|
||||
log_uart(bool enable) {
|
||||
if (!enable && !log_no_uart && flashConfig.log_mode != LOG_MODE_ON) {
|
||||
// we're asked to turn uart off, and uart is on, and the flash setting isn't always-on
|
||||
if (!enable && !log_no_uart && flashConfig.log_mode != LOG_MODE_ON) {
|
||||
// we're asked to turn uart off, and uart is on, and the flash setting isn't always-on
|
||||
#if 1
|
||||
#ifdef LOG_DBG
|
||||
os_printf("Turning OFF uart log\n");
|
||||
os_printf("Turning OFF uart log\n");
|
||||
#endif
|
||||
os_delay_us(4*1000L); // time for uart to flush
|
||||
log_no_uart = !enable;
|
||||
os_delay_us(4*1000L); // time for uart to flush
|
||||
log_no_uart = !enable;
|
||||
#endif
|
||||
} else if (enable && log_no_uart && flashConfig.log_mode != LOG_MODE_OFF) {
|
||||
// we're asked to turn uart on, and uart is off, and the flash setting isn't always-off
|
||||
log_no_uart = !enable;
|
||||
} else if (enable && log_no_uart && flashConfig.log_mode != LOG_MODE_OFF) {
|
||||
// we're asked to turn uart on, and uart is off, and the flash setting isn't always-off
|
||||
log_no_uart = !enable;
|
||||
#ifdef LOG_DBG
|
||||
os_printf("Turning ON uart log\n");
|
||||
os_printf("Turning ON uart log\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void ICACHE_FLASH_ATTR
|
||||
log_write(char c) {
|
||||
log_buf[log_wr] = c;
|
||||
log_wr = (log_wr+1) % BUF_MAX;
|
||||
if (log_wr == log_rd) {
|
||||
log_rd = (log_rd+1) % BUF_MAX; // full, eat first char
|
||||
log_pos++;
|
||||
}
|
||||
log_buf[log_wr] = c;
|
||||
log_wr = (log_wr+1) % BUF_MAX;
|
||||
if (log_wr == log_rd) {
|
||||
log_rd = (log_rd+1) % BUF_MAX; // full, eat first char
|
||||
log_pos++;
|
||||
}
|
||||
}
|
||||
|
||||
#if 0
|
||||
static char ICACHE_FLASH_ATTR
|
||||
log_read(void) {
|
||||
char c = 0;
|
||||
if (log_rd != log_wr) {
|
||||
c = log_buf[log_rd];
|
||||
log_rd = (log_rd+1) % BUF_MAX;
|
||||
}
|
||||
return c;
|
||||
char c = 0;
|
||||
if (log_rd != log_wr) {
|
||||
c = log_buf[log_rd];
|
||||
log_rd = (log_rd+1) % BUF_MAX;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void ICACHE_FLASH_ATTR
|
||||
log_write_char(char c) {
|
||||
// Uart output unless disabled
|
||||
if (!log_no_uart) {
|
||||
if (log_newline) {
|
||||
char buff[16];
|
||||
int l = os_sprintf(buff, "%6d> ", (system_get_time()/1000)%1000000);
|
||||
for (int i=0; i<l; i++)
|
||||
uart0_write_char(buff[i]);
|
||||
log_newline = false;
|
||||
}
|
||||
uart0_write_char(c);
|
||||
if (c == '\n') {
|
||||
log_newline = true;
|
||||
uart0_write_char('\r');
|
||||
}
|
||||
}
|
||||
// Store in log buffer
|
||||
if (c == '\n') log_write('\r');
|
||||
log_write(c);
|
||||
// Uart output unless disabled
|
||||
if (!log_no_uart) {
|
||||
if (log_newline) {
|
||||
char buff[16];
|
||||
int l = os_sprintf(buff, "%6d> ", (system_get_time()/1000)%1000000);
|
||||
for (int i=0; i<l; i++)
|
||||
uart0_write_char(buff[i]);
|
||||
log_newline = false;
|
||||
}
|
||||
uart0_write_char(c);
|
||||
if (c == '\n') {
|
||||
log_newline = true;
|
||||
uart0_write_char('\r');
|
||||
}
|
||||
}
|
||||
// Store in log buffer
|
||||
if (c == '\n') log_write('\r');
|
||||
log_write(c);
|
||||
}
|
||||
|
||||
int ICACHE_FLASH_ATTR
|
||||
ajaxLog(HttpdConnData *connData) {
|
||||
char buff[2048];
|
||||
int len; // length of text in buff
|
||||
int log_len = (log_wr+BUF_MAX-log_rd) % BUF_MAX; // num chars in log_buf
|
||||
int start = 0; // offset onto log_wr to start sending out chars
|
||||
char buff[2048];
|
||||
int len; // length of text in buff
|
||||
int log_len = (log_wr+BUF_MAX-log_rd) % BUF_MAX; // num chars in log_buf
|
||||
int start = 0; // offset onto log_wr to start sending out chars
|
||||
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
jsonHeader(connData, 200);
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
jsonHeader(connData, 200);
|
||||
|
||||
// figure out where to start in buffer based on URI param
|
||||
len = httpdFindArg(connData->getArgs, "start", buff, sizeof(buff));
|
||||
if (len > 0) {
|
||||
start = atoi(buff);
|
||||
if (start < log_pos) {
|
||||
start = 0;
|
||||
} else if (start >= log_pos+log_len) {
|
||||
start = log_len;
|
||||
} else {
|
||||
start = start - log_pos;
|
||||
}
|
||||
}
|
||||
// figure out where to start in buffer based on URI param
|
||||
len = httpdFindArg(connData->getArgs, "start", buff, sizeof(buff));
|
||||
if (len > 0) {
|
||||
start = atoi(buff);
|
||||
if (start < log_pos) {
|
||||
start = 0;
|
||||
} else if (start >= log_pos+log_len) {
|
||||
start = log_len;
|
||||
} else {
|
||||
start = start - log_pos;
|
||||
}
|
||||
}
|
||||
|
||||
// start outputting
|
||||
len = os_sprintf(buff, "{\"len\":%d, \"start\":%d, \"text\": \"",
|
||||
log_len-start, log_pos+start);
|
||||
// start outputting
|
||||
len = os_sprintf(buff, "{\"len\":%d, \"start\":%d, \"text\": \"",
|
||||
log_len-start, log_pos+start);
|
||||
|
||||
int rd = (log_rd+start) % BUF_MAX;
|
||||
while (len < 2040 && rd != log_wr) {
|
||||
uint8_t c = log_buf[rd];
|
||||
if (c == '\\' || c == '"') {
|
||||
buff[len++] = '\\';
|
||||
buff[len++] = c;
|
||||
} else if (c < ' ') {
|
||||
len += os_sprintf(buff+len, "\\u%04x", c);
|
||||
} else {
|
||||
buff[len++] = c;
|
||||
}
|
||||
rd = (rd + 1) % BUF_MAX;
|
||||
}
|
||||
os_strcpy(buff+len, "\"}"); len+=2;
|
||||
httpdSend(connData, buff, len);
|
||||
return HTTPD_CGI_DONE;
|
||||
int rd = (log_rd+start) % BUF_MAX;
|
||||
while (len < 2040 && rd != log_wr) {
|
||||
uint8_t c = log_buf[rd];
|
||||
if (c == '\\' || c == '"') {
|
||||
buff[len++] = '\\';
|
||||
buff[len++] = c;
|
||||
} else if (c < ' ') {
|
||||
len += os_sprintf(buff+len, "\\u%04x", c);
|
||||
} else {
|
||||
buff[len++] = c;
|
||||
}
|
||||
rd = (rd + 1) % BUF_MAX;
|
||||
}
|
||||
os_strcpy(buff+len, "\"}"); len+=2;
|
||||
httpdSend(connData, buff, len);
|
||||
return HTTPD_CGI_DONE;
|
||||
}
|
||||
|
||||
static char *dbg_mode[] = { "auto", "off", "on" };
|
||||
|
||||
int ICACHE_FLASH_ATTR
|
||||
ajaxLogDbg(HttpdConnData *connData) {
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
char buff[512];
|
||||
int len, status = 400;
|
||||
len = httpdFindArg(connData->getArgs, "mode", buff, sizeof(buff));
|
||||
if (len > 0) {
|
||||
int8_t mode = -1;
|
||||
if (os_strcmp(buff, "auto") == 0) mode = LOG_MODE_AUTO;
|
||||
if (os_strcmp(buff, "off") == 0) mode = LOG_MODE_OFF;
|
||||
if (os_strcmp(buff, "on") == 0) mode = LOG_MODE_ON;
|
||||
if (mode >= 0) {
|
||||
flashConfig.log_mode = mode;
|
||||
if (mode != LOG_MODE_AUTO) log_uart(mode == LOG_MODE_ON);
|
||||
status = configSave() ? 200 : 400;
|
||||
}
|
||||
} else if (connData->requestType == HTTPD_METHOD_GET) {
|
||||
status = 200;
|
||||
}
|
||||
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
||||
char buff[512];
|
||||
int len, status = 400;
|
||||
len = httpdFindArg(connData->getArgs, "mode", buff, sizeof(buff));
|
||||
if (len > 0) {
|
||||
int8_t mode = -1;
|
||||
if (os_strcmp(buff, "auto") == 0) mode = LOG_MODE_AUTO;
|
||||
if (os_strcmp(buff, "off") == 0) mode = LOG_MODE_OFF;
|
||||
if (os_strcmp(buff, "on") == 0) mode = LOG_MODE_ON;
|
||||
if (mode >= 0) {
|
||||
flashConfig.log_mode = mode;
|
||||
if (mode != LOG_MODE_AUTO) log_uart(mode == LOG_MODE_ON);
|
||||
status = configSave() ? 200 : 400;
|
||||
}
|
||||
} else if (connData->requestType == HTTPD_METHOD_GET) {
|
||||
status = 200;
|
||||
}
|
||||
|
||||
jsonHeader(connData, status);
|
||||
os_sprintf(buff, "{\"mode\": \"%s\"}", dbg_mode[flashConfig.log_mode]);
|
||||
httpdSend(connData, buff, -1);
|
||||
return HTTPD_CGI_DONE;
|
||||
jsonHeader(connData, status);
|
||||
os_sprintf(buff, "{\"mode\": \"%s\"}", dbg_mode[flashConfig.log_mode]);
|
||||
httpdSend(connData, buff, -1);
|
||||
return HTTPD_CGI_DONE;
|
||||
}
|
||||
|
||||
void ICACHE_FLASH_ATTR dumpMem(void *addr, int len) {
|
||||
@@ -172,9 +172,9 @@ void ICACHE_FLASH_ATTR dumpMem(void *addr, int len) {
|
||||
}
|
||||
|
||||
void ICACHE_FLASH_ATTR logInit() {
|
||||
log_no_uart = flashConfig.log_mode == LOG_MODE_OFF; // ON unless set to always-off
|
||||
log_wr = 0;
|
||||
log_rd = 0;
|
||||
log_no_uart = flashConfig.log_mode == LOG_MODE_OFF; // ON unless set to always-off
|
||||
log_wr = 0;
|
||||
log_rd = 0;
|
||||
os_install_putc1((void *)log_write_char);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user