* fix(board): Update variant.cpp for senseBox MCU-S2 ESP32-S2 * fix(board): translate comments * ci(pre-commit): Apply automatic fixes * fix(board): translate comments * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
72 lines
1.9 KiB
C++
72 lines
1.9 KiB
C++
#include "esp32-hal-gpio.h"
|
|
#include "pins_arduino.h"
|
|
#include "esp_partition.h"
|
|
#include "esp_system.h"
|
|
#include "esp_ota_ops.h"
|
|
#include "esp_log.h"
|
|
#include <esp_chip_info.h>
|
|
|
|
extern "C" {
|
|
|
|
// Initialize variant/board, called before setup()
|
|
void initVariant(void) {
|
|
//enable IO Pins by default
|
|
pinMode(IO_ENABLE, OUTPUT);
|
|
digitalWrite(IO_ENABLE, LOW);
|
|
|
|
//reset RGB
|
|
pinMode(PIN_RGB_LED, OUTPUT);
|
|
digitalWrite(PIN_RGB_LED, LOW);
|
|
|
|
//enable XBEE by default
|
|
pinMode(PIN_XB1_ENABLE, OUTPUT);
|
|
digitalWrite(PIN_XB1_ENABLE, LOW);
|
|
|
|
//enable UART only for chip without PSRAM
|
|
esp_chip_info_t chip_info;
|
|
esp_chip_info(&chip_info);
|
|
if (chip_info.revision <= 0) {
|
|
pinMode(PIN_UART_ENABLE, OUTPUT);
|
|
digitalWrite(PIN_UART_ENABLE, LOW);
|
|
}
|
|
|
|
//enable PD-Sensor by default
|
|
pinMode(PD_ENABLE, OUTPUT);
|
|
digitalWrite(PD_ENABLE, HIGH);
|
|
|
|
// define button pin
|
|
const int PIN_BUTTON = 0;
|
|
pinMode(PIN_BUTTON, INPUT_PULLUP);
|
|
|
|
// keep button pressed
|
|
unsigned long pressStartTime = 0;
|
|
bool buttonPressed = false;
|
|
|
|
// Wait 5 seconds for the button to be pressed
|
|
unsigned long startTime = millis();
|
|
|
|
// Check if button is pressed
|
|
while (millis() - startTime < 5000) {
|
|
if (digitalRead(PIN_BUTTON) == LOW) {
|
|
if (!buttonPressed) {
|
|
// The button was pressed
|
|
buttonPressed = true;
|
|
}
|
|
} else if (buttonPressed) {
|
|
// When the button is pressed and then released, boot into the OTA1 partition
|
|
const esp_partition_t *ota1_partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, NULL);
|
|
|
|
if (ota1_partition) {
|
|
esp_err_t err = esp_ota_set_boot_partition(ota1_partition);
|
|
if (err == ESP_OK) {
|
|
esp_restart(); // restart, to boot OTA1 partition
|
|
} else {
|
|
ESP_LOGE("OTA", "Error setting OTA1 partition: %s", esp_err_to_name(err));
|
|
}
|
|
}
|
|
// Abort after releasing the button
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|