29#if defined(CONFIG_IDF_TARGET_ESP32)
33#define TEST_BTNMTX_ROW1 GPIO_NUM_12
34#define TEST_BTNMTX_ROW2 GPIO_NUM_13
35#define TEST_BTNMTX_COL1 GPIO_NUM_26
36#define TEST_BTNMTX_COL2 GPIO_NUM_27
37#define TEST_BTNMTX_COL3 GPIO_NUM_14
40#define TEST_ROTARY_SW GPIO_NUM_34
41#define TEST_ROTARY_CLK GPIO_NUM_35
42#define TEST_ROTARY_DT GPIO_NUM_32
43#define TEST_ROTARY_ALPS_A GPIO_NUM_33
44#define TEST_ROTARY_ALPS_B GPIO_NUM_25
47#define TEST_AMTXER_SEL1 GPIO_NUM_5
48#define TEST_AMTXER_SEL2 GPIO_NUM_18
49#define TEST_AMTXER_SEL3 GPIO_NUM_19
50#define TEST_AMTXER_IN1 GPIO_NUM_4
51#define TEST_AMTXER_IN2 GPIO_NUM_16
54#define TEST_ANALOG_PIN1 GPIO_NUM_36
55#define TEST_ANALOG_PIN2 GPIO_NUM_39
58#define TEST_BATTERY_READ_ENABLE GPIO_NUM_17
59#define TEST_BATTERY_READ GPIO_NUM_15
62#define TEST_LATCH_PIN GPIO_NUM_23
65#define TEST_SR_SERIAL GPIO_NUM_36
66#define TEST_SR_LOAD GPIO_NUM_32
67#define TEST_SR_NEXT GPIO_NUM_33
70#define TEST_POWER_PIN TEST_ROTARY_SW
73#define TEST_SIMPLE_SHIFT_LIGHT_PIN GPIO_NUM_33
76#define TEST_D_OUT GPIO_NUM_21
77#define TEST_LEVEL_SHIFTER true
80#define TEST_SECONDARY_SDA SDA
81#define TEST_SECONDARY_SCL SCL
84#elif defined(CONFIG_IDF_TARGET_ESP32S3)
88#define TEST_BTNMTX_ROW1 GPIO_NUM_7
89#define TEST_BTNMTX_ROW2 GPIO_NUM_15
90#define TEST_BTNMTX_COL1 GPIO_NUM_4
91#define TEST_BTNMTX_COL2 GPIO_NUM_5
92#define TEST_BTNMTX_COL3 GPIO_NUM_6
95#define TEST_ROTARY_SW GPIO_NUM_10
96#define TEST_ROTARY_CLK GPIO_NUM_12
97#define TEST_ROTARY_DT GPIO_NUM_11
98#define TEST_ROTARY_ALPS_A GPIO_NUM_1
99#define TEST_ROTARY_ALPS_B GPIO_NUM_38
102#define TEST_AMTXER_SEL1 GPIO_NUM_21
103#define TEST_AMTXER_SEL2 GPIO_NUM_47
104#define TEST_AMTXER_SEL3 GPIO_NUM_48
105#define TEST_AMTXER_IN1 GPIO_NUM_16
106#define TEST_AMTXER_IN2 GPIO_NUM_17
109#define TEST_ANALOG_PIN1 GPIO_NUM_13
110#define TEST_ANALOG_PIN2 GPIO_NUM_14
113#define TEST_BATTERY_READ_ENABLE GPIO_NUM_42
114#define TEST_BATTERY_READ GPIO_NUM_2
117#define TEST_LATCH_PIN GPIO_NUM_18
120#define TEST_SR_SERIAL GPIO_NUM_41
121#define TEST_SR_LOAD GPIO_NUM_39
122#define TEST_SR_NEXT GPIO_NUM_40
125#define TEST_POWER_PIN TEST_ROTARY_SW
128#define TEST_SIMPLE_SHIFT_LIGHT_PIN GPIO_NUM_40
131#define TEST_SECONDARY_SDA GPIO_NUM_21
132#define TEST_SECONDARY_SCL GPIO_NUM_47
135#define TEST_D_OUT GPIO_NUM_39
136#define TEST_LEVEL_SHIFTER false
139#elif defined(CONFIG_IDF_TARGET_ESP32C3)
142#warning The ESP32C3 board is not configured for most test
145#define TEST_BTNMTX_ROW1 GPIO_NUM_NC
146#define TEST_BTNMTX_ROW2 GPIO_NUM_NC
147#define TEST_BTNMTX_COL1 GPIO_NUM_NC
148#define TEST_BTNMTX_COL2 GPIO_NUM_NC
149#define TEST_BTNMTX_COL3 GPIO_NUM_NC
152#define TEST_ROTARY_SW GPIO_NUM_NC
153#define TEST_ROTARY_CLK GPIO_NUM_NC
154#define TEST_ROTARY_DT GPIO_NUM_NC
155#define TEST_ROTARY_ALPS_A GPIO_NUM_NC
156#define TEST_ROTARY_ALPS_B GPIO_NUM_NC
159#define TEST_AMTXER_SEL1 GPIO_NUM_NC
160#define TEST_AMTXER_SEL2 GPIO_NUM_NC
161#define TEST_AMTXER_SEL3 GPIO_NUM_NC
162#define TEST_AMTXER_IN1 GPIO_NUM_NC
163#define TEST_AMTXER_IN2 GPIO_NUM_NC
166#define TEST_ANALOG_PIN1 GPIO_NUM_NC
167#define TEST_ANALOG_PIN2 GPIO_NUM_NC
170#define TEST_BATTERY_READ_ENABLE GPIO_NUM_NC
171#define TEST_BATTERY_READ GPIO_NUM_NC
174#define TEST_LATCH_PIN GPIO_NUM_NC
177#define TEST_SR_SERIAL GPIO_NUM_NC
178#define TEST_SR_LOAD GPIO_NUM_NC
179#define TEST_SR_NEXT GPIO_NUM_NC
182#define TEST_POWER_PIN GPIO_NUM_2
185#define TEST_SIMPLE_SHIFT_LIGHT_PIN GPIO_NUM_NC
190#error Board not configured for testing in this project
200#define TEST_LATCH_MODE PowerLatchMode::POWER_OPEN_DRAIN
201#define TEST_LATCH_DELAY 5000
204#define TEST_SR_BUTTONS_COUNT 17
207#define MCP23017_I2C_ADDR3 7
208#define PCF8574_I2C_ADDR3 0
220inline void debugPrintBegin()
222 Serial0.begin(115200);
223#if ARDUINO_USB_CDC_ON_BOOT && !ARDUINO_USB_MODE
224 USBSerial.begin(115200);
226#if ARDUINO_USB_CDC_ON_BOOT && ARDUINO_USB_MODE
227 HWCDCSerial.begin(115200);
231inline void debugPrintf(
const char *format, ...)
234 va_start(args, format);
235 Serial0.vprintf(format, args);
236#if ARDUINO_USB_CDC_ON_BOOT && !ARDUINO_USB_MODE
237 USBSerial.vprintf(format, args);
239#if ARDUINO_USB_CDC_ON_BOOT && ARDUINO_USB_MODE
240 HWCDCSerial.vprintf(format, args);
245inline void debugPrintBool(uint64_t state, uint8_t bitCount = 0)
247 int maxBitCount = (
sizeof(uint64_t) * 8);
248 if ((bitCount == 0) || (bitCount > maxBitCount))
249 bitCount = maxBitCount;
250 for (
int i = (bitCount - 1); i >= 0; i--)
252 if ((1ULL << i) & state)
262 instance[TEST_BTNMTX_ROW1][TEST_BTNMTX_COL3] = 2;
263 instance[TEST_BTNMTX_ROW2][TEST_BTNMTX_COL3] = 3;
264 instance[TEST_BTNMTX_ROW2][TEST_BTNMTX_COL2] = 4;
265 instance[TEST_BTNMTX_ROW1][TEST_BTNMTX_COL2] = 5;
266 instance[TEST_BTNMTX_ROW1][TEST_BTNMTX_COL1] = 6;
267 instance[TEST_BTNMTX_ROW2][TEST_BTNMTX_COL1] = 7;
272 return {TEST_AMTXER_SEL1, TEST_AMTXER_SEL2, TEST_AMTXER_SEL3};
278 chip1[Mux8Pin::A0] = 20;
279 chip1[Mux8Pin::A7] = 21;
280 chip2[Mux8Pin::A3] = 22;
281 chip2[Mux8Pin::A5] = 23;
282 instance = {chip1, chip2};
288 chip1[SR8Pin::E] = 2;
289 chip1[SR8Pin::B] = 4;
290 chip2[SR8Pin::H] = 3;
291 chip2[SR8Pin::C] = 5;
293 instance = {chip1, chip2};
298 instance[MCP23017Pin::GPA0] = 10;
299 instance[MCP23017Pin::GPA1] = 11;
300 instance[MCP23017Pin::GPA2] = 12;
301 instance[MCP23017Pin::GPA3] = 13;
302 instance[MCP23017Pin::GPA4] = 14;
303 instance[MCP23017Pin::GPA5] = 15;
304 instance[MCP23017Pin::GPA6] = 16;
305 instance[MCP23017Pin::GPA7] = 17;
306 instance[MCP23017Pin::GPB0] = 20;
307 instance[MCP23017Pin::GPB1] = 21;
308 instance[MCP23017Pin::GPB2] = 22;
309 instance[MCP23017Pin::GPB3] = 23;
310 instance[MCP23017Pin::GPB4] = 24;
311 instance[MCP23017Pin::GPB5] = 25;
312 instance[MCP23017Pin::GPB6] = 26;
313 instance[MCP23017Pin::GPB7] = 27;
318 instance[PCF8574Pin::P0] = 30;
319 instance[PCF8574Pin::P1] = 31;
320 instance[PCF8574Pin::P2] = 32;
321 instance[PCF8574Pin::P3] = 33;
322 instance[PCF8574Pin::P4] = 34;
323 instance[PCF8574Pin::P5] = 35;
324 instance[PCF8574Pin::P6] = 36;
325 instance[PCF8574Pin::P7] = 37;
std::vector< OutputGPIO > OutputGPIOCollection
Collection of output GPIOs.
Generic analog multiplexer chip.