Merge branch 'main' into recovery-mode
This commit is contained in:
commit
e31d33273a
|
@ -1,3 +1,3 @@
|
|||
#pragma once
|
||||
|
||||
#define SDK_VESRION "2.6.0"
|
||||
#define SDK_VESRION "2.6.1"
|
|
@ -27,7 +27,7 @@ bool ESPMegaPRO::begin()
|
|||
fram.begin(FRAM_ADDRESS);
|
||||
Serial.begin(115200);
|
||||
this->installCard(1, &outputs);
|
||||
outputs.bindFRAM(&fram, 0);
|
||||
outputs.bindFRAM(&fram, 0);
|
||||
uint8_t outputPinMap[16] = {8, 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6, 7};
|
||||
outputs.loadPinMap(outputPinMap);
|
||||
outputs.loadFromFRAM();
|
||||
|
@ -40,6 +40,40 @@ bool ESPMegaPRO::begin()
|
|||
}
|
||||
uint8_t inputPinMap[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 14, 13, 12};
|
||||
inputs.loadPinMap(inputPinMap);
|
||||
// Detect GPIO2 Reset
|
||||
gpio_num_t buttonPin = GPIO_NUM_2;
|
||||
gpio_pad_select_gpio(buttonPin);
|
||||
gpio_set_direction(buttonPin, GPIO_MODE_INPUT);
|
||||
gpio_set_pull_mode(buttonPin, GPIO_PULLUP_ONLY);
|
||||
if (gpio_get_level(buttonPin) == 0)
|
||||
{
|
||||
ESP_LOGW("ESPMegaPRO", "GPIO2 is low, if this condition persists for 5 more seconds, the device will factory reset");
|
||||
bool shouldReset = true;
|
||||
for (int i = 0; i < 50; i++)
|
||||
{
|
||||
vTaskDelay(100 / portTICK_PERIOD_MS);
|
||||
if (gpio_get_level(buttonPin) == 1)
|
||||
{
|
||||
ESP_LOGI("ESPMegaPRO", "Reset condition cleared, Continuing boot process");
|
||||
shouldReset = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (shouldReset)
|
||||
{
|
||||
ESP_LOGW("ESPMegaPRO", "Reset condition met, Factory Resetting device");
|
||||
for (int i = 0; i < fram.getSizeBytes(); i++)
|
||||
{
|
||||
if (i % 1024 == 0)
|
||||
ESP_LOGV("ESPMegaPRO", "Clearing FRAM Address %d", i);
|
||||
fram.write8(i, 0);
|
||||
}
|
||||
ESP_LOGI("ESPMegaPRO", "Factory Reset Complete");
|
||||
ESP_LOGI("ESPMegaPRO", "Rebooting device");
|
||||
esp_restart();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue