blinking indication of BOOT held down; added info to the help page

This commit is contained in:
2017-03-21 20:00:48 +01:00
parent 97044c2a17
commit ab00467914
5 changed files with 70 additions and 11 deletions
+15 -3
View File
@@ -232,7 +232,9 @@ apars_handle_RESET_cmd(void)
void ICACHE_FLASH_ATTR
apars_handle_OSC_FactoryReset(void)
{
info("OSC: Factory reset");
warn("-------- Factory reset --------");
dbg("Switching to Client+AP mode");
// Send acknowledgement message to UART0
// 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);
// --- AP config ---
dbg("AP WiFi channel: 6");
struct softap_config apconf;
wifi_softap_get_config(&apconf);
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
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]);
apconf.ssid_len = (u8)strlen((char*)apconf.ssid);
info("New AP name: %s", (char*)apconf.ssid);
// --- Station ---
dbg("Erasing stored WiFi credentials...");
struct station_config staconf;
wifi_station_get_config(&staconf);
@@ -268,12 +276,16 @@ apars_handle_OSC_FactoryReset(void)
staconf.bssid_set=0;
staconf.password[0]=0;
dbg("Commiting changes...");
wifi_softap_set_config(&apconf);
wifi_station_set_config(&staconf);
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();
}
+46 -2
View File
@@ -10,6 +10,7 @@
#include <esp8266.h>
#include "ansi_parser_callbacks.h"
#define BTNGPIO 0
@@ -17,16 +18,59 @@
static bool enable_ap_button = false;
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 int resetCnt=0;
if (enable_ap_button && !GPIO_INPUT_GET(BTNGPIO)) {
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 {
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_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();
}
resetCnt=0;
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef 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"
#endif //USER_MAIN_H_H