blinking indication of BOOT held down; added info to the help page
This commit is contained in:
+6
-3
@@ -18,9 +18,12 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Communication UART on pins <b>Rx, Tx</b> at 115200-8-1-N</li>
|
<li>Communication UART on pins <b>Rx, Tx</b> at 115200-8-1-N</li>
|
||||||
<li>Debug log on pin <b>GPIO2</b> at 115200-8-1-N</li>
|
<li>Debug log on pin <b>GPIO2</b> at 115200-8-1-N</li>
|
||||||
<li>Use 3.3V logic, or 5V with protection resistors (10k)</li>
|
<li>Use 3.3V logic, or 5V with protection resistors (470R or more)</li>
|
||||||
|
<li>If the "LVD" LED on the ESP Term board lights up, the module doesn't get enough power. Check your connections.</li>
|
||||||
<li>Connect Rx and Tx with a piece of wire to test the terminal alone, you should see what you type in the browser.
|
<li>Connect Rx and Tx with a piece of wire to test the terminal alone, you should see what you type in the browser.
|
||||||
NOTE: This won't work if your ESP8266 board has a built-in USB-serial.</li>
|
NOTE: This won't work if your ESP8266 board has a built-in USB-serial (like NodeMCU).</li>
|
||||||
|
<li>For best performance, use the module in the Client mode. In AP mode, check that the channel used is clear;
|
||||||
|
interference may cause lag in the terminal.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -32,6 +35,7 @@
|
|||||||
<li>The max screen size is 2000 characters (eg. <b>25x80</b>), default is <b>10x26</b>. Set using <code>\e]W<rows>;<cols>\a</code>.</li>
|
<li>The max screen size is 2000 characters (eg. <b>25x80</b>), default is <b>10x26</b>. Set using <code>\e]W<rows>;<cols>\a</code>.</li>
|
||||||
<li>The screen will automatically scroll, can be used for log output.</li>
|
<li>The screen will automatically scroll, can be used for log output.</li>
|
||||||
<li>Display update is sent <b>after 20 ms of inactivity</b>.</li>
|
<li>Display update is sent <b>after 20 ms of inactivity</b>.</li>
|
||||||
|
<li>At most 4 clients can be connected at the same time.</li>
|
||||||
<li>The browser display needs WebSockets for the real-time updating. It may not work on really old phones / browsers.</li>
|
<li>The browser display needs WebSockets for the real-time updating. It may not work on really old phones / browsers.</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -104,7 +108,6 @@
|
|||||||
|
|
||||||
<p>
|
<p>
|
||||||
<b>Mouse input</b> (click/tap) is sent as <code>\e[<y>;<x>M</code>. You can use this for on-screen buttons, menu navigation etc.
|
<b>Mouse input</b> (click/tap) is sent as <code>\e[<y>;<x>M</code>. You can use this for on-screen buttons, menu navigation etc.
|
||||||
<i>Please note this is a custom escape sequence, not supported by PuTTY or other terminals.</i>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -50,8 +50,8 @@
|
|||||||
<tr><td colspan=2 style="white-space: normal;">
|
<tr><td colspan=2 style="white-space: normal;">
|
||||||
<p>Some changes require a reboot, dropping connection. It can take a while to re-connect.</p>
|
<p>Some changes require a reboot, dropping connection. It can take a while to re-connect.</p>
|
||||||
<p>
|
<p>
|
||||||
<b>If you lose access</b>, connect GPIO0 to GND for 5 seconds to enter Client+AP mode.
|
<b>If you lose access</b>, hold the BOOT button for 2 seconds (the Tx LED starts blinking) to re-enable AP mode.
|
||||||
If that fails, try the UART factory reset command "<code>\e]FR\a</code>".
|
If that fails, hold the BOOT button for over 5 seconds (rapid Tx LED flashing) to perform a factory reset.
|
||||||
<p>
|
<p>
|
||||||
</td></tr>
|
</td></tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@@ -232,7 +232,9 @@ apars_handle_RESET_cmd(void)
|
|||||||
void ICACHE_FLASH_ATTR
|
void ICACHE_FLASH_ATTR
|
||||||
apars_handle_OSC_FactoryReset(void)
|
apars_handle_OSC_FactoryReset(void)
|
||||||
{
|
{
|
||||||
info("OSC: Factory reset");
|
warn("-------- Factory reset --------");
|
||||||
|
|
||||||
|
dbg("Switching to Client+AP mode");
|
||||||
|
|
||||||
// Send acknowledgement message to UART0
|
// Send acknowledgement message to UART0
|
||||||
// User is performing this manually, so we can just print it as string
|
// User is performing this manually, so we can just print it as string
|
||||||
@@ -248,10 +250,12 @@ apars_handle_OSC_FactoryReset(void)
|
|||||||
wifi_set_opmode(STATIONAP_MODE);
|
wifi_set_opmode(STATIONAP_MODE);
|
||||||
|
|
||||||
// --- AP config ---
|
// --- AP config ---
|
||||||
|
dbg("AP WiFi channel: 6");
|
||||||
|
|
||||||
struct softap_config apconf;
|
struct softap_config apconf;
|
||||||
wifi_softap_get_config(&apconf);
|
wifi_softap_get_config(&apconf);
|
||||||
apconf.authmode=AUTH_OPEN; // Disable access protection
|
apconf.authmode=AUTH_OPEN; // Disable access protection
|
||||||
apconf.channel=1; // Reset channel; user may have set bad channel in the UI
|
apconf.channel=6; // Reset channel; user may have set bad channel in the UI
|
||||||
|
|
||||||
// generate unique AP name
|
// generate unique AP name
|
||||||
u8 mac[6];
|
u8 mac[6];
|
||||||
@@ -259,7 +263,11 @@ apars_handle_OSC_FactoryReset(void)
|
|||||||
sprintf((char*)apconf.ssid, "TERM-%02X%02X%02X", mac[3], mac[4], mac[5]);
|
sprintf((char*)apconf.ssid, "TERM-%02X%02X%02X", mac[3], mac[4], mac[5]);
|
||||||
apconf.ssid_len = (u8)strlen((char*)apconf.ssid);
|
apconf.ssid_len = (u8)strlen((char*)apconf.ssid);
|
||||||
|
|
||||||
|
info("New AP name: %s", (char*)apconf.ssid);
|
||||||
|
|
||||||
// --- Station ---
|
// --- Station ---
|
||||||
|
dbg("Erasing stored WiFi credentials...");
|
||||||
|
|
||||||
struct station_config staconf;
|
struct station_config staconf;
|
||||||
wifi_station_get_config(&staconf);
|
wifi_station_get_config(&staconf);
|
||||||
|
|
||||||
@@ -268,12 +276,16 @@ apars_handle_OSC_FactoryReset(void)
|
|||||||
staconf.bssid_set=0;
|
staconf.bssid_set=0;
|
||||||
staconf.password[0]=0;
|
staconf.password[0]=0;
|
||||||
|
|
||||||
|
dbg("Commiting changes...");
|
||||||
wifi_softap_set_config(&apconf);
|
wifi_softap_set_config(&apconf);
|
||||||
wifi_station_set_config(&staconf);
|
wifi_station_set_config(&staconf);
|
||||||
|
|
||||||
UART_WriteString(UART0, "Factory Reset complete, device reset.\r\n\r\n", UART_TIMEOUT_US);
|
UART_WriteString(UART0, "Factory Reset complete, device reset.\r\n\r\n", UART_TIMEOUT_US);
|
||||||
|
|
||||||
// Reboot to clean STA+AP mode with Channel 1 & reset AP SSID.
|
info("*** FACTORY RESET COMPLETE ***");
|
||||||
|
dbg("Device reset...");
|
||||||
|
|
||||||
|
// Reboot to clean STA+AP mode with Channel X & reset AP SSID.
|
||||||
system_restart();
|
system_restart();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <esp8266.h>
|
#include <esp8266.h>
|
||||||
|
#include "ansi_parser_callbacks.h"
|
||||||
|
|
||||||
#define BTNGPIO 0
|
#define BTNGPIO 0
|
||||||
|
|
||||||
@@ -17,16 +18,59 @@
|
|||||||
static bool enable_ap_button = false;
|
static bool enable_ap_button = false;
|
||||||
|
|
||||||
static ETSTimer resetBtntimer;
|
static ETSTimer resetBtntimer;
|
||||||
|
static ETSTimer blinkyTimer;
|
||||||
|
|
||||||
|
static void ICACHE_FLASH_ATTR bootHoldIndicatorTimerCb(void *arg) {
|
||||||
|
static bool state = true;
|
||||||
|
|
||||||
|
if (GPIO_INPUT_GET(BTNGPIO)) {
|
||||||
|
// if user released, shut up
|
||||||
|
state = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state) {
|
||||||
|
GPIO_OUTPUT_SET(1, 1);
|
||||||
|
} else {
|
||||||
|
GPIO_OUTPUT_SET(1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
state = !state;
|
||||||
|
}
|
||||||
|
|
||||||
static void ICACHE_FLASH_ATTR resetBtnTimerCb(void *arg) {
|
static void ICACHE_FLASH_ATTR resetBtnTimerCb(void *arg) {
|
||||||
static int resetCnt=0;
|
static int resetCnt=0;
|
||||||
if (enable_ap_button && !GPIO_INPUT_GET(BTNGPIO)) {
|
if (enable_ap_button && !GPIO_INPUT_GET(BTNGPIO)) {
|
||||||
resetCnt++;
|
resetCnt++;
|
||||||
|
|
||||||
|
// indicating AP reset
|
||||||
|
if (resetCnt == 2) {
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);
|
||||||
|
GPIO_OUTPUT_SET(1, 0); // GPIO 1 OFF
|
||||||
|
|
||||||
|
os_timer_disarm(&blinkyTimer);
|
||||||
|
os_timer_setfn(&blinkyTimer, bootHoldIndicatorTimerCb, NULL);
|
||||||
|
os_timer_arm(&blinkyTimer, 500, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// indicating we'll perform a factory reset
|
||||||
|
if (resetCnt == 10) {
|
||||||
|
os_timer_disarm(&blinkyTimer);
|
||||||
|
os_timer_setfn(&blinkyTimer, bootHoldIndicatorTimerCb, NULL);
|
||||||
|
os_timer_arm(&blinkyTimer, 100, 1);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (resetCnt>=6) { //3 sec pressed
|
// Switch Tx back to UART pin, so we can print our farewells
|
||||||
|
PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD);
|
||||||
|
|
||||||
|
if (resetCnt>=10) { //5 secs pressed - FR
|
||||||
|
info("BOOT-button triggered FACTORY RESET!");
|
||||||
|
apars_handle_OSC_FactoryReset();
|
||||||
|
}
|
||||||
|
else if (resetCnt>=2) { //1 sec pressed
|
||||||
wifi_station_disconnect();
|
wifi_station_disconnect();
|
||||||
wifi_set_opmode(STATIONAP_MODE); //reset to AP+STA mode
|
wifi_set_opmode(STATIONAP_MODE); //reset to AP+STA mode
|
||||||
info("Reset to AP mode from GPIO0, Restarting system...");
|
info("BOOT-button triggered reset to AP mode, restarting...");
|
||||||
|
|
||||||
system_restart();
|
system_restart();
|
||||||
}
|
}
|
||||||
resetCnt=0;
|
resetCnt=0;
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
#ifndef USER_MAIN_H_H
|
#ifndef USER_MAIN_H_H
|
||||||
#define USER_MAIN_H_H
|
#define USER_MAIN_H_H
|
||||||
|
|
||||||
#define FIRMWARE_VERSION "0.5.4"
|
#define FIRMWARE_VERSION "0.5.5"
|
||||||
#define TERMINAL_GITHUB_REPO "https://github.com/MightyPork/esp-vt100-firmware"
|
#define TERMINAL_GITHUB_REPO "https://github.com/MightyPork/esp-vt100-firmware"
|
||||||
|
|
||||||
#endif //USER_MAIN_H_H
|
#endif //USER_MAIN_H_H
|
||||||
|
|||||||
Reference in New Issue
Block a user