mirror of
https://github.com/rstrouse/ESPSomfy-RTS.git
synced 2026-10-31 13:52:15 +01:00
GPIO2 on the original ESP32, 46 on the S2/S3 and 8 on the C3/C6 don't stop a normal boot, but held at the wrong level at reset they keep esptool from starting the download mode. The WT32-ETH01 wiring puts TX on GPIO2. Each warning now says what the pin does and what to do: move it for a pin that stops the boot, disconnect it to flash for one that only blocks USB. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
#include <unity.h>
|
|
#include <string.h>
|
|
// No target defined: the original ESP32.
|
|
#include "BootPins.h"
|
|
|
|
void setUp() {}
|
|
void tearDown() {}
|
|
|
|
static void test_gpio12_picks_the_flash_voltage() {
|
|
// Issue #34: a CC1101 holding GDO2 high on GPIO12 at power-up.
|
|
const char *effect = bootPinEffect(12);
|
|
TEST_ASSERT_NOT_NULL(effect);
|
|
TEST_ASSERT_NOT_NULL(strstr(effect, "1.8 V"));
|
|
}
|
|
|
|
static void test_gpio0_picks_the_boot_mode() {
|
|
const char *effect = bootPinEffect(0);
|
|
TEST_ASSERT_NOT_NULL(effect);
|
|
TEST_ASSERT_NOT_NULL(strstr(effect, "download mode"));
|
|
}
|
|
|
|
static void test_gpio2_blocks_flashing_over_usb() {
|
|
// It only counts with GPIO0 low, so the board boots, but esptool can't
|
|
// start the download mode while it is high.
|
|
const char *effect = bootPinEffect(2);
|
|
TEST_ASSERT_NOT_NULL(effect);
|
|
TEST_ASSERT_NOT_NULL(strstr(effect, "high"));
|
|
TEST_ASSERT_NOT_NULL(strstr(effect, "USB"));
|
|
}
|
|
|
|
static void test_harmless_strapping_pins_are_not_listed() {
|
|
// 5 and 15 set the SDIO timing and quiet the boot log. 5 is the default
|
|
// CSN.
|
|
TEST_ASSERT_NULL(bootPinEffect(5));
|
|
TEST_ASSERT_NULL(bootPinEffect(15));
|
|
}
|
|
|
|
static void test_default_radio_pins_are_safe() {
|
|
// transceiver_config_t::load()'s defaults for the original ESP32.
|
|
const uint8_t pins[] = {13, 35, 23, 19, 18, 5};
|
|
for(uint8_t pin : pins) TEST_ASSERT_NULL_MESSAGE(bootPinEffect(pin), "default radio pin");
|
|
}
|
|
|
|
static void test_other_chips_boot_pins_are_safe_here() {
|
|
TEST_ASSERT_NULL(bootPinEffect(8));
|
|
TEST_ASSERT_NULL(bootPinEffect(9));
|
|
TEST_ASSERT_NULL(bootPinEffect(45));
|
|
TEST_ASSERT_NULL(bootPinEffect(46));
|
|
}
|
|
|
|
int main(int, char **) {
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_gpio12_picks_the_flash_voltage);
|
|
RUN_TEST(test_gpio0_picks_the_boot_mode);
|
|
RUN_TEST(test_gpio2_blocks_flashing_over_usb);
|
|
RUN_TEST(test_harmless_strapping_pins_are_not_listed);
|
|
RUN_TEST(test_default_radio_pins_are_safe);
|
|
RUN_TEST(test_other_chips_boot_pins_are_safe_here);
|
|
return UNITY_END();
|
|
}
|