WiFi sections hiding, STA auto enable on scan click, Terminal colors preview, better explanations, CONFIGURABLE UART
parent
e42407ad62
commit
76167b8014
File diff suppressed because one or more lines are too long
Binary file not shown.
@ -1,7 +1,8 @@ |
|||||||
// Generated from PHP locale file
|
// Generated from PHP locale file
|
||||||
var _tr = { |
var _tr = { |
||||||
"wifi.connected_ip_is": "Connected, IP is ", |
"wifi.connected_ip_is": "Connected, IP is ", |
||||||
"wifi.not_conn": "Not connected." |
"wifi.not_conn": "Not connected.", |
||||||
|
"wifi.enter_passwd": "Enter password for \":ssid:\"" |
||||||
}; |
}; |
||||||
|
|
||||||
function tr(key) { return _tr[key] || '?'+key+'?'; } |
function tr(key) { return _tr[key] || '?'+key+'?'; } |
||||||
|
@ -1,34 +0,0 @@ |
|||||||
<div class="Box"> |
|
||||||
<div class="Row explain"> |
|
||||||
<?= tr('admin.explain') ?> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="Row buttons"> |
|
||||||
<a class="button icn-restore" |
|
||||||
onclick="return confirm('<?= tr('admin.confirm_restore') ?>');"
|
|
||||||
href="<?= e(url('restore_defaults')) ?>"
|
|
||||||
> |
|
||||||
<?= tr('admin.restore_defaults') ?> |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="Row buttons"> |
|
||||||
<a onclick="writeDefaults(); return false;" href="#"><?= tr('admin.write_defaults') ?></a>
|
|
||||||
</div> |
|
||||||
|
|
||||||
<div class="Row buttons"> |
|
||||||
<a onclick="return confirm('<?= tr('admin.confirm_restore_hard') ?>');"
|
|
||||||
href="<?= e(url('restore_hard')) ?>"
|
|
||||||
> |
|
||||||
<?= tr('admin.restore_hard') ?> |
|
||||||
</a> |
|
||||||
</div> |
|
||||||
</div> |
|
||||||
|
|
||||||
<script> |
|
||||||
function writeDefaults() { |
|
||||||
var pw = prompt('<?= tr('admin.confirm_store_defaults') ?>');
|
|
||||||
if (!pw) return; |
|
||||||
location.href = <?=json_encode(url('write_defaults')) ?> + '?pw=' + pw;
|
|
||||||
} |
|
||||||
</script> |
|
@ -0,0 +1,90 @@ |
|||||||
|
<div class="Box str mobcol"> |
||||||
|
<h2 tabindex=0><?= tr('system.save_restore') ?></h2>
|
||||||
|
|
||||||
|
<div class="Row explain nomargintop"> |
||||||
|
<?= tr('system.explain_persist') ?> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row buttons2"> |
||||||
|
<a class="button icn-restore" |
||||||
|
onclick="return confirm('<?= tr('system.confirm_restore') ?>');"
|
||||||
|
href="<?= e(url('restore_defaults')) ?>">
|
||||||
|
<?= tr('system.restore_defaults') ?> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row buttons2"> |
||||||
|
<a onclick="writeDefaults(); return false;" href="#"><?= tr('system.write_defaults') ?></a>
|
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row buttons2"> |
||||||
|
<a onclick="return confirm('<?= tr('system.confirm_restore_hard') ?>');"
|
||||||
|
href="<?= e(url('restore_hard')) ?>">
|
||||||
|
<?= tr('system.restore_hard') ?> |
||||||
|
</a> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
|
||||||
|
|
||||||
|
<form class="Box str mobcol" action="<?= e(url('system_set')) ?>" method="GET" id="form-1">
|
||||||
|
<h2 tabindex=0><?= tr('system.uart') ?></h2>
|
||||||
|
|
||||||
|
<div class="Row explain"> |
||||||
|
<?= tr('system.explain_uart') ?> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row"> |
||||||
|
<label for="uart_baud"><?= tr('uart.baud') ?><span class="mq-phone"> (bps)</span></label>
|
||||||
|
<select name="uart_baud" id="uart_baud" class="short"> |
||||||
|
<?php foreach([ |
||||||
|
300, 600, 1200, 2400, 4800, 9600, 19200, 38400, |
||||||
|
57600, 74880, 115200, 230400, 460800, 921600, 1843200, 3686400, |
||||||
|
] as $b): |
||||||
|
?><option value="<?=$b?>"><?= number_format($b, 0, ',', '.') ?></option>
|
||||||
|
<?php endforeach; ?> |
||||||
|
</select> |
||||||
|
<span class="mq-no-phone"> bps</span> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row"> |
||||||
|
<label for="uart_parity"><?= tr('uart.parity') ?></label>
|
||||||
|
<select name="uart_parity" id="uart_parity" class="short"> |
||||||
|
<?php foreach([ |
||||||
|
2 => tr('uart.parity.none'), |
||||||
|
1 => tr('uart.parity.odd'), |
||||||
|
0 => tr('uart.parity.even'), |
||||||
|
] as $k => $label): |
||||||
|
?><option value="<?=$k?>"><?=$label?></option>
|
||||||
|
<?php endforeach; ?> |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row"> |
||||||
|
<label for="uart_stopbits"><?= tr('uart.stop_bits') ?></label>
|
||||||
|
<select name="uart_stopbits" id="uart_stopbits" class="short"> |
||||||
|
<?php foreach([ |
||||||
|
1 => tr('uart.stop_bits.one'), |
||||||
|
2 => tr('uart.stop_bits.one_and_half'), |
||||||
|
3 => tr('uart.stop_bits.two'), |
||||||
|
] as $k => $label): |
||||||
|
?><option value="<?=$k?>"><?=$label?></option>
|
||||||
|
<?php endforeach; ?> |
||||||
|
</select> |
||||||
|
</div> |
||||||
|
|
||||||
|
<div class="Row buttons"> |
||||||
|
<a class="button icn-ok" href="#" onclick="qs('#form-1').submit()"><?= tr('apply') ?></a>
|
||||||
|
</div> |
||||||
|
</form> |
||||||
|
|
||||||
|
<script> |
||||||
|
function writeDefaults() { |
||||||
|
var pw = prompt('<?= tr('system.confirm_store_defaults') ?>');
|
||||||
|
if (!pw) return; |
||||||
|
location.href = <?=json_encode(url('write_defaults')) ?> + '?pw=' + pw;
|
||||||
|
} |
||||||
|
|
||||||
|
$('#uart_baud').val(%uart_baud%); |
||||||
|
$('#uart_parity').val(%uart_parity%); |
||||||
|
$('#uart_stopbits').val(%uart_stopbits%); |
||||||
|
</script> |
File diff suppressed because one or more lines are too long
@ -1,9 +0,0 @@ |
|||||||
#ifndef CGIAPPCFG_H |
|
||||||
#define CGIAPPCFG_H |
|
||||||
|
|
||||||
#include "httpd.h" |
|
||||||
|
|
||||||
httpd_cgi_state cgiAppCfgSetParams(HttpdConnData *connData); |
|
||||||
httpd_cgi_state tplAppCfg(HttpdConnData *connData, char *token, void **arg); |
|
||||||
|
|
||||||
#endif |
|
@ -1,20 +0,0 @@ |
|||||||
#include <esp8266.h> |
|
||||||
#include <httpd.h> |
|
||||||
|
|
||||||
#include "cgi_ping.h" |
|
||||||
|
|
||||||
httpd_cgi_state ICACHE_FLASH_ATTR cgiPing(HttpdConnData *connData) |
|
||||||
{ |
|
||||||
if (connData->conn==NULL) { |
|
||||||
//Connection aborted. Clean up.
|
|
||||||
return HTTPD_CGI_DONE; |
|
||||||
} |
|
||||||
|
|
||||||
httpdStartResponse(connData, 200); |
|
||||||
httpdHeader(connData, "Content-Type", "text/plain"); |
|
||||||
httpdEndHeaders(connData); |
|
||||||
|
|
||||||
httpdSend(connData, "pong\n", -1); |
|
||||||
|
|
||||||
return HTTPD_CGI_DONE; |
|
||||||
} |
|
@ -1,11 +0,0 @@ |
|||||||
#ifndef CGI_PING_H |
|
||||||
#define CGI_PING_H |
|
||||||
|
|
||||||
#include <esp8266.h> |
|
||||||
#include <httpd.h> |
|
||||||
|
|
||||||
// this is used by the UI to check if server is already restarted and working again.
|
|
||||||
|
|
||||||
httpd_cgi_state cgiPing(HttpdConnData *connData); |
|
||||||
|
|
||||||
#endif // CGI_PING_H
|
|
@ -1,31 +0,0 @@ |
|||||||
#include <esp8266.h> |
|
||||||
#include <httpd.h> |
|
||||||
|
|
||||||
#include "cgi_reset.h" |
|
||||||
|
|
||||||
static ETSTimer tmr; |
|
||||||
|
|
||||||
static void ICACHE_FLASH_ATTR tmrCb(void *arg) |
|
||||||
{ |
|
||||||
system_restart(); |
|
||||||
} |
|
||||||
|
|
||||||
httpd_cgi_state ICACHE_FLASH_ATTR cgiResetDevice(HttpdConnData *connData) |
|
||||||
{ |
|
||||||
if (connData->conn==NULL) { |
|
||||||
//Connection aborted. Clean up.
|
|
||||||
return HTTPD_CGI_DONE; |
|
||||||
} |
|
||||||
|
|
||||||
httpdStartResponse(connData, 200); |
|
||||||
httpdHeader(connData, "Content-Type", "text/plain"); |
|
||||||
httpdEndHeaders(connData); |
|
||||||
|
|
||||||
os_timer_disarm(&tmr); |
|
||||||
os_timer_setfn(&tmr, tmrCb, NULL); |
|
||||||
os_timer_arm(&tmr, 100, false); |
|
||||||
|
|
||||||
httpdSend(connData, "system reset\n", -1); |
|
||||||
|
|
||||||
return HTTPD_CGI_DONE; |
|
||||||
} |
|
@ -1,9 +0,0 @@ |
|||||||
#ifndef CGI_RESET_H |
|
||||||
#define CGI_RESET_H |
|
||||||
|
|
||||||
#include <esp8266.h> |
|
||||||
#include <httpd.h> |
|
||||||
|
|
||||||
httpd_cgi_state cgiResetDevice(HttpdConnData *connData); |
|
||||||
|
|
||||||
#endif // CGI_RESET_H
|
|
@ -0,0 +1,164 @@ |
|||||||
|
#include <esp8266.h> |
||||||
|
#include <httpd.h> |
||||||
|
#include <helpers.h> |
||||||
|
|
||||||
|
#include "cgi_system.h" |
||||||
|
#include "persist.h" |
||||||
|
#include "syscfg.h" |
||||||
|
#include "uart_driver.h" |
||||||
|
|
||||||
|
#define SET_REDIR_SUC "/cfg/system" |
||||||
|
#define SET_REDIR_ERR SET_REDIR_SUC"?err=" |
||||||
|
|
||||||
|
static ETSTimer tmr; |
||||||
|
|
||||||
|
static void ICACHE_FLASH_ATTR tmrCb(void *arg) |
||||||
|
{ |
||||||
|
system_restart(); |
||||||
|
} |
||||||
|
|
||||||
|
httpd_cgi_state ICACHE_FLASH_ATTR cgiResetDevice(HttpdConnData *connData) |
||||||
|
{ |
||||||
|
if (connData->conn==NULL) { |
||||||
|
//Connection aborted. Clean up.
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
httpdStartResponse(connData, 200); |
||||||
|
httpdHeader(connData, "Content-Type", "text/plain"); |
||||||
|
httpdEndHeaders(connData); |
||||||
|
|
||||||
|
os_timer_disarm(&tmr); |
||||||
|
os_timer_setfn(&tmr, tmrCb, NULL); |
||||||
|
os_timer_arm(&tmr, 100, false); |
||||||
|
|
||||||
|
httpdSend(connData, "system reset\n", -1); |
||||||
|
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
httpd_cgi_state ICACHE_FLASH_ATTR cgiPing(HttpdConnData *connData) |
||||||
|
{ |
||||||
|
if (connData->conn==NULL) { |
||||||
|
//Connection aborted. Clean up.
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
httpdStartResponse(connData, 200); |
||||||
|
httpdHeader(connData, "Content-Type", "text/plain"); |
||||||
|
httpdEndHeaders(connData); |
||||||
|
|
||||||
|
httpdSend(connData, "pong\n", -1); |
||||||
|
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
/**
|
||||||
|
* Universal CGI endpoint to set Terminal params. |
||||||
|
*/ |
||||||
|
httpd_cgi_state ICACHE_FLASH_ATTR |
||||||
|
cgiSystemCfgSetParams(HttpdConnData *connData) |
||||||
|
{ |
||||||
|
char buff[50]; |
||||||
|
|
||||||
|
char redir_url_buf[300]; |
||||||
|
char *redir_url = redir_url_buf; |
||||||
|
redir_url += sprintf(redir_url, SET_REDIR_ERR); |
||||||
|
// we'll test if anything was printed by looking for \0 in failed_keys_buf
|
||||||
|
|
||||||
|
if (connData->conn == NULL) { |
||||||
|
//Connection aborted. Clean up.
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
if (GET_ARG("uart_baud")) { |
||||||
|
dbg("Baud rate: %s", buff); |
||||||
|
int baud = atoi(buff); |
||||||
|
if (baud == BIT_RATE_300 || |
||||||
|
baud == BIT_RATE_600 || |
||||||
|
baud == BIT_RATE_1200 || |
||||||
|
baud == BIT_RATE_2400 || |
||||||
|
baud == BIT_RATE_4800 || |
||||||
|
baud == BIT_RATE_9600 || |
||||||
|
baud == BIT_RATE_19200 || |
||||||
|
baud == BIT_RATE_38400 || |
||||||
|
baud == BIT_RATE_57600 || |
||||||
|
baud == BIT_RATE_74880 || |
||||||
|
baud == BIT_RATE_115200 || |
||||||
|
baud == BIT_RATE_230400 || |
||||||
|
baud == BIT_RATE_460800 || |
||||||
|
baud == BIT_RATE_921600 || |
||||||
|
baud == BIT_RATE_1843200 || |
||||||
|
baud == BIT_RATE_3686400) { |
||||||
|
sysconf->uart_baudrate = (u32) baud; |
||||||
|
} else { |
||||||
|
warn("Bad baud rate %s", buff); |
||||||
|
redir_url += sprintf(redir_url, "uart_baud,"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (GET_ARG("uart_parity")) { |
||||||
|
dbg("Parity: %s", buff); |
||||||
|
int parity = atoi(buff); |
||||||
|
if (parity >= 0 && parity <= 2) { |
||||||
|
sysconf->uart_parity = (UartParityMode) parity; |
||||||
|
} else { |
||||||
|
warn("Bad parity %s", buff); |
||||||
|
redir_url += sprintf(redir_url, "uart_parity,"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (GET_ARG("uart_stopbits")) { |
||||||
|
dbg("Stop bits: %s", buff); |
||||||
|
int stopbits = atoi(buff); |
||||||
|
if (stopbits >= 1 && stopbits <= 3) { |
||||||
|
sysconf->uart_stopbits = (UartStopBitsNum) stopbits; |
||||||
|
} else { |
||||||
|
warn("Bad stopbits %s", buff); |
||||||
|
redir_url += sprintf(redir_url, "uart_stopbits,"); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (redir_url_buf[strlen(SET_REDIR_ERR)] == 0) { |
||||||
|
// All was OK
|
||||||
|
info("Set system params - success, saving..."); |
||||||
|
|
||||||
|
sysconf_apply_settings(); |
||||||
|
persist_store(); |
||||||
|
|
||||||
|
httpdRedirect(connData, SET_REDIR_SUC); |
||||||
|
} else { |
||||||
|
warn("Some settings did not validate, asking for correction"); |
||||||
|
// Some errors, appended to the URL as ?err=
|
||||||
|
httpdRedirect(connData, redir_url_buf); |
||||||
|
} |
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
httpd_cgi_state ICACHE_FLASH_ATTR |
||||||
|
tplSystemCfg(HttpdConnData *connData, char *token, void **arg) |
||||||
|
{ |
||||||
|
#define BUFLEN 100 |
||||||
|
char buff[BUFLEN]; |
||||||
|
|
||||||
|
if (token == NULL) { |
||||||
|
// We're done
|
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
strcpy(buff, ""); // fallback
|
||||||
|
|
||||||
|
if (streq(token, "uart_baud")) { |
||||||
|
sprintf(buff, "%d", sysconf->uart_baudrate); |
||||||
|
} |
||||||
|
else if (streq(token, "uart_parity")) { |
||||||
|
sprintf(buff, "%d", sysconf->uart_parity); |
||||||
|
} |
||||||
|
else if (streq(token, "uart_stopbits")) { |
||||||
|
sprintf(buff, "%d", sysconf->uart_stopbits); |
||||||
|
} |
||||||
|
|
||||||
|
httpdSend(connData, buff, -1); |
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
@ -0,0 +1,12 @@ |
|||||||
|
#ifndef CGI_PING_H |
||||||
|
#define CGI_PING_H |
||||||
|
|
||||||
|
#include <esp8266.h> |
||||||
|
#include <httpd.h> |
||||||
|
|
||||||
|
httpd_cgi_state cgiPing(HttpdConnData *connData); |
||||||
|
httpd_cgi_state cgiResetDevice(HttpdConnData *connData); |
||||||
|
httpd_cgi_state cgiSystemCfgSetParams(HttpdConnData *connData); |
||||||
|
httpd_cgi_state tplSystemCfg(HttpdConnData *connData, char *token, void **arg); |
||||||
|
|
||||||
|
#endif // CGI_PING_H
|
@ -0,0 +1,9 @@ |
|||||||
|
#ifndef CGIAPPCFG_H |
||||||
|
#define CGIAPPCFG_H |
||||||
|
|
||||||
|
#include "httpd.h" |
||||||
|
|
||||||
|
httpd_cgi_state cgiTermCfgSetParams(HttpdConnData *connData); |
||||||
|
httpd_cgi_state tplTermCfg(HttpdConnData *connData, char *token, void **arg); |
||||||
|
|
||||||
|
#endif |
@ -0,0 +1,24 @@ |
|||||||
|
//
|
||||||
|
// Created by MightyPork on 2017/07/29.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "syscfg.h" |
||||||
|
#include "persist.h" |
||||||
|
#include "uart_driver.h" |
||||||
|
#include "serial.h" |
||||||
|
|
||||||
|
SystemConfigBundle * const sysconf = &persist.current.sysconf; |
||||||
|
|
||||||
|
void ICACHE_FLASH_ATTR |
||||||
|
sysconf_apply_settings(void) |
||||||
|
{ |
||||||
|
serialInit(); |
||||||
|
} |
||||||
|
|
||||||
|
void ICACHE_FLASH_ATTR |
||||||
|
sysconf_restore_defaults(void) |
||||||
|
{ |
||||||
|
sysconf->uart_parity = PARITY_NONE; |
||||||
|
sysconf->uart_baudrate = BIT_RATE_115200; |
||||||
|
sysconf->uart_stopbits = ONE_STOP_BIT; |
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
//
|
||||||
|
// Created by MightyPork on 2017/07/29.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef ESP_VT100_FIRMWARE_SYSCFG_H |
||||||
|
#define ESP_VT100_FIRMWARE_SYSCFG_H |
||||||
|
|
||||||
|
#include <esp8266.h> |
||||||
|
|
||||||
|
// Size designed for the wifi config structure
|
||||||
|
// Must be constant to avoid corrupting user config after upgrade
|
||||||
|
#define SYSCONF_SIZE 200 |
||||||
|
|
||||||
|
typedef struct { |
||||||
|
u32 uart_baudrate; |
||||||
|
u8 uart_parity; |
||||||
|
u8 uart_stopbits; |
||||||
|
|
||||||
|
u8 _filler[ |
||||||
|
SYSCONF_SIZE |
||||||
|
- 4 |
||||||
|
- 1 |
||||||
|
- 1 |
||||||
|
]; |
||||||
|
} SystemConfigBundle; |
||||||
|
|
||||||
|
extern SystemConfigBundle * const sysconf; |
||||||
|
|
||||||
|
void sysconf_apply_settings(void); |
||||||
|
|
||||||
|
void sysconf_restore_defaults(void); |
||||||
|
|
||||||
|
#endif //ESP_VT100_FIRMWARE_SYSCFG_H
|
Loading…
Reference in new issue