From 76167b8014e2555b43547bcb5e12dff48e964de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Hru=C5=A1ka?= Date: Sat, 29 Jul 2017 20:55:16 +0200 Subject: [PATCH] WiFi sections hiding, STA auto enable on scan click, Terminal colors preview, better explanations, CONFIGURABLE UART --- CMakeLists.txt | 13 +- html_orig/_debug_replacements.php | 10 +- html_orig/_pages.php | 14 +- html_orig/css/app.css | 41 +++-- html_orig/dump_js_lang.php | 1 + html_orig/fontello/fontello.zip | Bin 48270 -> 52542 bytes html_orig/js/app.js | 50 ++---- html_orig/jssrc/appcommon.js | 6 + html_orig/jssrc/chibi.js | 2 +- html_orig/jssrc/lang.js | 3 +- html_orig/jssrc/wifi.js | 39 +---- html_orig/lang/en.php | 97 ++++++----- html_orig/pages/cfg_admin.php | 34 ---- html_orig/pages/cfg_network.php | 29 ++-- html_orig/pages/cfg_system.php | 90 ++++++++++ html_orig/pages/{cfg_app.php => cfg_term.php} | 59 ++++--- html_orig/pages/cfg_wifi.php | 63 ++++--- html_orig/sass/_fontello.scss | 6 +- html_orig/sass/form/_form_elements.scss | 8 + html_orig/sass/form/_form_layout.scss | 11 +- html_orig/sass/layout/_box.scss | 15 +- html_orig/sass/layout/_content.scss | 10 ++ html_orig/sass/pages/_wifi.scss | 1 + include/{uart_hw.h => uart_hw.h-} | 0 user/cgi_appcfg.h | 9 - user/cgi_ping.c | 20 --- user/cgi_ping.h | 11 -- user/cgi_reset.c | 31 ---- user/cgi_reset.h | 9 - user/cgi_system.c | 164 ++++++++++++++++++ user/cgi_system.h | 12 ++ user/{cgi_appcfg.c => cgi_term_cfg.c} | 10 +- user/cgi_term_cfg.h | 9 + user/cgi_wifi.c | 11 +- user/persist.c | 18 +- user/persist.h | 18 +- user/routes.c | 18 +- user/screen.h | 30 +++- user/serial.c | 29 +++- user/serial.h | 3 + user/syscfg.c | 24 +++ user/syscfg.h | 33 ++++ user/uart_handler.c | 22 +-- user/uart_handler.h | 4 +- user/user_main.c | 20 +-- user/wifimgr.c | 2 +- user/wifimgr.h | 26 ++- 47 files changed, 737 insertions(+), 398 deletions(-) delete mode 100644 html_orig/pages/cfg_admin.php create mode 100644 html_orig/pages/cfg_system.php rename html_orig/pages/{cfg_app.php => cfg_term.php} (50%) rename include/{uart_hw.h => uart_hw.h-} (100%) delete mode 100644 user/cgi_appcfg.h delete mode 100755 user/cgi_ping.c delete mode 100755 user/cgi_ping.h delete mode 100755 user/cgi_reset.c delete mode 100755 user/cgi_reset.h create mode 100755 user/cgi_system.c create mode 100755 user/cgi_system.h rename user/{cgi_appcfg.c => cgi_term_cfg.c} (95%) create mode 100644 user/cgi_term_cfg.h create mode 100644 user/syscfg.c create mode 100644 user/syscfg.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6131385..ee97acb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,7 +86,6 @@ set(SOURCE_FILES esp_iot_sdk_v1.5.2/include/json/jsonparse.h esp_iot_sdk_v1.5.2/include/json/json.h - include/uart_hw.h include/user_config.h include/ets_sys_extra.h user/io.c @@ -97,10 +96,9 @@ set(SOURCE_FILES user/cgi_persist.h user/cgi_network.c user/cgi_network.h - user/cgi_appcfg.c - user/cgi_appcfg.h - user/cgi_ping.c - user/cgi_reset.c + user/cgi_term_cfg.c + user/cgi_term_cfg.h + user/cgi_system.c user/uart_driver.c user/uart_handler.c user/ansi_parser.c @@ -123,7 +121,10 @@ set(SOURCE_FILES user/wifimgr.c user/wifimgr.h user/persist.c - user/persist.h include/helpers.h) + user/persist.h + include/helpers.h + user/syscfg.c + user/syscfg.h) include_directories(include) include_directories(user) diff --git a/html_orig/_debug_replacements.php b/html_orig/_debug_replacements.php index e693ea1..bbaa401 100644 --- a/html_orig/_debug_replacements.php +++ b/html_orig/_debug_replacements.php @@ -21,19 +21,21 @@ return [ "screen": "70 t259" }', + '%opmode%' => '2', + '%sta_enable%' => '0', '%ap_enable%' => '1', + '%tpw%' => '60', '%ap_channel%' => '7', '%ap_ssid%' => 'ESP-123456', '%ap_password%' => 'Passw0rd!', '%ap_hidden%' => '0', + '%sta_ssid%' => 'Chlivek', '%sta_password%' => 'windows XP is The Best', '%sta_active_ip%' => '1.2.3.4', '%sta_active_ssid%' => 'Chlivek', - '%sta_enable%' => '1', - '%opmode%' => '3', '%vers_fw%' => '1.2.3', '%date%' => date('Y-m-d'), '%time%' => date('G:i'), @@ -59,4 +61,8 @@ return [ '%term_height%' => '10', '%default_bg%' => '0', '%default_fg%' => '7', + + '%uart_baud%' => 115200, + '%uart_stopbits%' => 1, + '%uart_parity%' => 2, ]; diff --git a/html_orig/_pages.php b/html_orig/_pages.php index 47ae0f2..8d99c1e 100644 --- a/html_orig/_pages.php +++ b/html_orig/_pages.php @@ -27,13 +27,15 @@ pg('wifi_scan', 'api', '', '/cfg/wifi/scan'); pg('cfg_network', 'cfg', 'network', '/cfg/network'); pg('network_set', 'api', '', '/cfg/network/set'); -pg('cfg_app', 'cfg', 'terminal', '/cfg/app'); -pg('app_set', 'api', '', '/cfg/app/set'); +pg('cfg_term', 'cfg', 'terminal', '/cfg/term'); +pg('term_set', 'api', '', '/cfg/term/set'); -pg('cfg_admin', 'cfg', 'persist', '/cfg/admin'); -pg('write_defaults', 'api', '', '/cfg/admin/write_defaults'); -pg('restore_defaults', 'api', '', '/cfg/admin/restore_defaults'); -pg('restore_hard', 'api', '', '/cfg/admin/restore_hard'); +pg('cfg_system', 'cfg', 'configure', '/cfg/system'); +pg('system_set', 'api', '', '/cfg/system/set'); + +pg('write_defaults', 'api', '', '/cfg/system/write_defaults'); +pg('restore_defaults', 'api', '', '/cfg/system/restore_defaults'); +pg('restore_hard', 'api', '', '/cfg/system/restore_hard'); pg('help', 'cfg page-help', 'help', '/help'); pg('about', 'cfg page-about', 'about', '/about'); diff --git a/html_orig/css/app.css b/html_orig/css/app.css index 67bd40a..5e352c3 100644 --- a/html_orig/css/app.css +++ b/html_orig/css/app.css @@ -311,7 +311,7 @@ th { /* Fontello data, processed by the unpack script. */ @font-face { font-family: 'fontello'; - src: url("data:application/octet-stream;base64,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") format("woff"), url("data:application/octet-stream;base64,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") format("truetype"); } + src: url("data:application/octet-stream;base64,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") format("woff"), url("data:application/octet-stream;base64,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") format("truetype"); } [class^="icn-"]::before, [class*=" icn-"]::before { font-family: "fontello"; font-style: normal; @@ -347,6 +347,9 @@ th { .icn-restore::before { content: '\267c'; } +.icn-configure::before { + content: '\2699'; } + .icn-ok::before { content: '\2714'; } @@ -539,6 +542,13 @@ ul > * { width: 160px; color: white; } +#content { + opacity: 0; + transition: opacity 0.15s ease-in; } + +#content.load { + opacity: 1; } + #loader { position: absolute; right: 1.618rem; @@ -601,10 +611,13 @@ ul > * { margin-top: 0.61805rem; } .Box .Row.explain { max-width: 600px; - margin-left: 0; } + margin-left: 0; + line-height: 1.2; } @media screen and (max-width: 544px) { .Box .Row.explain { margin-top: 60px; } } + .Box .Row.explain.nomargintop { + margin-top: 12px !important; } .Box.mobopen .Row.explain { margin-top: 12px; } @media screen and (max-width: 544px) { @@ -615,10 +628,11 @@ ul > * { .Box.mobcol h2 { position: relative; cursor: pointer; - padding-right: 1.3rem; } + padding: 2px 1.3rem 2px 5px; + margin: 0 -5px 0 -5px; } .Box.mobcol h2::after { position: absolute; - right: 0; + right: 4px; content: '▸'; top: 50%; font-size: 120%; @@ -776,6 +790,12 @@ button, input[type=submit], .button { button:focus, input[type=submit]:focus, .button:focus { outline-color: #ff0099; } +input[type="number"], input[type="password"], input[type="text"], textarea, select, label.select-wrap { + width: 250px; } + +input[type="number"], input.short, select.short { + width: 125px; } + input[type="number"], input[type="password"], input[type="text"], textarea, select { border: 0 none; border-bottom: 2px solid #2972ba; @@ -833,12 +853,6 @@ form { padding: 0; text-decoration: none; } -input[type="number"], input[type="password"], input[type="text"], textarea, select, label.select-wrap { - width: 250px; } - -input[type="number"], input.short { - width: 125px; } - .Box.errors .list { color: crimson; font-weight: bold; } @@ -861,9 +875,9 @@ input[type="number"], input.short { @media screen and (max-width: 544px) { .Row .spacer { display: none; } } - .Row.buttons { + .Row.buttons, .Row.buttons2 { margin: 16px auto; } - .Row.buttons input, .Row.buttons .button { + .Row.buttons input, .Row.buttons .button, .Row.buttons2 input, .Row.buttons2 .button { margin-right: 0.61805rem; } .Row.centered { justify-content: center; } @@ -960,7 +974,8 @@ form span.required { border-radius: 5px; padding: 0.38198rem; margin-bottom: 0.38198rem; - margin-top: 0.38198rem; } + margin-top: 0.38198rem; + font-size: 110%; } #ap-noscan { font-weight: bold; } diff --git a/html_orig/dump_js_lang.php b/html_orig/dump_js_lang.php index 41cf168..14b0db6 100755 --- a/html_orig/dump_js_lang.php +++ b/html_orig/dump_js_lang.php @@ -7,6 +7,7 @@ require_once __DIR__ . '/base.php'; $selected = [ 'wifi.connected_ip_is', 'wifi.not_conn', + 'wifi.enter_passwd', ]; $out = []; diff --git a/html_orig/fontello/fontello.zip b/html_orig/fontello/fontello.zip index 5b59d9679096e34c386e40d02656d5e6a04e756e..a9d757fc347cfaf178b559ecd260e311bc2b96a3 100644 GIT binary patch delta 50445 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

8s6&TSK1Br%h^LAJ-4dvwc(WH4Ru&PaF}A4@ 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 diff --git a/html_orig/js/app.js b/html_orig/js/app.js index 7ed55a3..0465e07 100644 --- a/html_orig/js/app.js +++ b/html_orig/js/app.js @@ -488,7 +488,7 @@ // Multiple select for (j = 0; j < value.length; j += 1) { elm[i].selected = ''; - if (elm[i].value === value[j]) { + if (elm[i].value === ""+value[j]) { elm[i].selected = 'selected'; break; } @@ -1007,10 +1007,17 @@ $.ready(function () { $._loader = function(vis) { $('#loader').toggleClass('show', vis); }; + +$.ready(function() { + setTimeout(function() { + $('#content').addClass('load'); + }, 1); +}); // Generated from PHP locale file var _tr = { "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+'?'; } @@ -1039,21 +1046,6 @@ function tr(key) { return _tr[key] || '?'+key+'?'; } $('#sta-nw .ip').html(ip.length>0 ? tr('wifi.connected_ip_is')+ip : tr('wifi.not_conn')); } - function submitPskModal(e, open) { - var passwd = $('#conn-passwd').val(); - var ssid = $('#conn-ssid').val(); - - if (open || passwd.length) { - $('#sta_password').val(passwd); - $('#sta_ssid').val(ssid); - selectSta(ssid, passwd, ''); - } - - if (e) e.preventDefault(); - Modal.hide('#psk-modal'); - return false; - } - /** Update display for received response */ function onScan(resp, status) { //var ap_json = { @@ -1123,19 +1115,18 @@ function tr(key) { return _tr[key] || '?'+key+'?'; } $item.on('click', function () { var $th = $(this); - var ssid = $th.data('ssid'); - - $('#conn-ssid').val(ssid); - $('#conn-passwd').val(''); + var conn_ssid = $th.data('ssid'); + var conn_pass = ''; if (+$th.data('pwd')) { // this AP needs a password - Modal.show('#psk-modal'); - $('#conn-passwd')[0].focus(); - } else { - //Modal.show('#reset-modal'); - submitPskModal(null, true); + conn_pass = prompt(tr("wifi.enter_passwd").replace(":ssid:", conn_ssid)); + if (!conn_pass) return; } + + $('#sta_password').val(conn_pass); + $('#sta_ssid').val(conn_ssid); + selectSta(conn_ssid, conn_pass, ''); }); @@ -1148,6 +1139,7 @@ function tr(key) { return _tr[key] || '?'+key+'?'; } $('#ap-loader').removeClass('hidden'); $('#ap-scan').addClass('hidden'); $('#ap-loader .anim-dots').html('.'); + scanAPs(); } @@ -1162,12 +1154,6 @@ function tr(key) { return _tr[key] || '?'+key+'?'; } /** Set up the WiFi page */ function wifiInit(cfg) { - // Hide what should be hidden in this mode - cfg.mode = +cfg.mode; - - $('#ap-noscan').toggleClass('hidden', cfg.mode != 2); - $('#ap-scan').toggleClass('hidden', cfg.mode == 2); - // Update slider value displays $('.Row.range').forEach(function(x) { var inp = x.querySelector('input'); diff --git a/html_orig/jssrc/appcommon.js b/html_orig/jssrc/appcommon.js index 0e5616b..4344bcd 100644 --- a/html_orig/jssrc/appcommon.js +++ b/html_orig/jssrc/appcommon.js @@ -108,3 +108,9 @@ $.ready(function () { $._loader = function(vis) { $('#loader').toggleClass('show', vis); }; + +$.ready(function() { + setTimeout(function() { + $('#content').addClass('load'); + }, 1); +}); diff --git a/html_orig/jssrc/chibi.js b/html_orig/jssrc/chibi.js index db51e2c..ae975ca 100755 --- a/html_orig/jssrc/chibi.js +++ b/html_orig/jssrc/chibi.js @@ -488,7 +488,7 @@ // Multiple select for (j = 0; j < value.length; j += 1) { elm[i].selected = ''; - if (elm[i].value === value[j]) { + if (elm[i].value === ""+value[j]) { elm[i].selected = 'selected'; break; } diff --git a/html_orig/jssrc/lang.js b/html_orig/jssrc/lang.js index 6ef4755..327dae9 100644 --- a/html_orig/jssrc/lang.js +++ b/html_orig/jssrc/lang.js @@ -1,7 +1,8 @@ // Generated from PHP locale file var _tr = { "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+'?'; } diff --git a/html_orig/jssrc/wifi.js b/html_orig/jssrc/wifi.js index ece92c7..6b8c238 100644 --- a/html_orig/jssrc/wifi.js +++ b/html_orig/jssrc/wifi.js @@ -23,21 +23,6 @@ $('#sta-nw .ip').html(ip.length>0 ? tr('wifi.connected_ip_is')+ip : tr('wifi.not_conn')); } - function submitPskModal(e, open) { - var passwd = $('#conn-passwd').val(); - var ssid = $('#conn-ssid').val(); - - if (open || passwd.length) { - $('#sta_password').val(passwd); - $('#sta_ssid').val(ssid); - selectSta(ssid, passwd, ''); - } - - if (e) e.preventDefault(); - Modal.hide('#psk-modal'); - return false; - } - /** Update display for received response */ function onScan(resp, status) { //var ap_json = { @@ -107,19 +92,18 @@ $item.on('click', function () { var $th = $(this); - var ssid = $th.data('ssid'); - - $('#conn-ssid').val(ssid); - $('#conn-passwd').val(''); + var conn_ssid = $th.data('ssid'); + var conn_pass = ''; if (+$th.data('pwd')) { // this AP needs a password - Modal.show('#psk-modal'); - $('#conn-passwd')[0].focus(); - } else { - //Modal.show('#reset-modal'); - submitPskModal(null, true); + conn_pass = prompt(tr("wifi.enter_passwd").replace(":ssid:", conn_ssid)); + if (!conn_pass) return; } + + $('#sta_password').val(conn_pass); + $('#sta_ssid').val(conn_ssid); + selectSta(conn_ssid, conn_pass, ''); }); @@ -132,6 +116,7 @@ $('#ap-loader').removeClass('hidden'); $('#ap-scan').addClass('hidden'); $('#ap-loader .anim-dots').html('.'); + scanAPs(); } @@ -146,12 +131,6 @@ /** Set up the WiFi page */ function wifiInit(cfg) { - // Hide what should be hidden in this mode - cfg.mode = +cfg.mode; - - $('#ap-noscan').toggleClass('hidden', cfg.mode != 2); - $('#ap-scan').toggleClass('hidden', cfg.mode == 2); - // Update slider value displays $('.Row.range').forEach(function(x) { var inp = x.querySelector('input'); diff --git a/html_orig/lang/en.php b/html_orig/lang/en.php index c3d6b69..d25b3b6 100644 --- a/html_orig/lang/en.php +++ b/html_orig/lang/en.php @@ -4,13 +4,13 @@ return [ 'appname' => 'ESPTerm', 'menu.cfg_wifi' => 'WiFi Settings', - 'menu.cfg_network' => 'Network Configuration', - 'menu.cfg_app' => 'Terminal Settings', + 'menu.cfg_network' => 'Network Settings', + 'menu.cfg_term' => 'Terminal Settings', 'menu.about' => 'About ESPTerm', 'menu.help' => 'Quick Reference', 'menu.term' => 'Back to Terminal', - 'menu.cfg_admin' => 'Reset & Restore', - 'menu.cfg_wifi_conn' => 'Connecting to External Network', + 'menu.cfg_system' => 'System Settings', + 'menu.cfg_wifi_conn' => 'Connecting to Network', 'menu.settings' => 'Settings', @@ -22,30 +22,31 @@ return [ 'net.ap_mac' => 'AP MAC', 'net.details' => 'MAC addresses', - 'app.defaults' => 'Initial settings', - 'app.explain_initials' => ' - Those are the initial settings used after ESPTerm restarts, and they - will also be applied immediately after you submit this form. - They can be subsequently changed by ESC commands, but those changes - aren\'t persistent and will be lost when the device powers off.', - - 'app.term_title' => 'Header text', - 'app.term_width' => 'Screen width', - 'app.term_height' => 'Screen height', - 'app.default_fg' => 'Base text color', - 'app.default_bg' => 'Base background', - 'app.btn1' => 'Button 1 text', - 'app.btn2' => 'Button 2 text', - 'app.btn3' => 'Button 3 text', - 'app.btn4' => 'Button 4 text', - 'app.btn5' => 'Button 5 text', - + 'term.defaults' => 'Initial Settings', + 'term.explain_initials' => ' + Those are the initial settings used after ESPTerm powers on. They + will also be applied immediately after you submit this form.', + + 'term.example' => 'Color settings example', + + 'term.term_title' => 'Header text', + 'term.term_width' => 'Screen width', + 'term.term_height' => 'Screen height', + 'term.default_fg' => 'Text color', + 'term.default_bg' => 'Background', + 'term.btn1' => 'Button 1 text', + 'term.btn2' => 'Button 2 text', + 'term.btn3' => 'Button 3 text', + 'term.btn4' => 'Button 4 text', + 'term.btn5' => 'Button 5 text', + + // terminal color labels 'color.0' => 'Black', 'color.1' => 'Dark Red', 'color.2' => 'Dark Green', 'color.3' => 'Dim Yellow', 'color.4' => 'Deep Blue', - 'color.5' => 'Dark Violet', + 'color.5' => 'Deep Purple', 'color.6' => 'Dark Cyan', 'color.7' => 'Silver', 'color.8' => 'Gray', @@ -53,21 +54,15 @@ return [ 'color.10' => 'Light Green', 'color.11' => 'Light Yellow', 'color.12' => 'Light Blue', - 'color.13' => 'Light Violet', + 'color.13' => 'Light Purple', 'color.14' => 'Light Cyan', 'color.15' => 'White', 'net.explain_sta' => ' - Those settings affect the built-in DHCP client used for - connecting to an external network. Switching DHCP (dynamic IP) off - makes ESPTerm use the configured static IP. Please double-check - those settings before submitting, setting them incorrectly may - make it hard to access ESPTerm via the external network.', + Switch off Dynamic IP to configure the static IP address.', 'net.explain_ap' => ' - Those settings affect the built-in DHCP server in AP mode. - Please double-check those settings before submitting, setting them - incorrectly may render ESPTerm inaccessible via the AP.', + Those settings affect the built-in DHCP server in AP mode.', 'net.ap_dhcp_time' => 'Lease time', 'net.ap_dhcp_start' => 'Pool start IP', @@ -81,7 +76,7 @@ return [ 'net.sta_addr_gw' => 'Gateway IP', 'wifi.ap' => 'Built-in Access Point', - 'wifi.sta' => 'Connect to External Network', + 'wifi.sta' => 'Join Existing Network', 'wifi.enable' => 'Enabled', 'wifi.tpw' => 'Transmit power', @@ -99,9 +94,11 @@ return [ 'wifi.sta_password' => 'Password:', 'wifi.scanning' => 'Scanning', - 'wifi.scan_now' => 'Start scanning!', - 'wifi.cant_scan_no_sta' => 'Can\'t scan with Client mode disabled.', + 'wifi.scan_now' => 'Click here to start scanning!', + 'wifi.cant_scan_no_sta' => 'Click here to enable client mode and start scanning!', 'wifi.select_ssid' => 'Available networks:', + 'wifi.enter_passwd' => 'Enter password for ":ssid:"', + 'wifi.sta_explain' => 'After selecting a network, press Apply to connect.', 'wifi.conn.status' => 'Status:', 'wifi.conn.back_to_config' => 'Back to WiFi config', @@ -113,22 +110,36 @@ return [ 'wifi.conn.working' => "Connecting to selected AP", 'wifi.conn.fail' => "Connection failed, check settings & try again. Cause: ", - 'admin.confirm_restore' => 'Restore all settings to their default values?', - 'admin.confirm_restore_hard' => + 'system.save_restore' => 'Save & Restore', + 'system.confirm_restore' => 'Restore all settings to their default values?', + 'system.confirm_restore_hard' => 'Restore to firmware default settings? This will reset ' . 'all active settings and switch to AP mode with the default SSID.', - 'admin.confirm_store_defaults' => + 'system.confirm_store_defaults' => 'Enter admin password to confirm you want to store the current settings as defaults.', - 'admin.password' => 'Admin password:', - 'admin.restore_defaults' => 'Reset to default settings', - 'admin.write_defaults' => 'Save current settings as default', - 'admin.restore_hard' => 'Reset to firmware default settings', - 'admin.explain' => ' + 'system.password' => 'Admin password:', + 'system.restore_defaults' => 'Reset to default settings', + 'system.write_defaults' => 'Save current settings as default', + 'system.restore_hard' => 'Reset to firmware default settings', + 'system.explain_persist' => ' ESPTerm contains two persistent memory banks, one for default and one for active settings. Active settings can be stored as defaults by the administrator. Use the following button to revert all active settings to their stored default values. ', + 'system.uart' => 'Serial Port', + 'system.explain_uart' => ' + This form controls the primary UART. The debug port is fixed at 115200 baud, one stop-bit and no parity. + ', + 'uart.baud' => 'Baud rate', + 'uart.parity' => 'Parity', + 'uart.parity.none' => 'None', + 'uart.parity.odd' => 'Odd', + 'uart.parity.even' => 'Even', + 'uart.stop_bits' => 'Stop-bits', + 'uart.stop_bits.one' => 'One', + 'uart.stop_bits.one_and_half' => 'One and half', + 'uart.stop_bits.two' => 'Two', 'apply' => 'Apply!', 'enabled' => 'Enabled', diff --git a/html_orig/pages/cfg_admin.php b/html_orig/pages/cfg_admin.php deleted file mode 100644 index 986f83e..0000000 --- a/html_orig/pages/cfg_admin.php +++ /dev/null @@ -1,34 +0,0 @@ -

-
- -
- -
- -
- -
- -
- - - -
-
- - diff --git a/html_orig/pages/cfg_network.php b/html_orig/pages/cfg_network.php index 00cf133..e31930a 100644 --- a/html_orig/pages/cfg_network.php +++ b/html_orig/pages/cfg_network.php @@ -12,7 +12,7 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
- +
@@ -43,9 +43,13 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
- - -  (min) + + required> +
+ +
+ + required>
@@ -59,13 +63,9 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"';
- - required> -
- -
- - required> + + +  min
@@ -86,10 +86,13 @@ $ipmask='pattern="^([0-9]{1,3}\.){3}[0-9]{1,3}$"'; diff --git a/html_orig/pages/cfg_system.php b/html_orig/pages/cfg_system.php new file mode 100644 index 0000000..d0287a3 --- /dev/null +++ b/html_orig/pages/cfg_system.php @@ -0,0 +1,90 @@ +
+

+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ + + +
+
+ + +
+

+ +
+ +
+ +
+ + +  bps +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+ + diff --git a/html_orig/pages/cfg_app.php b/html_orig/pages/cfg_term.php similarity index 50% rename from html_orig/pages/cfg_app.php rename to html_orig/pages/cfg_term.php index d967641..3cc0e04 100644 --- a/html_orig/pages/cfg_app.php +++ b/html_orig/pages/cfg_term.php @@ -1,67 +1,69 @@ -
-

+ +

- +
- - -
- -
- - +
- - -
- - -
- + + +
+ +
+ + +
+ +
+
- +
- +
- +
- +
- +
@@ -69,3 +71,16 @@
+ + diff --git a/html_orig/pages/cfg_wifi.php b/html_orig/pages/cfg_wifi.php index cd8fe1c..2df7d0b 100644 --- a/html_orig/pages/cfg_wifi.php +++ b/html_orig/pages/cfg_wifi.php @@ -1,28 +1,28 @@

-
+
- +
-
+
-
+
-
+
-
+
-
+
@@ -45,16 +45,21 @@

-
+
- + +
+ +
+ +
-
+
-
+
-
@@ -85,24 +89,35 @@
- - diff --git a/html_orig/sass/_fontello.scss b/html_orig/sass/_fontello.scss index bbf60f7..3eae0aa 100644 --- a/html_orig/sass/_fontello.scss +++ b/html_orig/sass/_fontello.scss @@ -4,8 +4,8 @@ @font-face { font-family: 'fontello'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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') format('truetype'); + src: url('data:application/octet-stream;base64,d09GRgABAAAAABjgAA8AAAAAKBQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFZ8JWGjY21hcAAAAdgAAACmAAACMBHmxANjdnQgAAACgAAAABQAAAAgBzn/aGZwZ20AAAKUAAAFkAAAC3CKkZBZZ2FzcAAACCQAAAAIAAAACAAAABBnbHlmAAAILAAADZwAABPw1hdt4GhlYWQAABXIAAAAMwAAADYOv3AxaGhlYQAAFfwAAAAgAAAAJAfjBBpobXR4AAAWHAAAACgAAAA0L/z/+WxvY2EAABZEAAAAHAAAABwbQiEabWF4cAAAFmAAAAAgAAAAIAFYDZ5uYW1lAAAWgAAAAXcAAALNzJ0dH3Bvc3QAABf4AAAAbAAAAJDryILFcHJlcAAAGGQAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZN7IOIGBlYGBqYppDwMDQw+EZnzAYMjIBBRlYGVmwAoC0lxTGBzUWP//Z275P4chirmFIQUozAiSAwADsgybAHic7ZG9DcJADIWfSS78SxSZ4dzQMEt6qtSZIBNQ0aZjB3qWItCGZ7uIkBgBW9+d/OQ7WX4AEoCCHEkJyBUCiwtVcb3AxvUSZ9YHJvtzyn0etNZGW+2m6ZfyFeIv5zRlwZ9KTlBhybLCP3Z+3uYqp8C8yH3AvSEPgXmhdWD+aROYr9oG3C+0C7hpee4dYAUZTw6w5v1wQL9lfDvAFvK6O5znA4clJJ4AAHicY2BAAxIQyNzyfw4IAwAVjASleJytVml300YUHXlJnIQsJQstamHExGmwRiZswYAJQbJjIF2crZWgixQ76b7xid/gX/Nk2nPoN35a7xsvJJC053Cak6N3583VzNtlElqS2AvrkZSbL8XU1iaN7DwJ6YZNy1F8KDt7IWWKyd8FURCtltq3HYdERCJQta6wRBD7HlmaZHzoUUbLtqRXTcotPekuW+NBvVXffho6yrE7oaRmM3RoPbIlVRhVokimPVLSpmWo+itJK7y/wsxXzVDCiE4iabwZxtBI3htntMpoNbbjKIpsstwoUiSa4UEUeZTVEufkigkMygfNkPLKpxHlw/yIrNijnFawS7bT/L4vead3OT+xX29RtuRAH8iO7ODsdCVfhFtbYdy0k+0oVBF213dCbNnsVP9mj/KaRgO3KzK90IxgqXyFECs/ocz+IVktnE/5kkejWrKRE0HrZU7sSz6B1uOIKXHNGFnQ3dEJEdT9kjMM9pg+Hvzx3imWCxMCeBzLekclnAgTKWFzNEnaMHJgJWWLKqn1rpg45XVaxFvCfu3a0ZfOaONQd2I8Ww8dWzlRyfFoUqeZTJ3aSc2jKQ2ilHQmeMyvAyg/oklebWM1iZVH0zhmxoREIgIt3EtTQSw7saQpBM2jGb25G6a5di1apMkD9dyj9/TmVri501PaDvSzRn9Wp2I62AvT6WnkL/Fp2uUiRen66Rl+TOJB1gIykS02w5SDB2/9DtLL15YchdcG2O7t8yuofdZE8KQB+xvQHk/VKQlMhZhViFZAYq1rWZbJ1awWqcjUd0OaVr6s0wSKchwXx76Mcf1fMzOWmBK+34nTsyMuPXPtSwjTHHybdT2a16nFcgFxZnlOp1mW7+s0x/IDneZZntfpCEtbp6MsP9RpgeVHOh1jeUELmnTfwZCLMOQCDpAwhKUDQ1hegiEsFQxhuQhDWBZhCMslGMLyYxjCchmGsLysZdXUU0nj2plYBmxCYGKOHrnMReVqKrlUQrtoVGpDnhJulVQUz6p/ZaBePPKGObAWSJfIml8xzpWPRuX41hUtbxo7V8Cx6m8fjvY58VLWi4U/Bf/V1lQlvWLNw5Or8BuGnmwnqjapeHRNl89VPbr+X1RUWAv0G0iFWCjKsmxwZyKEjzqdhmqglUPMbMw8tOt1y5qfw/03MUIWUP34NxQaC9yDTllJWe3grNXX27LcO4NyOBMsSTE38/pW+CIjs9J+kVnKno98HnAFjEpl2GoDrRW82ScxD5neJM8EcVtRNkja2M4EiQ0c84B5850EJmHqqg3kTuGGDfgFYW7BeSdconqjLIfuRezzKKT8W6fiRPaoaIzAs9kbYa/vQspvcQwkNPmlfgxUFaGpGDUV0DRSbqgGX8bZum1Cxg70Iyp2w7Ks4sPHFveVkm0ZhHykiNWjo5/WXqJOqtx+ZhSX752+BcEgNTF/e990cZDKu1rJMkdtA1O3GpVT15pD41WH6uZR9b3j7BM5a5puuiceel/TqtvBxVwssPZtDtJSJhfU9WGFDaLLxaVQ6mU0Se+4BxgWGNDvUIqN/6v62HyeK1WF0XEk307Ut9HnYAz8D9h/R/UD0Pdj6HINLs/3mhOfbvThbJmuohfrp+g3MGutuVm6BtzQdAPiIUetjrjKDXynBnF6pLkc6SHgY90V4gHAJoDF4BPdtYzmUwCj+Yw5PsDnzGHQZA6DLeYw2GbOGsAOcxjsMofBHnMYfMGcdYAvmcMgZA6DiDkMnjAnAHjKHAZfMYfB18xh8A1z7gN8yxwGMXMYJMxhsK/p1jDMLV7QXaC2QVWgA1NPWNzD4lBTZcj+jheG/b1BzP7BIKb+qOn2kPoTLwz1Z4OY+otBTP1V050h9TdeGOrvBjH1D4OY+ky/GMtlBr+MfJcKB5RdbD7n74n3D9vFQLkAAQAB//8AD3icxVhbbFzHeZ5/rue2Z29nz6HI5ZJckrsUSS2t5V5kUqLXupGW1qpMUTIp2A4RX6JakWWosoM6sGu4ejBiwwkCNHEDR4kBGwiKOnDSuNfE6EPsFAmK2i0gq00DtDWKqnkI0EJBATda9ZslraYvRdGHlrs758zMP//8881/JSPGbv5CvCousBHW7Hi5tCeFYpyWj75ZPL7eCYgYZ48zzgN+11DHQ4efxxh7ZOOt4SgRKpmhKE35QhTSHBldrjQb7XzVtpPtVn2EVCxeTf/wtqAQ/PtHQRzQbT8KR2jgGX80eJoGRvlQkH6n98+BnyFz6ZLJedKh5J10UFBTvSTpTSlm5ftQbIh9bDdb6ixOk1CTw1wKvsykICHpHCMuiJ9ligmpxCYkZHwNArN1vLDuzmYynkxoNQhBQ27KlWqlcQe14qRE8/UlUeNlbZJYzxBmmo3WCC1hvMTFxsELXz+1+c29UnV1Vu588sDCmePTvNb99PmHpu7O5pOP0hHNZlf2fmX13ssX99MXbMtX79KhvFuRbi7Uuo9efLRbm5q8O7MrDj8ayOdWbl86ePEyY0zjTK/JOfFZ5rAcG2JPsd9n/8Je6fz2z/6ay/DR+7ly3vvu44Kpt3/360+sdg+ND7vEfu9yR3Ba2MU1/61nuS/M8j/9mIeHniP/oEeOq1xHnWOaG67NORYy6YZyk7kOc9eYShEjxQCNJr5mr9QIMptM+L5YY0L468wXfvcfP/zBu7/zjRc+d+7TD33y9EajPjOdj6Ion0tb7BqVso7ieks1KiEl9k3YoRLVW6YQ6TRpEydxZEIqz+EdH4tos1qpQin6+rBE7coc1WgfNVq4gLa9iLYFewQdfBapHo9QnEBtkrgQ9TmOUImoEIFdbNtxy7tcDclssQQLcMNidMByvo7VCZj3GVh5sr+8tlLtr/0fLqXra0+u4UtvzO6ZpemFWdp+XnXkvTrIj0gZHMyoTiHWRqbOaC+VT/bLlD4u1YSTMieV46hTxt+i87Tu5Ae0EZaQQHmnSql75EDWSemTWtMjJ7RX5AdJFYb9wDezgg6KYc+cOGG8YdHIkJx2stliIvkBXnQxvE097fSp5X9LTF9YtOdY+3B4lk+NDE9P8w00i9PTf/4pyBLmk6FJHcjsfln39d6hlAOBgrqUR9NKObPBQJwix5xRtyhVBpSes3ewT+nvtpRSlwqpoXzAnd5fHHOddHhHyPnU0CSR36ApztFPO+4x182k7EzJbUAJpxKq2qlUxuXzmNtaVbVTQaO6tcjFIufWIp+oemuRw6xvYEy8zn/ICmy4M5iGltMyfBc/jyk6j8lHoiTa8lHGKg71TR8K129i8XqmN5qZzfR+mk538XyNHkPbzfCVGBPpNMX9buZ1Op/JdNNM3LwBX/QJ+KI0a7ODbKVzaCcp4RKHk4Q/4gKO6RwTigt1lhnGpeGb8Etbxke45zVIqNeZJt0tlGbycaUy7qjizGSzUYG56GGKYphBK9+o0XjZaMg4X4eN1KGTGqaVFLbmrQEtiQQ+t1zjmIaRXPecs47Xbz6/dN/u55fd1BGpXVWa3DMdD43vpf7UQK7olaLggwvvXvuzx/RT373+x89c+niZR7+xe632mZTflqYyVMoVBoP0/skIE7myn9GDxanVJ75/8eL3f2qbbb98TSyxIhvrlLJ97DlZ3IUND8SSQspnRSpKFc0oYF+tCfjXNnxrAtnrsb0Suh76vdfS3nR58KWnyytLtXw02zk8/vRLz/Ze94Y9Op72Wq3jk5/9HA1MlwvRxNQgvfjzZ3vf8vr7/yt/WTzJIrbrLepvf/TNCYQs3yrG4+gHhIjl3lKFje8kCVfxjMtj61z62tDeUoSIv9T7gHZ63v1+0e990vfpslfy7vf43/au9j7ov3r0NTzpsu/f75Ws2vV1wcalgL5H/8Y/c/RN9/j6nXvZ99ifsD9kX2NfYs/D0QuQfp7ZGCrY37C/YufYBruH7WdLbJ6Nsh3Ms2pCl+ll+hK9SC/QU/QEPUwPkmB/z/6OBeBg6ATdTVNY70BvrtOP6X36Ef0pvU17aB5jZMfZ8tDRNz3sf2B79+eZtIoHaQgr1f+BDIYt48zEbMg+PPT/B8TGRv8mOk3GhREcwdBoYfRZph2hnbPMIeHQWajHYwiqQrA1PJhYV7BeJrpbMHYWJPIMrsTDjBvFDYxZqy0eaouH+k8eSm3xUKdwdnVk6H+588bGnTusVtNVukJ/RH9A99Ip9gP2DnuLfYd9i32T/Tp7EhghdwAahJ+H7aIZa/wf+wFCYKwvURORtpVUbJC9g3SlGZlGRTdrcg4Kb3O0aJqisi6bVrUy3qpU52u8WrPDMATEc2NjuQ3luowXhMlqxdhfvWKWaNwyrcY2fLfq8XzcqNb7BDqxxNigCrbgWq3YfslGU4OtdGxqVI2r42WbC7QbSVWbumWFmFuxAdpAAizVpsSjdmywDAurFR3PWz4jEKitRwQ8h7b8mqCK261qjTdt9qBLfB5y10tyRMT1fm4Xt8s2dSiUKGk1wQWNPX2lldRbOC6OFenCeMtGA4ybsglFBSLYftXKBSfbwDniFjhB4Lhd4kCn1bZZ4xIhrWnWAEE/j6nWQVGGNEhlYtu241ZliQrt1riV0QJcbwIQgVQD6UsLOZD9pgknKwCvGm4tTZVWxeLe0oWQCjVqQ/DYJlFJpGN64+K7Fz722JTnDtJdKbKFvEeIuBqpnJbSU1qSg0gkhMQfIgxHUig1KMkJSBWRMnMQhMSNCxKC1pHxuFQpIaIwLx3khsSVyynvasmV9oQjofxCu+CmXOTWgitJofHTMiPAFbm6Yx9gLCSXOSWCANvzYMeQ0ErllfBlysdGWjrSlffUpeJaCRrwIIOSVk5sScQ9Y3LSuBIb8hB9HnLJedoRYC0USThfcFCB4cIRrom1RnKVkRH4gLkIUQV4ysl6HH+kOHpcBIIDDcgHQ/SxD3ci4WCBPbcCSviSHBCugAAixUMLByofriEDcJLSOMoEEh0kzaovSCB5Dsu5Cl3OPQdQaW2UG3i/+mvHEWxSWF+wbsMCrQLYPP7ISu7hhjigBhEEkX6auOuR2LcdS9H0fkIOuIFYKB9kYBGQZ/q4EkfSpYGrJHu5eOCdOxZWW//gro1wjGek0iqwqoGjBS5AUTiCyHIROnZcuLhWoSmUHlgqHMuTxhhylWMcgCQsllAHT4jQTiskL0ga0lxYZxYCAKnxgRC7fkXaW5c67UEGJYFH5HPSg5wSaJxQkRAZYCwd5UjyB1IqwKll4IQyJM+PDNwnIMdd5IQnpas0F14fYJ5xclZ/IYeHdMdeJfDOqLT1xdzHodGVA6EbKpeglYAaoMNMFE9DR/qFoHAUUl8HQIbc8xQGpO8qqxq4A5xZwiAAgSYcDwvtvaPppQon7Zk1T5O1A0DNPaExBHRDzS2N1SfLRxWdrBu6AZcZgzBr86BX+c/hkXcglp1mRzsrG6vHlkGfstGOL7tkHHOeOdw5b0VEdgp/b4toxc4zBWVGhaZsVqh09+Ta+PDRdjk3U8x7anhmEq69JpZ4idStt6RRsbkhHCncqYlKom3r2DZKL2nKNblV3eCHigZlTWIdkq1o6OGwXJsAxKP1Uo4e/KXO+rE7k1NTm9WTA/u7NNFaPVJ7oHZkdU/5mXJ8ZO3RU/WZlfuOdRfy4910cd/pfaunTxxZuG9xON39SVyb4hP1qUZZTs8O/JfOgQcCrYMHDuxemY3howanul+8eGhmqRzhQr2B8p6JQxcvbeyqd26fnYtytWm6vbN718Y2ljanEmwM9f4hdk/n2Mz0eBk2RMspe+MOP8w8A9XyUN06DHEVFb9GPNT0AC6ZuS5btU/mrjOXud3Ovj3NpDKfzS9msxkfiLbHmmNqPtvol6K2ch0fs4X/eHYeyen8WD02YjsZt8k2oG2p7DZRdovABpYr9EbvBF1fCdRXoQ2lpPd2XKKVldECvR+P0hXk0yagrfahUnIjh7AxGnOVtNKvZOKZK1foujNoXtEBXYtHR+NrN1r9J5W+bXPxb9u13o2P7BD/WTw6EH413bKljuw3tv7wkDMtsFX2Quf5ZfKdOUBTgFNF5k1yOZvivqMdX59DZWWkrULOpa1bsvZxzmYOTuBZ9OCX9Sa4Wjez2c89bH3C1kOwYd3FxbExZMJscXVxtXv00IHOHWMLYwuN+V0z1Ul/1B8d3JHPpUOtmEdeDjn+JCBqLFFsIt1GVCsjnvX/G7TEY1tTY9CmGeVQjG8Nk41x2+NcbxXoKMgnRmV/mC/6x+nw7AqtvkjTKyuH49hbU7PPPXdpRq29pHX3uZNzm4f3jHJ3TR957+pf3qUxah682rvykNHuGukzNEqzVP6UWquv+rkBXsz4q18uFothuOYZPXMbb+zUxlt7WS3soYHyxABG1ZFVfqyrMPpltb7O7zulLOmZCxfOWErG+M2bNz+Uc+IS6r85dltnV7/yG7XeehmGLlB0bPmgTdyTWodVB+yuJkJ7Jer//wlaVx2DzWajGIrUykOxzFgEGLYVDOg18WxvK5q45jm/+E2DKK/F0yY43JjsvZ/LUJTu/UM6olyu995EixqT4unJBp2m9/uEvTmDaHn1xqsYi2rIa+I4dMqzhdYE/8Rko8H+A1aSn2V4nGNgZGBgAOLec3ud4/ltvjJwM78AijBcXSQmBKP///2/hCWeuQXI5WBgAokCAGYHDMQAeJxjYGRgYG75P4eBgaXs/9//v1jiGYAiKIAXAKypBwR4nGN+wcDAvACIIxkYWPSBNIgf+f8viGY6BWXD5MtAav7/BwAzTA0aAAAAAABQALoCXgKWAxwDXAOcB6AIRgjWCZYJ+AABAAAADQH4AAYAAAAAAAIAJAA0AHMAAACtC3AAAAAAeJx1kN1qwjAYht/Mn20K29hgp8vRUMbqDwxBEASHnmwnMjwdtda2UhtJo+Bt7B52MbuJXcte2ziGspY0z/fky5evAXCNbwjkzxNHzgJnjHI+wSl6lgv0z5aL5BfLJVTxZrlM/265ggcElqu4wQcriOI5owU+LQtciUvLJ7gQd5YL9I+Wi+Se5RJuxavlMr1nuYKJSC1XcS++Bmq11VEQGlkb1GW72erI6VYqqihxY+muTah0KvtyrhLjx7FyPLXc89gP1rGr9+F+nvg6jVQiW05zr0Z+4mvX+LNd9XQTtI2Zy7lWSzm0GXKl1cL3jBMas+o2Gn/PwwAKK2yhEfGqQhhI1GjrnNtoooUOacoMycw8K0ICFzGNizV3hNlKyrjPMWeU0PrMiMkOPH6XR35MCrg/ZhV9tHoYT0i7M6LMS/blsLvDrBEpyTLdzM5+e0+x4WltWsNduy511pXE8KCG5H3s1hY0Hr2T3Yqh7aLB95//+wHmboRRAHicbcFBEoMgDAVQvkVQW3tHsFEzWHBCGK/votu+ZzrzM5n/ZnR4wKKHg8eAEROeeGHG2/QhlqZeqGoRGpeSV96aUFeS3ek43afkoGRjWJLPpFeR5DbWvUV/klSuai9eeVCSL+dwGHMDEm4d5nicY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MTAyaIEYm7mYGDkgLD4GMIvNaRfTAaA0J5DN7rSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzmYWLk0drB+L91A0vvRiYGFwAMdiP0AAA=') format('woff'), + url('data:application/octet-stream;base64,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') format('truetype'); } %fontello-icon-base { @@ -52,6 +52,7 @@ $icon-codes: ( about: '\2605', restore: '\267c', + configure: '\2699', ok: '\2714', help: '\2753', donate: '\2764', @@ -68,6 +69,7 @@ $icon-codes: ( .icn-about::before { content: '\2605'; } .icn-restore::before { content: '\267c'; } +.icn-configure::before { content: '\2699'; } .icn-ok::before { content: '\2714'; } .icn-help::before { content: '\2753'; } .icn-donate::before { content: '\2764'; } diff --git a/html_orig/sass/form/_form_elements.scss b/html_orig/sass/form/_form_elements.scss index 1e35ab3..d66e94c 100755 --- a/html_orig/sass/form/_form_elements.scss +++ b/html_orig/sass/form/_form_elements.scss @@ -1,5 +1,13 @@ @import "buttons"; +#{$all-text-inputs}, select, label.select-wrap { + width: $form-field-w; +} + +input[type="number"], input.short, select.short { + width: $form-field-w/2; +} + #{$all-text-inputs}, select { border: 0 none; border-bottom: 2px solid $c-form-highlight; diff --git a/html_orig/sass/form/_form_layout.scss b/html_orig/sass/form/_form_layout.scss index ec373a7..5adc85e 100755 --- a/html_orig/sass/form/_form_layout.scss +++ b/html_orig/sass/form/_form_layout.scss @@ -1,14 +1,6 @@ // Unified Form wrapper form { @include naked(); } -#{$all-text-inputs}, select, label.select-wrap { - width: $form-field-w; -} - -input[type="number"], input.short { - width: $form-field-w/2; -} - .Box.errors { .list { color: crimson; @@ -45,7 +37,8 @@ input[type="number"], input.short { } } - &.buttons { + // buttons2 is the same style, but different selector for use in the admin page + &.buttons, &.buttons2 { margin: 16px auto; input, .button { margin-right: dist(-1); diff --git a/html_orig/sass/layout/_box.scss b/html_orig/sass/layout/_box.scss index a61c850..1ed9469 100755 --- a/html_orig/sass/layout/_box.scss +++ b/html_orig/sass/layout/_box.scss @@ -79,9 +79,19 @@ .Row.explain { max-width: 600px; margin-left: 0; + line-height: 1.2; + @include media($phone) { margin-top: 60px; } + + &.nomargintop { + margin-top: 12px !important; + } + + &.padleft { + + } } &.mobopen .Row.explain { margin-top: 12px; // default from .Row @@ -97,11 +107,12 @@ h2 { position: relative; cursor: pointer; - padding-right: 1.3rem; + padding: 2px 1.3rem 2px 5px; + margin: 0 -5px 0 -5px; &::after { position: absolute; - right: 0; + right: 4px; content: '▸'; top:50%; diff --git a/html_orig/sass/layout/_content.scss b/html_orig/sass/layout/_content.scss index b1d6b96..731c937 100755 --- a/html_orig/sass/layout/_content.scss +++ b/html_orig/sass/layout/_content.scss @@ -48,3 +48,13 @@ color: $c-form-label-fg; } } + +#content { + // fade in effect + opacity: 0; + transition: opacity 0.15s ease-in; +} + +#content.load { + opacity: 1; +} diff --git a/html_orig/sass/pages/_wifi.scss b/html_orig/sass/pages/_wifi.scss index 90a758d..b71f8dc 100755 --- a/html_orig/sass/pages/_wifi.scss +++ b/html_orig/sass/pages/_wifi.scss @@ -19,6 +19,7 @@ padding: dist(-2); margin-bottom: dist(-2); margin-top: dist(-2); + font-size: 110%; } #ap-noscan { diff --git a/include/uart_hw.h b/include/uart_hw.h- similarity index 100% rename from include/uart_hw.h rename to include/uart_hw.h- diff --git a/user/cgi_appcfg.h b/user/cgi_appcfg.h deleted file mode 100644 index 823a0f1..0000000 --- a/user/cgi_appcfg.h +++ /dev/null @@ -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 diff --git a/user/cgi_ping.c b/user/cgi_ping.c deleted file mode 100755 index 5cde827..0000000 --- a/user/cgi_ping.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include - -#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; -} diff --git a/user/cgi_ping.h b/user/cgi_ping.h deleted file mode 100755 index c500697..0000000 --- a/user/cgi_ping.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef CGI_PING_H -#define CGI_PING_H - -#include -#include - -// 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 diff --git a/user/cgi_reset.c b/user/cgi_reset.c deleted file mode 100755 index aea3f87..0000000 --- a/user/cgi_reset.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -#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; -} diff --git a/user/cgi_reset.h b/user/cgi_reset.h deleted file mode 100755 index a7b6927..0000000 --- a/user/cgi_reset.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef CGI_RESET_H -#define CGI_RESET_H - -#include -#include - -httpd_cgi_state cgiResetDevice(HttpdConnData *connData); - -#endif // CGI_RESET_H diff --git a/user/cgi_system.c b/user/cgi_system.c new file mode 100755 index 0000000..f017112 --- /dev/null +++ b/user/cgi_system.c @@ -0,0 +1,164 @@ +#include +#include +#include + +#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; +} diff --git a/user/cgi_system.h b/user/cgi_system.h new file mode 100755 index 0000000..b90c274 --- /dev/null +++ b/user/cgi_system.h @@ -0,0 +1,12 @@ +#ifndef CGI_PING_H +#define CGI_PING_H + +#include +#include + +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 diff --git a/user/cgi_appcfg.c b/user/cgi_term_cfg.c similarity index 95% rename from user/cgi_appcfg.c rename to user/cgi_term_cfg.c index e766139..f42c2c5 100644 --- a/user/cgi_appcfg.c +++ b/user/cgi_term_cfg.c @@ -3,19 +3,19 @@ Cgi/template routines for configuring non-wifi settings */ #include -#include "cgi_appcfg.h" +#include "cgi_term_cfg.h" #include "persist.h" #include "screen.h" #include "helpers.h" -#define SET_REDIR_SUC "/cfg/app" +#define SET_REDIR_SUC "/cfg/term" #define SET_REDIR_ERR SET_REDIR_SUC"?err=" /** * Universal CGI endpoint to set Terminal params. */ httpd_cgi_state ICACHE_FLASH_ATTR -cgiAppCfgSetParams(HttpdConnData *connData) +cgiTermCfgSetParams(HttpdConnData *connData) { char buff[50]; @@ -114,7 +114,7 @@ cgiAppCfgSetParams(HttpdConnData *connData) if (redir_url_buf[strlen(SET_REDIR_ERR)] == 0) { // All was OK - info("Set app params - success, saving..."); + info("Set term params - success, saving..."); terminal_apply_settings(); persist_store(); @@ -130,7 +130,7 @@ cgiAppCfgSetParams(HttpdConnData *connData) httpd_cgi_state ICACHE_FLASH_ATTR -tplAppCfg(HttpdConnData *connData, char *token, void **arg) +tplTermCfg(HttpdConnData *connData, char *token, void **arg) { #define BUFLEN 100 char buff[BUFLEN]; diff --git a/user/cgi_term_cfg.h b/user/cgi_term_cfg.h new file mode 100644 index 0000000..895a9c8 --- /dev/null +++ b/user/cgi_term_cfg.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 diff --git a/user/cgi_wifi.c b/user/cgi_wifi.c index 653f928..9561f0e 100644 --- a/user/cgi_wifi.c +++ b/user/cgi_wifi.c @@ -183,9 +183,8 @@ static void ICACHE_FLASH_ATTR wifiStartScan(void) } /** - * This CGI is called from the bit of AJAX-code in wifi.tpl. It will initiate a - * scan for access points and if available will return the result of an earlier scan. - * The result is embedded in a bit of JSON parsed by the javascript in wifi.tpl. + * Start a scan and return a result of an earlier scan, if available. + * The STA is switched ON if disabled. */ httpd_cgi_state ICACHE_FLASH_ATTR cgiWiFiScan(HttpdConnData *connData) { @@ -193,6 +192,12 @@ httpd_cgi_state ICACHE_FLASH_ATTR cgiWiFiScan(HttpdConnData *connData) int len; char buff[256]; + // auto-turn on STA + if ((wificonf->opmode & STATION_MODE) == 0) { + wificonf->opmode |= STATION_MODE; + wifimgr_apply_settings(); + } + // 2nd and following runs of the function via MORE: if (!cgiWifiAps.scanInProgress && pos != 0) { // Fill in json code for an access point diff --git a/user/persist.c b/user/persist.c index 857188b..a5d7cab 100644 --- a/user/persist.c +++ b/user/persist.c @@ -19,6 +19,7 @@ apply_live_settings(void) dbg("[Persist] Applying live settings..."); terminal_apply_settings(); wifimgr_apply_settings(); + sysconf_apply_settings(); // ... } @@ -27,6 +28,7 @@ restore_live_settings_to_hard_defaults(void) { wifimgr_restore_defaults(); terminal_restore_defaults(); + sysconf_restore_defaults(); // ... } @@ -41,7 +43,7 @@ restore_live_settings_to_hard_defaults(void) static uint32_t ICACHE_FLASH_ATTR calculateCRC32(const uint8_t *data, size_t length) { - uint32_t crc = 0xffffffff; + uint32_t crc = 0xffffffff + CHECKSUM_SALT; while (length--) { uint8_t c = *data++; for (uint32_t i = 0x80; i > 0; i >>= 1) { @@ -67,7 +69,8 @@ calculateCRC32(const uint8_t *data, size_t length) static uint32_t ICACHE_FLASH_ATTR compute_checksum(AppConfigBundle *bundle) { - return calculateCRC32((uint8_t *) bundle, sizeof(AppConfigBundle) - 4) ^ CHECKSUM_SALT; + // this should be the bundle without the checksum + return calculateCRC32((uint8_t *) bundle, sizeof(AppConfigBundle) - 4); } /** @@ -78,10 +81,13 @@ persist_load(void) { info("[Persist] Loading stored settings from FLASH..."); - dbg("sizeof(AppConfigBundle) = %d bytes", sizeof(AppConfigBundle)); - dbg("sizeof(PersistBlock) = %d bytes", sizeof(PersistBlock)); - dbg("sizeof(WiFiConfigBundle) = %d bytes", sizeof(WiFiConfigBundle)); - dbg("sizeof(TerminalConfigBundle) = %d bytes", sizeof(TerminalConfigBundle)); + dbg("sizeof(AppConfigBundle) = %d bytes", sizeof(AppConfigBundle)); + dbg("> sizeof(WiFiConfigBundle) = %d bytes", sizeof(WiFiConfigBundle)); + dbg("> sizeof(TerminalConfigBundle) = %d bytes", sizeof(TerminalConfigBundle)); + dbg("> sizeof(SystemConfigBundle) = %d bytes", sizeof(SystemConfigBundle)); + dbg("> sizeof(checksum) = %d bytes", sizeof(uint32_t)); + dbg("> filler = %d bytes", + sizeof(AppConfigBundle) - (sizeof(WiFiConfigBundle) + sizeof(TerminalConfigBundle) + sizeof(SystemConfigBundle))); bool hard_reset = false; diff --git a/user/persist.h b/user/persist.h index c5b6b87..9e110a8 100644 --- a/user/persist.h +++ b/user/persist.h @@ -12,19 +12,21 @@ #include "wifimgr.h" #include "screen.h" +#include "syscfg.h" // Changing this could be used to force-erase the config area // after a firmware upgrade -#define CHECKSUM_SALT 0x5F5F5F5F +#define CHECKSUM_SALT 1 + +#define APPCONF_SIZE 2048 /** Struct for current or default settings */ -typedef struct { +typedef struct { // the entire block should be 1024 bytes long (for compatibility across upgrades) WiFiConfigBundle wificonf; TerminalConfigBundle termconf; + SystemConfigBundle sysconf; // --- Space for future settings --- - // Original size: 1024 - // // The size must be appropriately reduced each time something is added, // and boolean flags defaulting to 0 should be used to detect unpopulated // sections that must be restored to defaults on load. @@ -32,7 +34,13 @@ typedef struct { // This ensures user settings are not lost each time they upgrade the firmware, // which would lead to a checksum mismatch if the structure was changed and // it grew to a different memory area. - uint8_t filler[1024]; + uint8_t filler[ + APPCONF_SIZE + - sizeof(uint32_t) // checksum + - sizeof(WiFiConfigBundle) + - sizeof(TerminalConfigBundle) + - sizeof(SystemConfigBundle) + ]; uint32_t checksum; // computed before write and tested on load. If it doesn't match, values are reset to hard defaults. } AppConfigBundle; diff --git a/user/routes.c b/user/routes.c index ee2fcd7..264547f 100644 --- a/user/routes.c +++ b/user/routes.c @@ -6,12 +6,11 @@ #include "routes.h" #include "cgi_wifi.h" -#include "cgi_reset.h" -#include "cgi_ping.h" +#include "cgi_system.h" #include "cgi_main.h" #include "cgi_sockets.h" #include "cgi_network.h" -#include "cgi_appcfg.h" +#include "cgi_term_cfg.h" #include "cgi_persist.h" #define WIFI_PROTECT 0 @@ -54,13 +53,14 @@ HttpdBuiltInUrl routes[] = { ROUTE_TPL_FILE("/cfg/network/?", tplNetwork, "/cfg_network.tpl"), ROUTE_CGI("/cfg/network/set", cgiNetworkSetParams), - ROUTE_TPL_FILE("/cfg/app/?", tplAppCfg, "/cfg_app.tpl"), - ROUTE_CGI("/cfg/app/set", cgiAppCfgSetParams), + ROUTE_TPL_FILE("/cfg/term/?", tplTermCfg, "/cfg_term.tpl"), + ROUTE_CGI("/cfg/term/set", cgiTermCfgSetParams), - ROUTE_FILE("/cfg/admin/?", "/cfg_admin.tpl"), - ROUTE_CGI("/cfg/admin/write_defaults", cgiPersistWriteDefaults), - ROUTE_CGI("/cfg/admin/restore_defaults", cgiPersistRestoreDefaults), - ROUTE_CGI("/cfg/admin/restore_hard", cgiPersistRestoreHard), + ROUTE_TPL_FILE("/cfg/system/?", tplSystemCfg, "/cfg_system.tpl"), + ROUTE_CGI("/cfg/system/set", cgiSystemCfgSetParams), + ROUTE_CGI("/cfg/system/write_defaults", cgiPersistWriteDefaults), + ROUTE_CGI("/cfg/system/restore_defaults", cgiPersistRestoreDefaults), + ROUTE_CGI("/cfg/system/restore_hard", cgiPersistRestoreHard), ROUTE_FILESYSTEM(), ROUTE_END(), diff --git a/user/screen.h b/user/screen.h index 5ab2bc6..72bd207 100644 --- a/user/screen.h +++ b/user/screen.h @@ -34,17 +34,35 @@ * */ +// Size designed for the wifi config structure +// Must be constant to avoid corrupting user config after upgrade +#define TERMCONF_SIZE 200 + +#define TERM_BTN_LEN 10 +#define TERM_TITLE_LEN 64 + typedef struct { u32 width; u32 height; u8 default_bg; u8 default_fg; - char title[64]; - char btn1[10]; - char btn2[10]; - char btn3[10]; - char btn4[10]; - char btn5[10]; + char title[TERM_TITLE_LEN]; + char btn1[TERM_BTN_LEN]; + char btn2[TERM_BTN_LEN]; + char btn3[TERM_BTN_LEN]; + char btn4[TERM_BTN_LEN]; + char btn5[TERM_BTN_LEN]; + + u8 _filler[ + TERMCONF_SIZE + - 4 + - 4 + - 1 + - 1 + - TERM_TITLE_LEN + - TERM_BTN_LEN * 5 + ]; + } TerminalConfigBundle; // Live config diff --git a/user/serial.c b/user/serial.c index b5a07a2..f431333 100644 --- a/user/serial.c +++ b/user/serial.c @@ -2,21 +2,38 @@ #include "uart_driver.h" #include "uart_handler.h" #include "ansi_parser.h" - -// Here the bitrates are defined -#define UART0_BAUD BIT_RATE_115200 -#define UART1_BAUD BIT_RATE_115200 +#include "syscfg.h" /** * Init the serial ports */ -void ICACHE_FLASH_ATTR serialInit(void) +void ICACHE_FLASH_ATTR serialInitBase(void) { - UART_Init(UART0_BAUD, UART1_BAUD); + UART_Init(); + // debug port + UART_SetParity(UART1, PARITY_NONE); + UART_SetStopBits(UART1, ONE_STOP_BIT); + UART_SetBaudrate(UART1, BIT_RATE_115200); UART_SetPrintPort(UART1); UART_SetupAsyncReceiver(); } +/** + * Init the serial ports + */ +void ICACHE_FLASH_ATTR serialInit(void) +{ + UART_SetParity(UART0, (UartParityMode) sysconf->uart_parity); + UART_SetStopBits(UART0, (UartStopBitsNum) sysconf->uart_stopbits); + UART_SetBaudrate(UART0, sysconf->uart_baudrate); + + info("COM SERIAL: %d baud, %s parity, %s stopbit(s)", + sysconf->uart_baudrate, + (sysconf->uart_parity == PARITY_NONE ? "NONE" : (sysconf->uart_parity == PARITY_ODD ? "ODD" : "EVEN")), + (sysconf->uart_stopbits == ONE_STOP_BIT ? "1" : (sysconf->uart_stopbits == ONE_HALF_STOP_BIT ? "1.5" : "2")) + ); +} + /** * Handle a byte received from UART. * Might do some buffering here maybe diff --git a/user/serial.h b/user/serial.h index eda2e5b..cb2954c 100644 --- a/user/serial.h +++ b/user/serial.h @@ -1,6 +1,9 @@ #ifndef SERIAL_H #define SERIAL_H +/** Initial uart init (before sysconf is loaded) */ +void serialInitBase(void); + /** Init the uarts */ void serialInit(void); diff --git a/user/syscfg.c b/user/syscfg.c new file mode 100644 index 0000000..d45406f --- /dev/null +++ b/user/syscfg.c @@ -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; +} diff --git a/user/syscfg.h b/user/syscfg.h new file mode 100644 index 0000000..3fe65ed --- /dev/null +++ b/user/syscfg.h @@ -0,0 +1,33 @@ +// +// Created by MightyPork on 2017/07/29. +// + +#ifndef ESP_VT100_FIRMWARE_SYSCFG_H +#define ESP_VT100_FIRMWARE_SYSCFG_H + +#include + +// 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 diff --git a/user/uart_handler.c b/user/uart_handler.c index 86f35ac..beca884 100755 --- a/user/uart_handler.c +++ b/user/uart_handler.c @@ -32,22 +32,8 @@ void ICACHE_FLASH_ATTR clear_rxtx(int uart_no) } -/** - * @brief Configure UART 115200-8-N-1 - * @param uart_no - */ -static void ICACHE_FLASH_ATTR my_uart_init(UARTn uart_no, uint32 baud) -{ - UART_SetParity(uart_no, PARITY_NONE); - UART_SetStopBits(uart_no, ONE_STOP_BIT); - UART_SetWordLength(uart_no, EIGHT_BITS); - UART_SetBaudrate(uart_no, baud); - UART_ResetFifo(uart_no); -} - - /** Configure basic UART func and pins */ -void ICACHE_FLASH_ATTR UART_Init(uint32_t baud0, uint32_t baud1) +void ICACHE_FLASH_ATTR UART_Init(void) { // U0TXD PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD); @@ -60,8 +46,10 @@ void ICACHE_FLASH_ATTR UART_Init(uint32_t baud0, uint32_t baud1) PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO2_U, FUNC_U1TXD_BK); // Configure the UART peripherals - my_uart_init(UART0, baud0); // main - my_uart_init(UART1, baud1); // debug (output only) + UART_SetWordLength(UART0, EIGHT_BITS); // main + UART_ResetFifo(UART0); + UART_SetWordLength(UART1, EIGHT_BITS); // debug (output only) + UART_ResetFifo(UART1); } /** Configure Rx on UART0 */ diff --git a/user/uart_handler.h b/user/uart_handler.h index 44fe854..2d5e57f 100755 --- a/user/uart_handler.h +++ b/user/uart_handler.h @@ -12,8 +12,8 @@ #include -/** Configure UART periphs and enable pins */ -void UART_Init(uint32_t baud0, uint32_t baud1); +/** Configure UART periphs and enable pins - does not set baud rate, parity and stopbits */ +void UART_Init(void); /** Configure async Rx on UART0 */ void UART_SetupAsyncReceiver(void); diff --git a/user/user_main.c b/user/user_main.c index 8730ff9..248db2a 100644 --- a/user/user_main.c +++ b/user/user_main.c @@ -86,12 +86,12 @@ void ICACHE_FLASH_ATTR user_init(void) static ETSTimer userStartTimer; static ETSTimer prHeapTimer; - serialInit(); + serialInitBase(); // Prevent WiFi starting and connecting by default // let wifi manager handle it wifi_station_set_auto_connect(false); - wifi_set_opmode(NULL_MODE); // save to flash if changed - this might avoid the current spike on startup? + wifi_set_opmode(NULL_MODE); // saves to flash if changed - this might avoid the current spike on startup? printf("\r\n"); banner("====== ESP8266 Remote Terminal ======"); @@ -126,30 +126,16 @@ void ICACHE_FLASH_ATTR user_init(void) static void user_start(void *unused) { - // Change AP name if AI-THINKER found (means un-initialized device) -// struct softap_config apconf; -// wifi_softap_get_config(&apconf); -// if (strstarts((char *) apconf.ssid, "AI-THINKER")) { -// warn("Un-initialized device, performing factory reset."); -// apars_handle_OSC_FactoryReset(); -// return; -// } - // Load and apply stored settings, or defaults if stored settings are invalid persist_load(); - // Captive portal (DNS redirector) + captdnsInit(); - // Server httpdInit(routes, 80); - - // The terminal screen screen_init(); // Print the CANCEL character to indicate the module has restarted // Critically important for client application if any kind of screen persistence / content re-use is needed UART_WriteChar(UART0, 24, UART_TIMEOUT_US); // 0x18 - 24 - CAN - - info("Listening on UART0, 115200-8-N-1!"); } // ---- unused funcs removed from sdk to save space --- diff --git a/user/wifimgr.c b/user/wifimgr.c index 4299b70..5cfe327 100644 --- a/user/wifimgr.c +++ b/user/wifimgr.c @@ -19,7 +19,7 @@ wifimgr_restore_defaults(void) u8 mac[6]; wifi_get_macaddr(SOFTAP_IF, mac); - wificonf->opmode = SOFTAP_MODE; + wificonf->opmode = STATIONAP_MODE; // Client+AP, so we can scan without having to enable Station wificonf->tpw = 20; wificonf->ap_channel = 1; sprintf((char *) wificonf->ap_ssid, "TERM-%02X%02X%02X", mac[3], mac[4], mac[5]); diff --git a/user/wifimgr.h b/user/wifimgr.h index 79a4246..165067d 100644 --- a/user/wifimgr.h +++ b/user/wifimgr.h @@ -13,6 +13,10 @@ #define SSID_LEN 32 #define PASSWORD_LEN 64 +// Size designed for the wifi config structure +// Must be constant to avoid corrupting user config after upgrade +#define WIFICONF_SIZE 340 + /** * A structure holding all configured WiFi parameters * and the active state. @@ -37,8 +41,28 @@ typedef struct { u8 sta_ssid[SSID_LEN]; u8 sta_password[PASSWORD_LEN]; bool sta_dhcp_enable; - struct ip_info sta_addr; + + u8 _filler[ + WIFICONF_SIZE + - 1 + - 1 + + - 1 + - SSID_LEN + - PASSWORD_LEN + - 1 + - 2 + - sizeof(struct dhcps_lease) + + - sizeof(struct ip_info) + + - SSID_LEN + - PASSWORD_LEN + - 1 + - sizeof(struct ip_info) + - 8 // padding? + ]; } WiFiConfigBundle; typedef struct {