diff --git a/boards/_base/ic/rtl8710bn.json b/boards/_base/ic/rtl8710bn.json index 7a376d4..0a3d6e7 100644 --- a/boards/_base/ic/rtl8710bn.json +++ b/boards/_base/ic/rtl8710bn.json @@ -92,6 +92,7 @@ }, "27": { "C_NAME": "AD_2", + "GPIONUM": 41, "IO": "I", "ADC": 2 }, diff --git a/boards/variants/bw12.cpp b/boards/variants/bw12.c similarity index 71% rename from boards/variants/bw12.cpp rename to boards/variants/bw12.c index 10b1ac9..8b631e6 100644 --- a/boards/variants/bw12.cpp +++ b/boards/variants/bw12.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA05, PWM4, WAKE1 {PA_5, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA29, UART2_RX, I2C0_SCL, PWM4 @@ -33,6 +31,18 @@ PinInfo pinTable[PINS_COUNT] = { // D10: PA23, UART0_TX, SPI0_MOSI, SPI1_MOSI, I2C1_SDA, SD_D1, PWM0, WAKE3 {PA_23, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[2]), // PA_0 (D2) + [5] = &(lt_arduino_pin_info_list[0]), // PA_5 (D0) + [12] = &(lt_arduino_pin_info_list[7]), // PA_12 (D7) + [14] = &(lt_arduino_pin_info_list[6]), // PA_14 (D6) + [15] = &(lt_arduino_pin_info_list[8]), // PA_15 (D8) + [18] = &(lt_arduino_pin_info_list[9]), // PA_18 (D9) + [19] = &(lt_arduino_pin_info_list[3]), // PA_19 (D3) + [22] = &(lt_arduino_pin_info_list[4]), // PA_22 (D4) + [23] = &(lt_arduino_pin_info_list[10]), // PA_23 (D10) + [29] = &(lt_arduino_pin_info_list[1]), // PA_29 (D1) + [30] = &(lt_arduino_pin_info_list[5]), // PA_30 (D5) +}; +// clang-format on diff --git a/boards/variants/bw12.h b/boards/variants/bw12.h index 8eac368..130f383 100644 --- a/boards/variants/bw12.h +++ b/boards/variants/bw12.h @@ -6,82 +6,118 @@ // Pins // ---- -#define PINS_COUNT 11 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 3u // PA_19 -#define A0 PIN_A0 +#define PINS_COUNT 11 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 30 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 3u // PA_19 -#define PIN_SPI0_MISO 4u // PA_22 -#define PIN_SPI0_MOSI 10u // PA_23 -#define PIN_SPI0_SCK 9u // PA_18 -#define PIN_SPI1_CS 3u // PA_19 -#define PIN_SPI1_MISO 4u // PA_22 -#define PIN_SPI1_MOSI 10u // PA_23 -#define PIN_SPI1_SCK 9u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 1u // PA_29 -#define PIN_WIRE0_SCL_1 4u // PA_22 -#define PIN_WIRE0_SDA_0 3u // PA_19 -#define PIN_WIRE0_SDA_1 5u // PA_30 -#define PIN_WIRE1_SCL 9u // PA_18 -#define PIN_WIRE1_SDA 10u // PA_23 +#define PIN_WIRE0_SCL_0 29u // PA_29 +#define PIN_WIRE0_SCL_1 22u // PA_22 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 3u // PA_19 -#define PIN_SERIAL0_RTS 4u // PA_22 -#define PIN_SERIAL0_RX 9u // PA_18 -#define PIN_SERIAL0_TX 10u // PA_23 -#define PIN_SERIAL2_RX 1u // PA_29 -#define PIN_SERIAL2_TX 5u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 3u // PA_19 -#define PIN_CS0 3u // PA_19 -#define PIN_CS1 3u // PA_19 -#define PIN_CTS0 3u // PA_19 -#define PIN_MISO0 4u // PA_22 -#define PIN_MISO1 4u // PA_22 -#define PIN_MOSI0 10u // PA_23 -#define PIN_MOSI1 10u // PA_23 -#define PIN_PA00 2u // PA_0 -#define PIN_PA05 0u // PA_5 -#define PIN_PA12 7u // PA_12 -#define PIN_PA14 6u // PA_14 -#define PIN_PA15 8u // PA_15 -#define PIN_PA18 9u // PA_18 -#define PIN_PA19 3u // PA_19 -#define PIN_PA22 4u // PA_22 -#define PIN_PA23 10u // PA_23 -#define PIN_PA29 1u // PA_29 -#define PIN_PA30 5u // PA_30 -#define PIN_RTS0 4u // PA_22 -#define PIN_RX0 9u // PA_18 -#define PIN_RX2 1u // PA_29 -#define PIN_SCK0 9u // PA_18 -#define PIN_SCK1 9u // PA_18 -#define PIN_TX0 10u // PA_23 -#define PIN_TX2 5u // PA_30 +#define PIN_ADC1 19u // PA_19 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 30u // PA_30 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 22u // PA_22 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 5u // PA_5 +#define PIN_D1 29u // PA_29 +#define PIN_D2 0u // PA_0 +#define PIN_D3 19u // PA_19 +#define PIN_D4 22u // PA_22 +#define PIN_D5 30u // PA_30 +#define PIN_D6 14u // PA_14 +#define PIN_D7 12u // PA_12 +#define PIN_D8 15u // PA_15 +#define PIN_D9 18u // PA_18 +#define PIN_D10 23u // PA_23 +#define PIN_A0 19u // PA_19 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/bw15.cpp b/boards/variants/bw15.c similarity index 71% rename from boards/variants/bw15.cpp rename to boards/variants/bw15.c index d098bcb..a769d26 100644 --- a/boards/variants/bw15.cpp +++ b/boards/variants/bw15.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA17, SD_CMD, PWM5 {PIN_A17, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA18, SD_CLK, PWM6 @@ -37,6 +35,20 @@ PinInfo pinTable[PINS_COUNT] = { // D12: PA14, SD_INT, UART0_TX, PWM2 {PIN_A14, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[8]), // PIN_A0 (D8) + [1] = &(lt_arduino_pin_info_list[10]), // PIN_A1 (D10) + [2] = &(lt_arduino_pin_info_list[2]), // PIN_A2 (D2) + [3] = &(lt_arduino_pin_info_list[9]), // PIN_A3 (D9) + [4] = &(lt_arduino_pin_info_list[4]), // PIN_A4 (D4) + [13] = &(lt_arduino_pin_info_list[11]), // PIN_A13 (D11) + [14] = &(lt_arduino_pin_info_list[12]), // PIN_A14 (D12) + [15] = &(lt_arduino_pin_info_list[3]), // PIN_A15 (D3) + [16] = &(lt_arduino_pin_info_list[7]), // PIN_A16 (D7) + [17] = &(lt_arduino_pin_info_list[0]), // PIN_A17 (D0) + [18] = &(lt_arduino_pin_info_list[1]), // PIN_A18 (D1) + [19] = &(lt_arduino_pin_info_list[5]), // PIN_A19 (D5) + [20] = &(lt_arduino_pin_info_list[6]), // PIN_A20 (D6) +}; +// clang-format on diff --git a/boards/variants/bw15.h b/boards/variants/bw15.h index e5d8771..eb1f647 100644 --- a/boards/variants/bw15.h +++ b/boards/variants/bw15.h @@ -6,70 +6,123 @@ // Pins // ---- -#define PINS_COUNT 13 -#define NUM_DIGITAL_PINS 13 -#define NUM_ANALOG_OUTPUTS 0 +#define PINS_COUNT 13 // Total GPIO count +#define NUM_DIGITAL_PINS 13 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 0 // ADC inputs +#define NUM_ANALOG_OUTPUTS 13 // PWM & DAC outputs +#define PINS_GPIO_MAX 20 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 1 -#define PIN_SPI0_CS_0 2u // PIN_A2 -#define PIN_SPI0_CS_1 3u // PIN_A15 -#define PIN_SPI0_MISO 6u // PIN_A20 -#define PIN_SPI0_MOSI_0 4u // PIN_A4 -#define PIN_SPI0_MOSI_1 5u // PIN_A19 -#define PIN_SPI0_SCK_0 7u // PIN_A16 -#define PIN_SPI0_SCK_1 9u // PIN_A3 +#define PIN_SPI0_CS_0 2u // PIN_A2 +#define PIN_SPI0_CS_1 15u // PIN_A15 +#define PIN_SPI0_MISO 20u // PIN_A20 +#define PIN_SPI0_MOSI_0 4u // PIN_A4 +#define PIN_SPI0_MOSI_1 19u // PIN_A19 +#define PIN_SPI0_SCK_0 16u // PIN_A16 +#define PIN_SPI0_SCK_1 3u // PIN_A3 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE0_SCL_0 2u // PIN_A2 -#define PIN_WIRE0_SCL_1 3u // PIN_A15 -#define PIN_WIRE0_SCL_2 5u // PIN_A19 -#define PIN_WIRE0_SDA_0 6u // PIN_A20 -#define PIN_WIRE0_SDA_1 7u // PIN_A16 -#define PIN_WIRE0_SDA_2 9u // PIN_A3 +#define PIN_WIRE0_SCL_0 2u // PIN_A2 +#define PIN_WIRE0_SCL_1 15u // PIN_A15 +#define PIN_WIRE0_SCL_2 19u // PIN_A19 +#define PIN_WIRE0_SDA_0 20u // PIN_A20 +#define PIN_WIRE0_SDA_1 16u // PIN_A16 +#define PIN_WIRE0_SDA_2 3u // PIN_A3 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 3 -#define PIN_SERIAL0_RX 11u // PIN_A13 -#define PIN_SERIAL0_TX 12u // PIN_A14 -#define PIN_SERIAL1_CTS 4u // PIN_A4 -#define PIN_SERIAL1_RX_0 2u // PIN_A2 -#define PIN_SERIAL1_RX_1 8u // PIN_A0 -#define PIN_SERIAL1_TX_0 9u // PIN_A3 -#define PIN_SERIAL1_TX_1 10u // PIN_A1 -#define PIN_SERIAL2_CTS 5u // PIN_A19 -#define PIN_SERIAL2_RTS 6u // PIN_A20 -#define PIN_SERIAL2_RX 3u // PIN_A15 -#define PIN_SERIAL2_TX 7u // PIN_A16 +#define PIN_SERIAL0_RX 13u // PIN_A13 +#define PIN_SERIAL0_TX 14u // PIN_A14 +#define PIN_SERIAL1_CTS 4u // PIN_A4 +#define PIN_SERIAL1_RX_0 2u // PIN_A2 +#define PIN_SERIAL1_RX_1 0u // PIN_A0 +#define PIN_SERIAL1_TX_0 3u // PIN_A3 +#define PIN_SERIAL1_TX_1 1u // PIN_A1 +#define PIN_SERIAL2_CTS 19u // PIN_A19 +#define PIN_SERIAL2_RTS 20u // PIN_A20 +#define PIN_SERIAL2_RX 15u // PIN_A15 +#define PIN_SERIAL2_TX 16u // PIN_A16 // Pin function macros // ------------------- +#define PIN_CS0 15u // PIN_A15 #define PIN_CTS1 4u // PIN_A4 -#define PIN_CTS2 5u // PIN_A19 -#define PIN_MISO0 6u // PIN_A20 -#define PIN_PA00 8u // PIN_A0 -#define PIN_PA01 10u // PIN_A1 +#define PIN_CTS2 19u // PIN_A19 +#define PIN_MISO0 20u // PIN_A20 +#define PIN_MOSI0 19u // PIN_A19 +#define PIN_PA00 0u // PIN_A0 +#define PIN_PA01 1u // PIN_A1 #define PIN_PA02 2u // PIN_A2 -#define PIN_PA03 9u // PIN_A3 +#define PIN_PA03 3u // PIN_A3 #define PIN_PA04 4u // PIN_A4 -#define PIN_PA13 11u // PIN_A13 -#define PIN_PA14 12u // PIN_A14 -#define PIN_PA15 3u // PIN_A15 -#define PIN_PA16 7u // PIN_A16 -#define PIN_PA17 0u // PIN_A17 -#define PIN_PA18 1u // PIN_A18 -#define PIN_PA19 5u // PIN_A19 -#define PIN_PA20 6u // PIN_A20 -#define PIN_RTS2 6u // PIN_A20 +#define PIN_PA13 13u // PIN_A13 +#define PIN_PA14 14u // PIN_A14 +#define PIN_PA15 15u // PIN_A15 +#define PIN_PA16 16u // PIN_A16 +#define PIN_PA17 17u // PIN_A17 +#define PIN_PA18 18u // PIN_A18 +#define PIN_PA19 19u // PIN_A19 +#define PIN_PA20 20u // PIN_A20 +#define PIN_PWM0 0u // PIN_A0 +#define PIN_PWM1 1u // PIN_A1 +#define PIN_PWM2 14u // PIN_A14 +#define PIN_PWM3 3u // PIN_A3 +#define PIN_PWM4 16u // PIN_A16 +#define PIN_PWM5 17u // PIN_A17 +#define PIN_PWM6 18u // PIN_A18 +#define PIN_PWM7 13u // PIN_A13 +#define PIN_RTS2 20u // PIN_A20 +#define PIN_RX0 13u // PIN_A13 +#define PIN_RX1 0u // PIN_A0 +#define PIN_RX2 15u // PIN_A15 +#define PIN_SCK0 3u // PIN_A3 +#define PIN_SCL0 19u // PIN_A19 +#define PIN_SDA0 3u // PIN_A3 +#define PIN_TX0 14u // PIN_A14 +#define PIN_TX1 1u // PIN_A1 +#define PIN_TX2 16u // PIN_A16 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_WIRE0 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_WIRE0 1 +#define SERIAL_INTERFACES_COUNT 3 +#define SPI_INTERFACES_COUNT 1 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 17u // PIN_A17 +#define PIN_D1 18u // PIN_A18 +#define PIN_D2 2u // PIN_A2 +#define PIN_D3 15u // PIN_A15 +#define PIN_D4 4u // PIN_A4 +#define PIN_D5 19u // PIN_A19 +#define PIN_D6 20u // PIN_A20 +#define PIN_D7 16u // PIN_A16 +#define PIN_D8 0u // PIN_A0 +#define PIN_D9 3u // PIN_A3 +#define PIN_D10 1u // PIN_A1 +#define PIN_D11 13u // PIN_A13 +#define PIN_D12 14u // PIN_A14 + +// Static pin names +// ---------------- +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; diff --git a/boards/variants/cb2l.cpp b/boards/variants/cb2l.c similarity index 64% rename from boards/variants/cb2l.cpp rename to boards/variants/cb2l.c index f7ff683..a613471 100644 --- a/boards/variants/cb2l.cpp +++ b/boards/variants/cb2l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P8, PWM2 {GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P7, PWM1 @@ -29,6 +27,16 @@ PinInfo pinTable[PINS_COUNT] = { // D8: P21, I2C1_SDA, TMS, MCLK, ^FCS {GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [6] = &(lt_arduino_pin_info_list[2]), // GPIO6 (D2) + [7] = &(lt_arduino_pin_info_list[1]), // GPIO7 (D1) + [8] = &(lt_arduino_pin_info_list[0]), // GPIO8 (D0) + [10] = &(lt_arduino_pin_info_list[5]), // GPIO10 (D5) + [11] = &(lt_arduino_pin_info_list[7]), // GPIO11 (D7) + [21] = &(lt_arduino_pin_info_list[8]), // GPIO21 (D8) + [24] = &(lt_arduino_pin_info_list[4]), // GPIO24 (D4) + [26] = &(lt_arduino_pin_info_list[3]), // GPIO26 (D3) +}; +// clang-format on diff --git a/boards/variants/cb2l.h b/boards/variants/cb2l.h index 103fd63..ccbc8d1 100644 --- a/boards/variants/cb2l.h +++ b/boards/variants/cb2l.h @@ -6,48 +6,66 @@ // Pins // ---- -#define PINS_COUNT 9 -#define NUM_DIGITAL_PINS 9 -#define NUM_ANALOG_OUTPUTS 0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 - -// Wire Interfaces -// --------------- -#define WIRE_INTERFACES_COUNT 0 +#define PINS_COUNT 9 // Total GPIO count +#define NUM_DIGITAL_PINS 9 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 0 // ADC inputs +#define NUM_ANALOG_OUTPUTS 5 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 5u // GPIO10 -#define PIN_SERIAL1_TX 7u // GPIO11 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_P0 6u // GPIO0 -#define PIN_P6 2u // GPIO6 -#define PIN_P7 1u // GPIO7 -#define PIN_P8 0u // GPIO8 -#define PIN_P10 5u // GPIO10 -#define PIN_P11 7u // GPIO11 -#define PIN_P21 8u // GPIO21 -#define PIN_P24 4u // GPIO24 -#define PIN_P26 3u // GPIO26 -#define PIN_PWM0 2u // GPIO6 -#define PIN_PWM1 1u // GPIO7 -#define PIN_PWM2 0u // GPIO8 -#define PIN_PWM4 4u // GPIO24 -#define PIN_PWM5 3u // GPIO26 -#define PIN_RX1 5u // GPIO10 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA1 8u // GPIO21 -#define PIN_TX1 7u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_P0 0u // GPIO0 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P21 21u // GPIO21 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define SERIAL_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 8u // GPIO8 +#define PIN_D1 7u // GPIO7 +#define PIN_D2 6u // GPIO6 +#define PIN_D3 26u // GPIO26 +#define PIN_D4 24u // GPIO24 +#define PIN_D5 10u // GPIO10 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 11u // GPIO11 +#define PIN_D8 21u // GPIO21 + +// Static pin names +// ---------------- +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; diff --git a/boards/variants/cb2s.cpp b/boards/variants/cb2s.c similarity index 64% rename from boards/variants/cb2s.cpp rename to boards/variants/cb2s.c index cce51a8..8ab2a42 100644 --- a/boards/variants/cb2s.cpp +++ b/boards/variants/cb2s.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P6, PWM0 {GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P7, PWM1 @@ -33,6 +31,18 @@ PinInfo pinTable[PINS_COUNT] = { // D10: P21, I2C1_SDA, TMS, MCLK, ^FCS {GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[8]), // GPIO0 (D8) + [1] = &(lt_arduino_pin_info_list[9]), // GPIO1 (D9) + [6] = &(lt_arduino_pin_info_list[0]), // GPIO6 (D0) + [7] = &(lt_arduino_pin_info_list[1]), // GPIO7 (D1) + [8] = &(lt_arduino_pin_info_list[2]), // GPIO8 (D2) + [10] = &(lt_arduino_pin_info_list[4]), // GPIO10 (D4) + [11] = &(lt_arduino_pin_info_list[5]), // GPIO11 (D5) + [21] = &(lt_arduino_pin_info_list[10]), // GPIO21 (D10) + [23] = &(lt_arduino_pin_info_list[3]), // GPIO23 (D3) + [24] = &(lt_arduino_pin_info_list[6]), // GPIO24 (D6) + [26] = &(lt_arduino_pin_info_list[7]), // GPIO26 (D7) +}; +// clang-format on diff --git a/boards/variants/cb2s.h b/boards/variants/cb2s.h index 71cd454..a90ec1c 100644 --- a/boards/variants/cb2s.h +++ b/boards/variants/cb2s.h @@ -6,63 +6,85 @@ // Pins // ---- -#define PINS_COUNT 11 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 3u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 11 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 5 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE2_SCL 8u // GPIO0 -#define PIN_WIRE2_SDA 9u // GPIO1 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 4u // GPIO10 -#define PIN_SERIAL1_TX 5u // GPIO11 -#define PIN_SERIAL2_RX 9u // GPIO1 -#define PIN_SERIAL2_TX 8u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 3u // GPIO23 -#define PIN_P0 8u // GPIO0 -#define PIN_P1 9u // GPIO1 -#define PIN_P6 0u // GPIO6 -#define PIN_P7 1u // GPIO7 -#define PIN_P8 2u // GPIO8 -#define PIN_P10 4u // GPIO10 -#define PIN_P11 5u // GPIO11 -#define PIN_P21 10u // GPIO21 -#define PIN_P23 3u // GPIO23 -#define PIN_P24 6u // GPIO24 -#define PIN_P26 7u // GPIO26 -#define PIN_PWM0 0u // GPIO6 -#define PIN_PWM1 1u // GPIO7 -#define PIN_PWM2 2u // GPIO8 -#define PIN_PWM4 6u // GPIO24 -#define PIN_PWM5 7u // GPIO26 -#define PIN_RX1 4u // GPIO10 -#define PIN_RX2 9u // GPIO1 -#define PIN_SCL2 8u // GPIO0 -#define PIN_SDA1 10u // GPIO21 -#define PIN_SDA2 9u // GPIO1 -#define PIN_TX1 5u // GPIO11 -#define PIN_TX2 8u // GPIO0 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P21 21u // GPIO21 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 6u // GPIO6 +#define PIN_D1 7u // GPIO7 +#define PIN_D2 8u // GPIO8 +#define PIN_D3 23u // GPIO23 +#define PIN_D4 10u // GPIO10 +#define PIN_D5 11u // GPIO11 +#define PIN_D6 24u // GPIO24 +#define PIN_D7 26u // GPIO26 +#define PIN_D8 0u // GPIO0 +#define PIN_D9 1u // GPIO1 +#define PIN_D10 21u // GPIO21 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/cb3l.cpp b/boards/variants/cb3l.c similarity index 64% rename from boards/variants/cb3l.cpp rename to boards/variants/cb3l.c index 6f94d8a..6d592ce 100644 --- a/boards/variants/cb3l.cpp +++ b/boards/variants/cb3l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P23, ADC3, TDO, FSO {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -35,6 +33,19 @@ PinInfo pinTable[PINS_COUNT] = { // D11: P11, UART1_TX {GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [6] = &(lt_arduino_pin_info_list[4]), // GPIO6 (D4) + [7] = &(lt_arduino_pin_info_list[9]), // GPIO7 (D9) + [8] = &(lt_arduino_pin_info_list[8]), // GPIO8 (D8) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[10]), // GPIO10 (D10) + [11] = &(lt_arduino_pin_info_list[11]), // GPIO11 (D11) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [21] = &(lt_arduino_pin_info_list[7]), // GPIO21 (D7) + [23] = &(lt_arduino_pin_info_list[0]), // GPIO23 (D0) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[2]), // GPIO26 (D2) +}; +// clang-format on diff --git a/boards/variants/cb3l.h b/boards/variants/cb3l.h index 28f8e80..cd31a53 100644 --- a/boards/variants/cb3l.h +++ b/boards/variants/cb3l.h @@ -6,60 +6,80 @@ // Pins // ---- -#define PINS_COUNT 12 -#define NUM_DIGITAL_PINS 12 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 0u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 - -// Wire Interfaces -// --------------- -#define WIRE_INTERFACES_COUNT 0 +#define PINS_COUNT 12 // Total GPIO count +#define NUM_DIGITAL_PINS 12 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 10u // GPIO10 -#define PIN_SERIAL1_TX 11u // GPIO11 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 0u // GPIO23 -#define PIN_P0 6u // GPIO0 -#define PIN_P6 4u // GPIO6 -#define PIN_P7 9u // GPIO7 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 #define PIN_P8 8u // GPIO8 -#define PIN_P9 5u // GPIO9 +#define PIN_P9 9u // GPIO9 #define PIN_P10 10u // GPIO10 #define PIN_P11 11u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P21 7u // GPIO21 -#define PIN_P23 0u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 2u // GPIO26 -#define PIN_PWM0 4u // GPIO6 -#define PIN_PWM1 9u // GPIO7 +#define PIN_P14 14u // GPIO14 +#define PIN_P21 21u // GPIO21 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 #define PIN_PWM2 8u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 2u // GPIO26 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 #define PIN_RX1 10u // GPIO10 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA1 7u // GPIO21 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 #define PIN_TX1 11u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define SERIAL_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 23u // GPIO23 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 26u // GPIO26 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 6u // GPIO6 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 21u // GPIO21 +#define PIN_D8 8u // GPIO8 +#define PIN_D9 7u // GPIO7 +#define PIN_D10 10u // GPIO10 +#define PIN_D11 11u // GPIO11 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; diff --git a/boards/variants/cb3s.cpp b/boards/variants/cb3s.c similarity index 64% rename from boards/variants/cb3s.cpp rename to boards/variants/cb3s.c index fb58969..049d819 100644 --- a/boards/variants/cb3s.cpp +++ b/boards/variants/cb3s.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P23, ADC3, TDO, FSO {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -39,6 +37,21 @@ PinInfo pinTable[PINS_COUNT] = { // D13: P20, I2C1_SCL, TCK, FSCK {GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [6] = &(lt_arduino_pin_info_list[4]), // GPIO6 (D4) + [7] = &(lt_arduino_pin_info_list[9]), // GPIO7 (D9) + [8] = &(lt_arduino_pin_info_list[8]), // GPIO8 (D8) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[10]), // GPIO10 (D10) + [11] = &(lt_arduino_pin_info_list[11]), // GPIO11 (D11) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [20] = &(lt_arduino_pin_info_list[13]), // GPIO20 (D13) + [21] = &(lt_arduino_pin_info_list[7]), // GPIO21 (D7) + [22] = &(lt_arduino_pin_info_list[12]), // GPIO22 (D12) + [23] = &(lt_arduino_pin_info_list[0]), // GPIO23 (D0) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[2]), // GPIO26 (D2) +}; +// clang-format on diff --git a/boards/variants/cb3s.h b/boards/variants/cb3s.h index a6c6464..711d8b1 100644 --- a/boards/variants/cb3s.h +++ b/boards/variants/cb3s.h @@ -6,69 +6,95 @@ // Pins // ---- -#define PINS_COUNT 14 -#define NUM_DIGITAL_PINS 14 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 0u // GPIO23 -#define PIN_A0 0u // GPIO23 -#define A0 PIN_A0 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 14 // Total GPIO count +#define NUM_DIGITAL_PINS 14 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE1_SCL 13u // GPIO20 -#define PIN_WIRE1_SDA_0 7u // GPIO21 -#define PIN_WIRE1_SDA_1 7u // GPIO21 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA_0 21u // GPIO21 +#define PIN_WIRE1_SDA_1 21u // GPIO21 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 10u // GPIO10 -#define PIN_SERIAL1_TX 11u // GPIO11 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 0u // GPIO23 -#define PIN_P0 6u // GPIO0 -#define PIN_P6 4u // GPIO6 -#define PIN_P7 9u // GPIO7 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 #define PIN_P8 8u // GPIO8 -#define PIN_P9 5u // GPIO9 +#define PIN_P9 9u // GPIO9 #define PIN_P10 10u // GPIO10 #define PIN_P11 11u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P20 13u // GPIO20 -#define PIN_P21 7u // GPIO21 -#define PIN_P22 12u // GPIO22 -#define PIN_P23 0u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 2u // GPIO26 -#define PIN_PWM0 4u // GPIO6 -#define PIN_PWM1 9u // GPIO7 +#define PIN_P14 14u // GPIO14 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 #define PIN_PWM2 8u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 2u // GPIO26 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 #define PIN_RX1 10u // GPIO10 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL1 13u // GPIO20 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA1 7u // GPIO21 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 #define PIN_TX1 11u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 23u // GPIO23 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 26u // GPIO26 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 6u // GPIO6 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 21u // GPIO21 +#define PIN_D8 8u // GPIO8 +#define PIN_D9 7u // GPIO7 +#define PIN_D10 10u // GPIO10 +#define PIN_D11 11u // GPIO11 +#define PIN_D12 22u // GPIO22 +#define PIN_D13 20u // GPIO20 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; diff --git a/boards/variants/cb3se.cpp b/boards/variants/cb3se.c similarity index 62% rename from boards/variants/cb3se.cpp rename to boards/variants/cb3se.c index 2a73322..7cd476d 100644 --- a/boards/variants/cb3se.cpp +++ b/boards/variants/cb3se.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P23, ADC3, TDO, FSO {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -45,6 +43,24 @@ PinInfo pinTable[PINS_COUNT] = { // D16: P16, SD_D0, MOSI {GPIO16, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [1] = &(lt_arduino_pin_info_list[7]), // GPIO1 (D7) + [6] = &(lt_arduino_pin_info_list[4]), // GPIO6 (D4) + [7] = &(lt_arduino_pin_info_list[9]), // GPIO7 (D9) + [8] = &(lt_arduino_pin_info_list[8]), // GPIO8 (D8) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[10]), // GPIO10 (D10) + [11] = &(lt_arduino_pin_info_list[11]), // GPIO11 (D11) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [15] = &(lt_arduino_pin_info_list[12]), // GPIO15 (D12) + [16] = &(lt_arduino_pin_info_list[16]), // GPIO16 (D16) + [17] = &(lt_arduino_pin_info_list[15]), // GPIO17 (D15) + [20] = &(lt_arduino_pin_info_list[14]), // GPIO20 (D14) + [22] = &(lt_arduino_pin_info_list[13]), // GPIO22 (D13) + [23] = &(lt_arduino_pin_info_list[0]), // GPIO23 (D0) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[2]), // GPIO26 (D2) +}; +// clang-format on diff --git a/boards/variants/cb3se.h b/boards/variants/cb3se.h index c511edd..95d3f98 100644 --- a/boards/variants/cb3se.h +++ b/boards/variants/cb3se.h @@ -6,74 +6,108 @@ // Pins // ---- -#define PINS_COUNT 17 -#define NUM_DIGITAL_PINS 17 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 0u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 17 // Total GPIO count +#define NUM_DIGITAL_PINS 17 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE2_SCL 6u // GPIO0 -#define PIN_WIRE2_SDA 7u // GPIO1 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 10u // GPIO10 -#define PIN_SERIAL1_TX 11u // GPIO11 -#define PIN_SERIAL2_RX 7u // GPIO1 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 0u // GPIO23 -#define PIN_CS 12u // GPIO15 -#define PIN_MISO 15u // GPIO17 +#define PIN_ADC3 23u // GPIO23 +#define PIN_CS 15u // GPIO15 +#define PIN_MISO 17u // GPIO17 #define PIN_MOSI 16u // GPIO16 -#define PIN_P0 6u // GPIO0 -#define PIN_P1 7u // GPIO1 -#define PIN_P6 4u // GPIO6 -#define PIN_P7 9u // GPIO7 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 #define PIN_P8 8u // GPIO8 -#define PIN_P9 5u // GPIO9 +#define PIN_P9 9u // GPIO9 #define PIN_P10 10u // GPIO10 #define PIN_P11 11u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P15 12u // GPIO15 +#define PIN_P14 14u // GPIO14 +#define PIN_P15 15u // GPIO15 #define PIN_P16 16u // GPIO16 -#define PIN_P17 15u // GPIO17 -#define PIN_P20 14u // GPIO20 -#define PIN_P22 13u // GPIO22 -#define PIN_P23 0u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 2u // GPIO26 -#define PIN_PWM0 4u // GPIO6 -#define PIN_PWM1 9u // GPIO7 +#define PIN_P17 17u // GPIO17 +#define PIN_P20 20u // GPIO20 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 #define PIN_PWM2 8u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 2u // GPIO26 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 #define PIN_RX1 10u // GPIO10 -#define PIN_RX2 7u // GPIO1 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL1 14u // GPIO20 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA2 7u // GPIO1 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA2 1u // GPIO1 #define PIN_TX1 11u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 23u // GPIO23 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 26u // GPIO26 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 6u // GPIO6 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 1u // GPIO1 +#define PIN_D8 8u // GPIO8 +#define PIN_D9 7u // GPIO7 +#define PIN_D10 10u // GPIO10 +#define PIN_D11 11u // GPIO11 +#define PIN_D12 15u // GPIO15 +#define PIN_D13 22u // GPIO22 +#define PIN_D14 20u // GPIO20 +#define PIN_D15 17u // GPIO17 +#define PIN_D16 16u // GPIO16 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; diff --git a/boards/variants/generic-bk7231n-qfn32-tuya.cpp b/boards/variants/generic-bk7231n-qfn32-tuya.c similarity index 64% rename from boards/variants/generic-bk7231n-qfn32-tuya.cpp rename to boards/variants/generic-bk7231n-qfn32-tuya.c index e1c83f1..64a732a 100644 --- a/boards/variants/generic-bk7231n-qfn32-tuya.cpp +++ b/boards/variants/generic-bk7231n-qfn32-tuya.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P0, UART2_TX, I2C2_SCL {GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: P1, UART2_RX, I2C2_SDA @@ -49,6 +47,26 @@ PinInfo pinTable[PINS_COUNT] = { // D18: P28, DN {GPIO28, PIN_GPIO | PIN_IRQ, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // GPIO0 (D0) + [1] = &(lt_arduino_pin_info_list[1]), // GPIO1 (D1) + [6] = &(lt_arduino_pin_info_list[2]), // GPIO6 (D2) + [7] = &(lt_arduino_pin_info_list[3]), // GPIO7 (D3) + [8] = &(lt_arduino_pin_info_list[4]), // GPIO8 (D4) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[6]), // GPIO10 (D6) + [11] = &(lt_arduino_pin_info_list[7]), // GPIO11 (D7) + [14] = &(lt_arduino_pin_info_list[8]), // GPIO14 (D8) + [15] = &(lt_arduino_pin_info_list[9]), // GPIO15 (D9) + [16] = &(lt_arduino_pin_info_list[10]), // GPIO16 (D10) + [17] = &(lt_arduino_pin_info_list[11]), // GPIO17 (D11) + [20] = &(lt_arduino_pin_info_list[12]), // GPIO20 (D12) + [21] = &(lt_arduino_pin_info_list[13]), // GPIO21 (D13) + [22] = &(lt_arduino_pin_info_list[14]), // GPIO22 (D14) + [23] = &(lt_arduino_pin_info_list[15]), // GPIO23 (D15) + [24] = &(lt_arduino_pin_info_list[16]), // GPIO24 (D16) + [26] = &(lt_arduino_pin_info_list[17]), // GPIO26 (D17) + [28] = &(lt_arduino_pin_info_list[18]), // GPIO28 (D18) +}; +// clang-format on diff --git a/boards/variants/generic-bk7231n-qfn32-tuya.h b/boards/variants/generic-bk7231n-qfn32-tuya.h index a9537d8..73d8a9c 100644 --- a/boards/variants/generic-bk7231n-qfn32-tuya.h +++ b/boards/variants/generic-bk7231n-qfn32-tuya.h @@ -6,80 +6,118 @@ // Pins // ---- -#define PINS_COUNT 19 -#define NUM_DIGITAL_PINS 19 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 15u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 19 // Total GPIO count +#define NUM_DIGITAL_PINS 19 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 28 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 12u // GPIO20 -#define PIN_WIRE1_SDA 13u // GPIO21 -#define PIN_WIRE2_SCL 0u // GPIO0 -#define PIN_WIRE2_SDA 1u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 6u // GPIO10 -#define PIN_SERIAL1_TX 7u // GPIO11 -#define PIN_SERIAL2_RX 1u // GPIO1 -#define PIN_SERIAL2_TX 0u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 15u // GPIO23 -#define PIN_CS 9u // GPIO15 -#define PIN_MISO 11u // GPIO17 -#define PIN_MOSI 10u // GPIO16 +#define PIN_ADC3 23u // GPIO23 +#define PIN_CS 15u // GPIO15 +#define PIN_MISO 17u // GPIO17 +#define PIN_MOSI 16u // GPIO16 #define PIN_P0 0u // GPIO0 #define PIN_P1 1u // GPIO1 -#define PIN_P6 2u // GPIO6 -#define PIN_P7 3u // GPIO7 -#define PIN_P8 4u // GPIO8 -#define PIN_P9 5u // GPIO9 -#define PIN_P10 6u // GPIO10 -#define PIN_P11 7u // GPIO11 -#define PIN_P14 8u // GPIO14 -#define PIN_P15 9u // GPIO15 -#define PIN_P16 10u // GPIO16 -#define PIN_P17 11u // GPIO17 -#define PIN_P20 12u // GPIO20 -#define PIN_P21 13u // GPIO21 -#define PIN_P22 14u // GPIO22 -#define PIN_P23 15u // GPIO23 -#define PIN_P24 16u // GPIO24 -#define PIN_P26 17u // GPIO26 -#define PIN_P28 18u // GPIO28 -#define PIN_PWM0 2u // GPIO6 -#define PIN_PWM1 3u // GPIO7 -#define PIN_PWM2 4u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 16u // GPIO24 -#define PIN_PWM5 17u // GPIO26 -#define PIN_RX1 6u // GPIO10 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P9 9u // GPIO9 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P14 14u // GPIO14 +#define PIN_P15 15u // GPIO15 +#define PIN_P16 16u // GPIO16 +#define PIN_P17 17u // GPIO17 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_P28 28u // GPIO28 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 #define PIN_RX2 1u // GPIO1 -#define PIN_SCK 8u // GPIO14 -#define PIN_SCL1 12u // GPIO20 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 #define PIN_SCL2 0u // GPIO0 -#define PIN_SDA1 13u // GPIO21 +#define PIN_SDA1 21u // GPIO21 #define PIN_SDA2 1u // GPIO1 -#define PIN_TX1 7u // GPIO11 +#define PIN_TX1 11u // GPIO11 #define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // GPIO0 +#define PIN_D1 1u // GPIO1 +#define PIN_D2 6u // GPIO6 +#define PIN_D3 7u // GPIO7 +#define PIN_D4 8u // GPIO8 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 10u // GPIO10 +#define PIN_D7 11u // GPIO11 +#define PIN_D8 14u // GPIO14 +#define PIN_D9 15u // GPIO15 +#define PIN_D10 16u // GPIO16 +#define PIN_D11 17u // GPIO17 +#define PIN_D12 20u // GPIO20 +#define PIN_D13 21u // GPIO21 +#define PIN_D14 22u // GPIO22 +#define PIN_D15 23u // GPIO23 +#define PIN_D16 24u // GPIO24 +#define PIN_D17 26u // GPIO26 +#define PIN_D18 28u // GPIO28 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; +static const unsigned char D17 = PIN_D17; +static const unsigned char D18 = PIN_D18; diff --git a/boards/variants/generic-bk7231t-qfn32-tuya.cpp b/boards/variants/generic-bk7231t-qfn32-tuya.c similarity index 64% rename from boards/variants/generic-bk7231t-qfn32-tuya.cpp rename to boards/variants/generic-bk7231t-qfn32-tuya.c index 066f0e4..539e8ba 100644 --- a/boards/variants/generic-bk7231t-qfn32-tuya.cpp +++ b/boards/variants/generic-bk7231t-qfn32-tuya.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P0, UART2_TX, I2C2_SCL {GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: P1, UART2_RX, I2C2_SDA @@ -49,6 +47,26 @@ PinInfo pinTable[PINS_COUNT] = { // D18: P28, DN {GPIO28, PIN_GPIO | PIN_IRQ, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // GPIO0 (D0) + [1] = &(lt_arduino_pin_info_list[1]), // GPIO1 (D1) + [6] = &(lt_arduino_pin_info_list[2]), // GPIO6 (D2) + [7] = &(lt_arduino_pin_info_list[3]), // GPIO7 (D3) + [8] = &(lt_arduino_pin_info_list[4]), // GPIO8 (D4) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[6]), // GPIO10 (D6) + [11] = &(lt_arduino_pin_info_list[7]), // GPIO11 (D7) + [14] = &(lt_arduino_pin_info_list[8]), // GPIO14 (D8) + [15] = &(lt_arduino_pin_info_list[9]), // GPIO15 (D9) + [16] = &(lt_arduino_pin_info_list[10]), // GPIO16 (D10) + [17] = &(lt_arduino_pin_info_list[11]), // GPIO17 (D11) + [20] = &(lt_arduino_pin_info_list[12]), // GPIO20 (D12) + [21] = &(lt_arduino_pin_info_list[13]), // GPIO21 (D13) + [22] = &(lt_arduino_pin_info_list[14]), // GPIO22 (D14) + [23] = &(lt_arduino_pin_info_list[15]), // GPIO23 (D15) + [24] = &(lt_arduino_pin_info_list[16]), // GPIO24 (D16) + [26] = &(lt_arduino_pin_info_list[17]), // GPIO26 (D17) + [28] = &(lt_arduino_pin_info_list[18]), // GPIO28 (D18) +}; +// clang-format on diff --git a/boards/variants/generic-bk7231t-qfn32-tuya.h b/boards/variants/generic-bk7231t-qfn32-tuya.h index 75bbce6..dd9b587 100644 --- a/boards/variants/generic-bk7231t-qfn32-tuya.h +++ b/boards/variants/generic-bk7231t-qfn32-tuya.h @@ -6,80 +6,118 @@ // Pins // ---- -#define PINS_COUNT 19 -#define NUM_DIGITAL_PINS 19 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 15u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 19 // Total GPIO count +#define NUM_DIGITAL_PINS 19 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 28 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 12u // GPIO20 -#define PIN_WIRE1_SDA 13u // GPIO21 -#define PIN_WIRE2_SCL 0u // GPIO0 -#define PIN_WIRE2_SDA 1u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 6u // GPIO10 -#define PIN_SERIAL1_TX 7u // GPIO11 -#define PIN_SERIAL2_RX 1u // GPIO1 -#define PIN_SERIAL2_TX 0u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 15u // GPIO23 -#define PIN_CS 9u // GPIO15 -#define PIN_MISO 11u // GPIO17 -#define PIN_MOSI 10u // GPIO16 +#define PIN_ADC3 23u // GPIO23 +#define PIN_CS 15u // GPIO15 +#define PIN_MISO 17u // GPIO17 +#define PIN_MOSI 16u // GPIO16 #define PIN_P0 0u // GPIO0 #define PIN_P1 1u // GPIO1 -#define PIN_P6 2u // GPIO6 -#define PIN_P7 3u // GPIO7 -#define PIN_P8 4u // GPIO8 -#define PIN_P9 5u // GPIO9 -#define PIN_P10 6u // GPIO10 -#define PIN_P11 7u // GPIO11 -#define PIN_P14 8u // GPIO14 -#define PIN_P15 9u // GPIO15 -#define PIN_P16 10u // GPIO16 -#define PIN_P17 11u // GPIO17 -#define PIN_P20 12u // GPIO20 -#define PIN_P21 13u // GPIO21 -#define PIN_P22 14u // GPIO22 -#define PIN_P23 15u // GPIO23 -#define PIN_P24 16u // GPIO24 -#define PIN_P26 17u // GPIO26 -#define PIN_P28 18u // GPIO28 -#define PIN_PWM0 2u // GPIO6 -#define PIN_PWM1 3u // GPIO7 -#define PIN_PWM2 4u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 16u // GPIO24 -#define PIN_PWM5 17u // GPIO26 -#define PIN_RX1 6u // GPIO10 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P9 9u // GPIO9 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P14 14u // GPIO14 +#define PIN_P15 15u // GPIO15 +#define PIN_P16 16u // GPIO16 +#define PIN_P17 17u // GPIO17 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_P28 28u // GPIO28 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 #define PIN_RX2 1u // GPIO1 -#define PIN_SCK 8u // GPIO14 -#define PIN_SCL1 12u // GPIO20 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 #define PIN_SCL2 0u // GPIO0 -#define PIN_SDA1 13u // GPIO21 +#define PIN_SDA1 21u // GPIO21 #define PIN_SDA2 1u // GPIO1 -#define PIN_TX1 7u // GPIO11 +#define PIN_TX1 11u // GPIO11 #define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // GPIO0 +#define PIN_D1 1u // GPIO1 +#define PIN_D2 6u // GPIO6 +#define PIN_D3 7u // GPIO7 +#define PIN_D4 8u // GPIO8 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 10u // GPIO10 +#define PIN_D7 11u // GPIO11 +#define PIN_D8 14u // GPIO14 +#define PIN_D9 15u // GPIO15 +#define PIN_D10 16u // GPIO16 +#define PIN_D11 17u // GPIO17 +#define PIN_D12 20u // GPIO20 +#define PIN_D13 21u // GPIO21 +#define PIN_D14 22u // GPIO22 +#define PIN_D15 23u // GPIO23 +#define PIN_D16 24u // GPIO24 +#define PIN_D17 26u // GPIO26 +#define PIN_D18 28u // GPIO28 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; +static const unsigned char D17 = PIN_D17; +static const unsigned char D18 = PIN_D18; diff --git a/boards/variants/generic-bk7252.cpp b/boards/variants/generic-bk7252.c similarity index 63% rename from boards/variants/generic-bk7252.cpp rename to boards/variants/generic-bk7252.c index 537e81a..b7287a6 100644 --- a/boards/variants/generic-bk7252.cpp +++ b/boards/variants/generic-bk7252.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P0, UART2_TX, I2C2_SCL {GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: P1, UART2_RX, I2C2_SDA @@ -87,6 +85,45 @@ PinInfo pinTable[PINS_COUNT] = { // D37: P39, DVP_PD7 {GPIO39, PIN_GPIO | PIN_IRQ, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // GPIO0 (D0) + [1] = &(lt_arduino_pin_info_list[1]), // GPIO1 (D1) + [2] = &(lt_arduino_pin_info_list[2]), // GPIO2 (D2) + [3] = &(lt_arduino_pin_info_list[3]), // GPIO3 (D3) + [4] = &(lt_arduino_pin_info_list[4]), // GPIO4 (D4) + [5] = &(lt_arduino_pin_info_list[5]), // GPIO5 (D5) + [6] = &(lt_arduino_pin_info_list[6]), // GPIO6 (D6) + [7] = &(lt_arduino_pin_info_list[7]), // GPIO7 (D7) + [10] = &(lt_arduino_pin_info_list[8]), // GPIO10 (D8) + [11] = &(lt_arduino_pin_info_list[9]), // GPIO11 (D9) + [12] = &(lt_arduino_pin_info_list[10]), // GPIO12 (D10) + [13] = &(lt_arduino_pin_info_list[11]), // GPIO13 (D11) + [14] = &(lt_arduino_pin_info_list[12]), // GPIO14 (D12) + [15] = &(lt_arduino_pin_info_list[13]), // GPIO15 (D13) + [16] = &(lt_arduino_pin_info_list[14]), // GPIO16 (D14) + [17] = &(lt_arduino_pin_info_list[15]), // GPIO17 (D15) + [18] = &(lt_arduino_pin_info_list[16]), // GPIO18 (D16) + [19] = &(lt_arduino_pin_info_list[17]), // GPIO19 (D17) + [20] = &(lt_arduino_pin_info_list[18]), // GPIO20 (D18) + [21] = &(lt_arduino_pin_info_list[19]), // GPIO21 (D19) + [22] = &(lt_arduino_pin_info_list[20]), // GPIO22 (D20) + [23] = &(lt_arduino_pin_info_list[21]), // GPIO23 (D21) + [24] = &(lt_arduino_pin_info_list[22]), // GPIO24 (D22) + [25] = &(lt_arduino_pin_info_list[23]), // GPIO25 (D23) + [26] = &(lt_arduino_pin_info_list[24]), // GPIO26 (D24) + [27] = &(lt_arduino_pin_info_list[25]), // GPIO27 (D25) + [28] = &(lt_arduino_pin_info_list[26]), // GPIO28 (D26) + [29] = &(lt_arduino_pin_info_list[27]), // GPIO29 (D27) + [30] = &(lt_arduino_pin_info_list[28]), // GPIO30 (D28) + [31] = &(lt_arduino_pin_info_list[29]), // GPIO31 (D29) + [32] = &(lt_arduino_pin_info_list[30]), // GPIO32 (D30) + [33] = &(lt_arduino_pin_info_list[31]), // GPIO33 (D31) + [34] = &(lt_arduino_pin_info_list[32]), // GPIO34 (D32) + [35] = &(lt_arduino_pin_info_list[33]), // GPIO35 (D33) + [36] = &(lt_arduino_pin_info_list[34]), // GPIO36 (D34) + [37] = &(lt_arduino_pin_info_list[35]), // GPIO37 (D35) + [38] = &(lt_arduino_pin_info_list[36]), // GPIO38 (D36) + [39] = &(lt_arduino_pin_info_list[37]), // GPIO39 (D37) +}; +// clang-format on diff --git a/boards/variants/generic-bk7252.h b/boards/variants/generic-bk7252.h index d456037..98a7ac7 100644 --- a/boards/variants/generic-bk7252.h +++ b/boards/variants/generic-bk7252.h @@ -6,63 +6,41 @@ // Pins // ---- -#define PINS_COUNT 38 -#define NUM_DIGITAL_PINS 38 -#define NUM_ANALOG_INPUTS 7 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A5 2u // GPIO2 -#define PIN_A4 3u // GPIO3 -#define PIN_A1 4u // GPIO4 -#define PIN_A2 5u // GPIO5 -#define PIN_A6 10u // GPIO12 -#define PIN_A7 11u // GPIO13 -#define PIN_A3 21u // GPIO23 -#define A5 PIN_A5 -#define A4 PIN_A4 -#define A1 PIN_A1 -#define A2 PIN_A2 -#define A6 PIN_A6 -#define A7 PIN_A7 -#define A3 PIN_A3 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 38 // Total GPIO count +#define NUM_DIGITAL_PINS 38 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 7 // ADC inputs +#define NUM_ANALOG_OUTPUTS 4 // PWM & DAC outputs +#define PINS_GPIO_MAX 39 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 18u // GPIO20 -#define PIN_WIRE1_SDA 19u // GPIO21 -#define PIN_WIRE2_SCL 0u // GPIO0 -#define PIN_WIRE2_SDA 1u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_CTS 10u // GPIO12 -#define PIN_SERIAL1_RTS 11u // GPIO13 -#define PIN_SERIAL1_RX 8u // GPIO10 -#define PIN_SERIAL1_TX 9u // GPIO11 -#define PIN_SERIAL2_RX 1u // GPIO1 -#define PIN_SERIAL2_TX 0u // GPIO0 +#define PIN_SERIAL1_CTS 12u // GPIO12 +#define PIN_SERIAL1_RTS 13u // GPIO13 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- #define PIN_ADC1 4u // GPIO4 #define PIN_ADC2 5u // GPIO5 -#define PIN_ADC3 21u // GPIO23 +#define PIN_ADC3 23u // GPIO23 #define PIN_ADC4 2u // GPIO2 #define PIN_ADC5 3u // GPIO3 -#define PIN_ADC6 10u // GPIO12 -#define PIN_ADC7 11u // GPIO13 -#define PIN_CS 13u // GPIO15 -#define PIN_CTS1 10u // GPIO12 -#define PIN_MISO 15u // GPIO17 -#define PIN_MOSI 14u // GPIO16 +#define PIN_ADC6 12u // GPIO12 +#define PIN_ADC7 13u // GPIO13 +#define PIN_CS 15u // GPIO15 +#define PIN_CTS1 12u // GPIO12 +#define PIN_MISO 17u // GPIO17 +#define PIN_MOSI 16u // GPIO16 #define PIN_P0 0u // GPIO0 #define PIN_P1 1u // GPIO1 #define PIN_P2 2u // GPIO2 @@ -71,54 +49,152 @@ #define PIN_P5 5u // GPIO5 #define PIN_P6 6u // GPIO6 #define PIN_P7 7u // GPIO7 -#define PIN_P10 8u // GPIO10 -#define PIN_P11 9u // GPIO11 -#define PIN_P12 10u // GPIO12 -#define PIN_P13 11u // GPIO13 -#define PIN_P14 12u // GPIO14 -#define PIN_P15 13u // GPIO15 -#define PIN_P16 14u // GPIO16 -#define PIN_P17 15u // GPIO17 -#define PIN_P18 16u // GPIO18 -#define PIN_P19 17u // GPIO19 -#define PIN_P20 18u // GPIO20 -#define PIN_P21 19u // GPIO21 -#define PIN_P22 20u // GPIO22 -#define PIN_P23 21u // GPIO23 -#define PIN_P24 22u // GPIO24 -#define PIN_P25 23u // GPIO25 -#define PIN_P26 24u // GPIO26 -#define PIN_P27 25u // GPIO27 -#define PIN_P28 26u // GPIO28 -#define PIN_P29 27u // GPIO29 -#define PIN_P30 28u // GPIO30 -#define PIN_P31 29u // GPIO31 -#define PIN_P32 30u // GPIO32 -#define PIN_P33 31u // GPIO33 -#define PIN_P34 32u // GPIO34 -#define PIN_P35 33u // GPIO35 -#define PIN_P36 34u // GPIO36 -#define PIN_P37 35u // GPIO37 -#define PIN_P38 36u // GPIO38 -#define PIN_P39 37u // GPIO39 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P12 12u // GPIO12 +#define PIN_P13 13u // GPIO13 +#define PIN_P14 14u // GPIO14 +#define PIN_P15 15u // GPIO15 +#define PIN_P16 16u // GPIO16 +#define PIN_P17 17u // GPIO17 +#define PIN_P18 18u // GPIO18 +#define PIN_P19 19u // GPIO19 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P25 25u // GPIO25 +#define PIN_P26 26u // GPIO26 +#define PIN_P27 27u // GPIO27 +#define PIN_P28 28u // GPIO28 +#define PIN_P29 29u // GPIO29 +#define PIN_P30 30u // GPIO30 +#define PIN_P31 31u // GPIO31 +#define PIN_P32 32u // GPIO32 +#define PIN_P33 33u // GPIO33 +#define PIN_P34 34u // GPIO34 +#define PIN_P35 35u // GPIO35 +#define PIN_P36 36u // GPIO36 +#define PIN_P37 37u // GPIO37 +#define PIN_P38 38u // GPIO38 +#define PIN_P39 39u // GPIO39 #define PIN_PWM0 6u // GPIO6 #define PIN_PWM1 7u // GPIO7 -#define PIN_PWM4 22u // GPIO24 -#define PIN_PWM5 24u // GPIO26 -#define PIN_RTS1 11u // GPIO13 -#define PIN_RX1 8u // GPIO10 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RTS1 13u // GPIO13 +#define PIN_RX1 10u // GPIO10 #define PIN_RX2 1u // GPIO1 -#define PIN_SCK 12u // GPIO14 -#define PIN_SCL1 18u // GPIO20 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 #define PIN_SCL2 0u // GPIO0 -#define PIN_SDA1 19u // GPIO21 +#define PIN_SDA1 21u // GPIO21 #define PIN_SDA2 1u // GPIO1 -#define PIN_TX1 9u // GPIO11 +#define PIN_TX1 11u // GPIO11 #define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // GPIO0 +#define PIN_D1 1u // GPIO1 +#define PIN_D2 2u // GPIO2 +#define PIN_D3 3u // GPIO3 +#define PIN_D4 4u // GPIO4 +#define PIN_D5 5u // GPIO5 +#define PIN_D6 6u // GPIO6 +#define PIN_D7 7u // GPIO7 +#define PIN_D8 10u // GPIO10 +#define PIN_D9 11u // GPIO11 +#define PIN_D10 12u // GPIO12 +#define PIN_D11 13u // GPIO13 +#define PIN_D12 14u // GPIO14 +#define PIN_D13 15u // GPIO15 +#define PIN_D14 16u // GPIO16 +#define PIN_D15 17u // GPIO17 +#define PIN_D16 18u // GPIO18 +#define PIN_D17 19u // GPIO19 +#define PIN_D18 20u // GPIO20 +#define PIN_D19 21u // GPIO21 +#define PIN_D20 22u // GPIO22 +#define PIN_D21 23u // GPIO23 +#define PIN_D22 24u // GPIO24 +#define PIN_D23 25u // GPIO25 +#define PIN_D24 26u // GPIO26 +#define PIN_D25 27u // GPIO27 +#define PIN_D26 28u // GPIO28 +#define PIN_D27 29u // GPIO29 +#define PIN_D28 30u // GPIO30 +#define PIN_D29 31u // GPIO31 +#define PIN_D30 32u // GPIO32 +#define PIN_D31 33u // GPIO33 +#define PIN_D32 34u // GPIO34 +#define PIN_D33 35u // GPIO35 +#define PIN_D34 36u // GPIO36 +#define PIN_D35 37u // GPIO37 +#define PIN_D36 38u // GPIO38 +#define PIN_D37 39u // GPIO39 +#define PIN_A1 4u // GPIO4 +#define PIN_A2 5u // GPIO5 +#define PIN_A3 23u // GPIO23 +#define PIN_A4 3u // GPIO3 +#define PIN_A5 2u // GPIO2 +#define PIN_A6 12u // GPIO12 +#define PIN_A7 13u // GPIO13 + +// Static pin names +// ---------------- +static const unsigned char A1 = PIN_A1; +static const unsigned char A2 = PIN_A2; +static const unsigned char A3 = PIN_A3; +static const unsigned char A4 = PIN_A4; +static const unsigned char A5 = PIN_A5; +static const unsigned char A6 = PIN_A6; +static const unsigned char A7 = PIN_A7; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; +static const unsigned char D17 = PIN_D17; +static const unsigned char D18 = PIN_D18; +static const unsigned char D19 = PIN_D19; +static const unsigned char D20 = PIN_D20; +static const unsigned char D21 = PIN_D21; +static const unsigned char D22 = PIN_D22; +static const unsigned char D23 = PIN_D23; +static const unsigned char D24 = PIN_D24; +static const unsigned char D25 = PIN_D25; +static const unsigned char D26 = PIN_D26; +static const unsigned char D27 = PIN_D27; +static const unsigned char D28 = PIN_D28; +static const unsigned char D29 = PIN_D29; +static const unsigned char D30 = PIN_D30; +static const unsigned char D31 = PIN_D31; +static const unsigned char D32 = PIN_D32; +static const unsigned char D33 = PIN_D33; +static const unsigned char D34 = PIN_D34; +static const unsigned char D35 = PIN_D35; +static const unsigned char D36 = PIN_D36; +static const unsigned char D37 = PIN_D37; diff --git a/boards/variants/generic-rtl8710bn-2mb-468k.cpp b/boards/variants/generic-rtl8710bn-2mb-468k.c similarity index 70% rename from boards/variants/generic-rtl8710bn-2mb-468k.cpp rename to boards/variants/generic-rtl8710bn-2mb-468k.c index 332cecf..10a9b98 100644 --- a/boards/variants/generic-rtl8710bn-2mb-468k.cpp +++ b/boards/variants/generic-rtl8710bn-2mb-468k.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA00, PWM2 {PA_0, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA05, PWM4, WAKE1 @@ -47,6 +45,25 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // PA_0 (D0) + [5] = &(lt_arduino_pin_info_list[1]), // PA_5 (D1) + [6] = &(lt_arduino_pin_info_list[2]), // PA_6 (D2) + [7] = &(lt_arduino_pin_info_list[3]), // PA_7 (D3) + [8] = &(lt_arduino_pin_info_list[4]), // PA_8 (D4) + [9] = &(lt_arduino_pin_info_list[5]), // PA_9 (D5) + [10] = &(lt_arduino_pin_info_list[6]), // PA_10 (D6) + [11] = &(lt_arduino_pin_info_list[7]), // PA_11 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[9]), // PA_14 (D9) + [15] = &(lt_arduino_pin_info_list[10]), // PA_15 (D10) + [18] = &(lt_arduino_pin_info_list[11]), // PA_18 (D11) + [19] = &(lt_arduino_pin_info_list[12]), // PA_19 (D12) + [22] = &(lt_arduino_pin_info_list[13]), // PA_22 (D13) + [23] = &(lt_arduino_pin_info_list[14]), // PA_23 (D14) + [29] = &(lt_arduino_pin_info_list[15]), // PA_29 (D15) + [30] = &(lt_arduino_pin_info_list[16]), // PA_30 (D16) + [41] = &(lt_arduino_pin_info_list[17]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/generic-rtl8710bn-2mb-468k.h b/boards/variants/generic-rtl8710bn-2mb-468k.h index b3369bb..e61f834 100644 --- a/boards/variants/generic-rtl8710bn-2mb-468k.h +++ b/boards/variants/generic-rtl8710bn-2mb-468k.h @@ -6,97 +6,145 @@ // Pins // ---- -#define PINS_COUNT 18 -#define NUM_DIGITAL_PINS 17 -#define NUM_ANALOG_INPUTS 2 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 12u // PA_19 -#define PIN_A1 17u // AD_2 -#define A0 PIN_A0 -#define A1 PIN_A1 +#define PINS_COUNT 18 // Total GPIO count +#define NUM_DIGITAL_PINS 17 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 12u // PA_19 -#define PIN_SPI0_MISO 13u // PA_22 -#define PIN_SPI0_MOSI 14u // PA_23 -#define PIN_SPI0_SCK 11u // PA_18 -#define PIN_SPI1_CS 12u // PA_19 -#define PIN_SPI1_MISO 13u // PA_22 -#define PIN_SPI1_MOSI 14u // PA_23 -#define PIN_SPI1_SCK 11u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 13u // PA_22 -#define PIN_WIRE0_SCL_1 15u // PA_29 -#define PIN_WIRE0_SDA_0 12u // PA_19 -#define PIN_WIRE0_SDA_1 16u // PA_30 -#define PIN_WIRE1_SCL 11u // PA_18 -#define PIN_WIRE1_SDA 14u // PA_23 +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 12u // PA_19 -#define PIN_SERIAL0_RTS 13u // PA_22 -#define PIN_SERIAL0_RX 11u // PA_18 -#define PIN_SERIAL0_TX 14u // PA_23 -#define PIN_SERIAL2_RX 15u // PA_29 -#define PIN_SERIAL2_TX 16u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 12u // PA_19 -#define PIN_ADC2 17u // AD_2 -#define PIN_CS0 12u // PA_19 -#define PIN_CS1 12u // PA_19 -#define PIN_CTS0 12u // PA_19 -#define PIN_FCS 2u // PA_6 -#define PIN_FD0 5u // PA_9 -#define PIN_FD1 3u // PA_7 -#define PIN_FD2 4u // PA_8 -#define PIN_FD3 7u // PA_11 -#define PIN_FSCK 6u // PA_10 -#define PIN_MISO0 13u // PA_22 -#define PIN_MISO1 13u // PA_22 -#define PIN_MOSI0 14u // PA_23 -#define PIN_MOSI1 14u // PA_23 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_FCS 6u // PA_6 +#define PIN_FD0 9u // PA_9 +#define PIN_FD1 7u // PA_7 +#define PIN_FD2 8u // PA_8 +#define PIN_FD3 11u // PA_11 +#define PIN_FSCK 10u // PA_10 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 #define PIN_PA00 0u // PA_0 -#define PIN_PA05 1u // PA_5 -#define PIN_PA06 2u // PA_6 -#define PIN_PA07 3u // PA_7 -#define PIN_PA08 4u // PA_8 -#define PIN_PA09 5u // PA_9 -#define PIN_PA10 6u // PA_10 -#define PIN_PA11 7u // PA_11 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 9u // PA_14 -#define PIN_PA15 10u // PA_15 -#define PIN_PA18 11u // PA_18 -#define PIN_PA19 12u // PA_19 -#define PIN_PA22 13u // PA_22 -#define PIN_PA23 14u // PA_23 -#define PIN_PA29 15u // PA_29 -#define PIN_PA30 16u // PA_30 -#define PIN_RTS0 13u // PA_22 -#define PIN_RX0 11u // PA_18 -#define PIN_RX2 15u // PA_29 -#define PIN_SCK0 11u // PA_18 -#define PIN_SCK1 11u // PA_18 -#define PIN_TX0 14u // PA_23 -#define PIN_TX2 16u // PA_30 +#define PIN_PA05 5u // PA_5 +#define PIN_PA06 6u // PA_6 +#define PIN_PA07 7u // PA_7 +#define PIN_PA08 8u // PA_8 +#define PIN_PA09 9u // PA_9 +#define PIN_PA10 10u // PA_10 +#define PIN_PA11 11u // PA_11 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 30u // PA_30 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // PA_0 +#define PIN_D1 5u // PA_5 +#define PIN_D2 6u // PA_6 +#define PIN_D3 7u // PA_7 +#define PIN_D4 8u // PA_8 +#define PIN_D5 9u // PA_9 +#define PIN_D6 10u // PA_10 +#define PIN_D7 11u // PA_11 +#define PIN_D8 12u // PA_12 +#define PIN_D9 14u // PA_14 +#define PIN_D10 15u // PA_15 +#define PIN_D11 18u // PA_18 +#define PIN_D12 19u // PA_19 +#define PIN_D13 22u // PA_22 +#define PIN_D14 23u // PA_23 +#define PIN_D15 29u // PA_29 +#define PIN_D16 30u // PA_30 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; diff --git a/boards/variants/generic-rtl8710bn-2mb-788k.cpp b/boards/variants/generic-rtl8710bn-2mb-788k.c similarity index 70% rename from boards/variants/generic-rtl8710bn-2mb-788k.cpp rename to boards/variants/generic-rtl8710bn-2mb-788k.c index 0657707..a19fd6c 100644 --- a/boards/variants/generic-rtl8710bn-2mb-788k.cpp +++ b/boards/variants/generic-rtl8710bn-2mb-788k.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA00, PWM2 {PA_0, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA05, PWM4, WAKE1 @@ -47,6 +45,25 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // PA_0 (D0) + [5] = &(lt_arduino_pin_info_list[1]), // PA_5 (D1) + [6] = &(lt_arduino_pin_info_list[2]), // PA_6 (D2) + [7] = &(lt_arduino_pin_info_list[3]), // PA_7 (D3) + [8] = &(lt_arduino_pin_info_list[4]), // PA_8 (D4) + [9] = &(lt_arduino_pin_info_list[5]), // PA_9 (D5) + [10] = &(lt_arduino_pin_info_list[6]), // PA_10 (D6) + [11] = &(lt_arduino_pin_info_list[7]), // PA_11 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[9]), // PA_14 (D9) + [15] = &(lt_arduino_pin_info_list[10]), // PA_15 (D10) + [18] = &(lt_arduino_pin_info_list[11]), // PA_18 (D11) + [19] = &(lt_arduino_pin_info_list[12]), // PA_19 (D12) + [22] = &(lt_arduino_pin_info_list[13]), // PA_22 (D13) + [23] = &(lt_arduino_pin_info_list[14]), // PA_23 (D14) + [29] = &(lt_arduino_pin_info_list[15]), // PA_29 (D15) + [30] = &(lt_arduino_pin_info_list[16]), // PA_30 (D16) + [41] = &(lt_arduino_pin_info_list[17]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/generic-rtl8710bn-2mb-788k.h b/boards/variants/generic-rtl8710bn-2mb-788k.h index 870a76f..3174473 100644 --- a/boards/variants/generic-rtl8710bn-2mb-788k.h +++ b/boards/variants/generic-rtl8710bn-2mb-788k.h @@ -6,97 +6,145 @@ // Pins // ---- -#define PINS_COUNT 18 -#define NUM_DIGITAL_PINS 17 -#define NUM_ANALOG_INPUTS 2 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 12u // PA_19 -#define PIN_A1 17u // AD_2 -#define A0 PIN_A0 -#define A1 PIN_A1 +#define PINS_COUNT 18 // Total GPIO count +#define NUM_DIGITAL_PINS 17 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 12u // PA_19 -#define PIN_SPI0_MISO 13u // PA_22 -#define PIN_SPI0_MOSI 14u // PA_23 -#define PIN_SPI0_SCK 11u // PA_18 -#define PIN_SPI1_CS 12u // PA_19 -#define PIN_SPI1_MISO 13u // PA_22 -#define PIN_SPI1_MOSI 14u // PA_23 -#define PIN_SPI1_SCK 11u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 13u // PA_22 -#define PIN_WIRE0_SCL_1 15u // PA_29 -#define PIN_WIRE0_SDA_0 12u // PA_19 -#define PIN_WIRE0_SDA_1 16u // PA_30 -#define PIN_WIRE1_SCL 11u // PA_18 -#define PIN_WIRE1_SDA 14u // PA_23 +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 12u // PA_19 -#define PIN_SERIAL0_RTS 13u // PA_22 -#define PIN_SERIAL0_RX 11u // PA_18 -#define PIN_SERIAL0_TX 14u // PA_23 -#define PIN_SERIAL2_RX 15u // PA_29 -#define PIN_SERIAL2_TX 16u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 12u // PA_19 -#define PIN_ADC2 17u // AD_2 -#define PIN_CS0 12u // PA_19 -#define PIN_CS1 12u // PA_19 -#define PIN_CTS0 12u // PA_19 -#define PIN_FCS 2u // PA_6 -#define PIN_FD0 5u // PA_9 -#define PIN_FD1 3u // PA_7 -#define PIN_FD2 4u // PA_8 -#define PIN_FD3 7u // PA_11 -#define PIN_FSCK 6u // PA_10 -#define PIN_MISO0 13u // PA_22 -#define PIN_MISO1 13u // PA_22 -#define PIN_MOSI0 14u // PA_23 -#define PIN_MOSI1 14u // PA_23 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_FCS 6u // PA_6 +#define PIN_FD0 9u // PA_9 +#define PIN_FD1 7u // PA_7 +#define PIN_FD2 8u // PA_8 +#define PIN_FD3 11u // PA_11 +#define PIN_FSCK 10u // PA_10 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 #define PIN_PA00 0u // PA_0 -#define PIN_PA05 1u // PA_5 -#define PIN_PA06 2u // PA_6 -#define PIN_PA07 3u // PA_7 -#define PIN_PA08 4u // PA_8 -#define PIN_PA09 5u // PA_9 -#define PIN_PA10 6u // PA_10 -#define PIN_PA11 7u // PA_11 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 9u // PA_14 -#define PIN_PA15 10u // PA_15 -#define PIN_PA18 11u // PA_18 -#define PIN_PA19 12u // PA_19 -#define PIN_PA22 13u // PA_22 -#define PIN_PA23 14u // PA_23 -#define PIN_PA29 15u // PA_29 -#define PIN_PA30 16u // PA_30 -#define PIN_RTS0 13u // PA_22 -#define PIN_RX0 11u // PA_18 -#define PIN_RX2 15u // PA_29 -#define PIN_SCK0 11u // PA_18 -#define PIN_SCK1 11u // PA_18 -#define PIN_TX0 14u // PA_23 -#define PIN_TX2 16u // PA_30 +#define PIN_PA05 5u // PA_5 +#define PIN_PA06 6u // PA_6 +#define PIN_PA07 7u // PA_7 +#define PIN_PA08 8u // PA_8 +#define PIN_PA09 9u // PA_9 +#define PIN_PA10 10u // PA_10 +#define PIN_PA11 11u // PA_11 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 30u // PA_30 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // PA_0 +#define PIN_D1 5u // PA_5 +#define PIN_D2 6u // PA_6 +#define PIN_D3 7u // PA_7 +#define PIN_D4 8u // PA_8 +#define PIN_D5 9u // PA_9 +#define PIN_D6 10u // PA_10 +#define PIN_D7 11u // PA_11 +#define PIN_D8 12u // PA_12 +#define PIN_D9 14u // PA_14 +#define PIN_D10 15u // PA_15 +#define PIN_D11 18u // PA_18 +#define PIN_D12 19u // PA_19 +#define PIN_D13 22u // PA_22 +#define PIN_D14 23u // PA_23 +#define PIN_D15 29u // PA_29 +#define PIN_D16 30u // PA_30 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; diff --git a/boards/variants/generic-rtl8710bx-4mb-980k.cpp b/boards/variants/generic-rtl8710bx-4mb-980k.c similarity index 70% rename from boards/variants/generic-rtl8710bx-4mb-980k.cpp rename to boards/variants/generic-rtl8710bx-4mb-980k.c index ab73383..b2f0fce 100644 --- a/boards/variants/generic-rtl8710bx-4mb-980k.cpp +++ b/boards/variants/generic-rtl8710bx-4mb-980k.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA00, PWM2 {PA_0, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA05, PWM4, WAKE1 @@ -45,6 +43,24 @@ PinInfo pinTable[PINS_COUNT] = { // D16: PA30, UART2_TX, I2C0_SDA, PWM4 {PA_30, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // PA_0 (D0) + [5] = &(lt_arduino_pin_info_list[1]), // PA_5 (D1) + [6] = &(lt_arduino_pin_info_list[2]), // PA_6 (D2) + [7] = &(lt_arduino_pin_info_list[3]), // PA_7 (D3) + [8] = &(lt_arduino_pin_info_list[4]), // PA_8 (D4) + [9] = &(lt_arduino_pin_info_list[5]), // PA_9 (D5) + [10] = &(lt_arduino_pin_info_list[6]), // PA_10 (D6) + [11] = &(lt_arduino_pin_info_list[7]), // PA_11 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[9]), // PA_14 (D9) + [15] = &(lt_arduino_pin_info_list[10]), // PA_15 (D10) + [18] = &(lt_arduino_pin_info_list[11]), // PA_18 (D11) + [19] = &(lt_arduino_pin_info_list[12]), // PA_19 (D12) + [22] = &(lt_arduino_pin_info_list[13]), // PA_22 (D13) + [23] = &(lt_arduino_pin_info_list[14]), // PA_23 (D14) + [29] = &(lt_arduino_pin_info_list[15]), // PA_29 (D15) + [30] = &(lt_arduino_pin_info_list[16]), // PA_30 (D16) +}; +// clang-format on diff --git a/boards/variants/generic-rtl8710bx-4mb-980k.h b/boards/variants/generic-rtl8710bx-4mb-980k.h index ce00ee3..272ffca 100644 --- a/boards/variants/generic-rtl8710bx-4mb-980k.h +++ b/boards/variants/generic-rtl8710bx-4mb-980k.h @@ -6,94 +6,142 @@ // Pins // ---- -#define PINS_COUNT 17 -#define NUM_DIGITAL_PINS 17 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 12u // PA_19 -#define A0 PIN_A0 +#define PINS_COUNT 17 // Total GPIO count +#define NUM_DIGITAL_PINS 17 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 30 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 12u // PA_19 -#define PIN_SPI0_MISO 13u // PA_22 -#define PIN_SPI0_MOSI 14u // PA_23 -#define PIN_SPI0_SCK 11u // PA_18 -#define PIN_SPI1_CS 12u // PA_19 -#define PIN_SPI1_MISO 13u // PA_22 -#define PIN_SPI1_MOSI 14u // PA_23 -#define PIN_SPI1_SCK 11u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 13u // PA_22 -#define PIN_WIRE0_SCL_1 15u // PA_29 -#define PIN_WIRE0_SDA_0 12u // PA_19 -#define PIN_WIRE0_SDA_1 16u // PA_30 -#define PIN_WIRE1_SCL 11u // PA_18 -#define PIN_WIRE1_SDA 14u // PA_23 +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 12u // PA_19 -#define PIN_SERIAL0_RTS 13u // PA_22 -#define PIN_SERIAL0_RX 11u // PA_18 -#define PIN_SERIAL0_TX 14u // PA_23 -#define PIN_SERIAL2_RX 15u // PA_29 -#define PIN_SERIAL2_TX 16u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 12u // PA_19 -#define PIN_CS0 12u // PA_19 -#define PIN_CS1 12u // PA_19 -#define PIN_CTS0 12u // PA_19 -#define PIN_FCS 2u // PA_6 -#define PIN_FD0 5u // PA_9 -#define PIN_FD1 3u // PA_7 -#define PIN_FD2 4u // PA_8 -#define PIN_FD3 7u // PA_11 -#define PIN_FSCK 6u // PA_10 -#define PIN_MISO0 13u // PA_22 -#define PIN_MISO1 13u // PA_22 -#define PIN_MOSI0 14u // PA_23 -#define PIN_MOSI1 14u // PA_23 +#define PIN_ADC1 19u // PA_19 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_FCS 6u // PA_6 +#define PIN_FD0 9u // PA_9 +#define PIN_FD1 7u // PA_7 +#define PIN_FD2 8u // PA_8 +#define PIN_FD3 11u // PA_11 +#define PIN_FSCK 10u // PA_10 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 #define PIN_PA00 0u // PA_0 -#define PIN_PA05 1u // PA_5 -#define PIN_PA06 2u // PA_6 -#define PIN_PA07 3u // PA_7 -#define PIN_PA08 4u // PA_8 -#define PIN_PA09 5u // PA_9 -#define PIN_PA10 6u // PA_10 -#define PIN_PA11 7u // PA_11 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 9u // PA_14 -#define PIN_PA15 10u // PA_15 -#define PIN_PA18 11u // PA_18 -#define PIN_PA19 12u // PA_19 -#define PIN_PA22 13u // PA_22 -#define PIN_PA23 14u // PA_23 -#define PIN_PA29 15u // PA_29 -#define PIN_PA30 16u // PA_30 -#define PIN_RTS0 13u // PA_22 -#define PIN_RX0 11u // PA_18 -#define PIN_RX2 15u // PA_29 -#define PIN_SCK0 11u // PA_18 -#define PIN_SCK1 11u // PA_18 -#define PIN_TX0 14u // PA_23 -#define PIN_TX2 16u // PA_30 +#define PIN_PA05 5u // PA_5 +#define PIN_PA06 6u // PA_6 +#define PIN_PA07 7u // PA_7 +#define PIN_PA08 8u // PA_8 +#define PIN_PA09 9u // PA_9 +#define PIN_PA10 10u // PA_10 +#define PIN_PA11 11u // PA_11 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 30u // PA_30 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // PA_0 +#define PIN_D1 5u // PA_5 +#define PIN_D2 6u // PA_6 +#define PIN_D3 7u // PA_7 +#define PIN_D4 8u // PA_8 +#define PIN_D5 9u // PA_9 +#define PIN_D6 10u // PA_10 +#define PIN_D7 11u // PA_11 +#define PIN_D8 12u // PA_12 +#define PIN_D9 14u // PA_14 +#define PIN_D10 15u // PA_15 +#define PIN_D11 18u // PA_18 +#define PIN_D12 19u // PA_19 +#define PIN_D13 22u // PA_22 +#define PIN_D14 23u // PA_23 +#define PIN_D15 29u // PA_29 +#define PIN_D16 30u // PA_30 +#define PIN_A0 19u // PA_19 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; diff --git a/boards/variants/generic-rtl8720cf-2mb-992k.cpp b/boards/variants/generic-rtl8720cf-2mb-992k.c similarity index 70% rename from boards/variants/generic-rtl8720cf-2mb-992k.cpp rename to boards/variants/generic-rtl8720cf-2mb-992k.c index 7bedd2d..26deb19 100644 --- a/boards/variants/generic-rtl8720cf-2mb-992k.cpp +++ b/boards/variants/generic-rtl8720cf-2mb-992k.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA00, TCK, UART1_RX, PWM0, SWCLK {PIN_A0, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_JTAG | PIN_SWD | PIN_UART, PIN_NONE, 0}, // D1: PA01, TMS, UART1_TX, PWM1, SWDIO @@ -51,6 +49,27 @@ PinInfo pinTable[PINS_COUNT] = { // D19: PA23, PWM7 {PIN_A23, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[0]), // PIN_A0 (D0) + [1] = &(lt_arduino_pin_info_list[1]), // PIN_A1 (D1) + [2] = &(lt_arduino_pin_info_list[2]), // PIN_A2 (D2) + [3] = &(lt_arduino_pin_info_list[3]), // PIN_A3 (D3) + [4] = &(lt_arduino_pin_info_list[4]), // PIN_A4 (D4) + [7] = &(lt_arduino_pin_info_list[5]), // PIN_A7 (D5) + [8] = &(lt_arduino_pin_info_list[6]), // PIN_A8 (D6) + [9] = &(lt_arduino_pin_info_list[7]), // PIN_A9 (D7) + [10] = &(lt_arduino_pin_info_list[8]), // PIN_A10 (D8) + [11] = &(lt_arduino_pin_info_list[9]), // PIN_A11 (D9) + [12] = &(lt_arduino_pin_info_list[10]), // PIN_A12 (D10) + [13] = &(lt_arduino_pin_info_list[11]), // PIN_A13 (D11) + [14] = &(lt_arduino_pin_info_list[12]), // PIN_A14 (D12) + [15] = &(lt_arduino_pin_info_list[13]), // PIN_A15 (D13) + [16] = &(lt_arduino_pin_info_list[14]), // PIN_A16 (D14) + [17] = &(lt_arduino_pin_info_list[15]), // PIN_A17 (D15) + [18] = &(lt_arduino_pin_info_list[16]), // PIN_A18 (D16) + [19] = &(lt_arduino_pin_info_list[17]), // PIN_A19 (D17) + [20] = &(lt_arduino_pin_info_list[18]), // PIN_A20 (D18) + [23] = &(lt_arduino_pin_info_list[19]), // PIN_A23 (D19) +}; +// clang-format on diff --git a/boards/variants/generic-rtl8720cf-2mb-992k.h b/boards/variants/generic-rtl8720cf-2mb-992k.h index ea6e7da..fddd627 100644 --- a/boards/variants/generic-rtl8720cf-2mb-992k.h +++ b/boards/variants/generic-rtl8720cf-2mb-992k.h @@ -6,88 +6,156 @@ // Pins // ---- -#define PINS_COUNT 20 -#define NUM_DIGITAL_PINS 20 -#define NUM_ANALOG_OUTPUTS 0 +#define PINS_COUNT 20 // Total GPIO count +#define NUM_DIGITAL_PINS 20 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 0 // ADC inputs +#define NUM_ANALOG_OUTPUTS 16 // PWM & DAC outputs +#define PINS_GPIO_MAX 23 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 1 -#define PIN_SPI0_CS_0 2u // PIN_A2 -#define PIN_SPI0_CS_1 5u // PIN_A7 -#define PIN_SPI0_CS_2 13u // PIN_A15 -#define PIN_SPI0_MISO_0 8u // PIN_A10 -#define PIN_SPI0_MISO_1 18u // PIN_A20 -#define PIN_SPI0_MOSI_0 4u // PIN_A4 -#define PIN_SPI0_MOSI_1 7u // PIN_A9 -#define PIN_SPI0_MOSI_2 17u // PIN_A19 -#define PIN_SPI0_SCK_0 3u // PIN_A3 -#define PIN_SPI0_SCK_1 6u // PIN_A8 -#define PIN_SPI0_SCK_2 14u // PIN_A16 +#define PIN_SPI0_CS_0 2u // PIN_A2 +#define PIN_SPI0_CS_1 7u // PIN_A7 +#define PIN_SPI0_CS_2 15u // PIN_A15 +#define PIN_SPI0_MISO_0 10u // PIN_A10 +#define PIN_SPI0_MISO_1 20u // PIN_A20 +#define PIN_SPI0_MOSI_0 4u // PIN_A4 +#define PIN_SPI0_MOSI_1 9u // PIN_A9 +#define PIN_SPI0_MOSI_2 19u // PIN_A19 +#define PIN_SPI0_SCK_0 3u // PIN_A3 +#define PIN_SPI0_SCK_1 8u // PIN_A8 +#define PIN_SPI0_SCK_2 16u // PIN_A16 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE0_SCL_0 2u // PIN_A2 -#define PIN_WIRE0_SCL_1 9u // PIN_A11 -#define PIN_WIRE0_SCL_2 13u // PIN_A15 -#define PIN_WIRE0_SCL_3 17u // PIN_A19 -#define PIN_WIRE0_SDA_0 3u // PIN_A3 -#define PIN_WIRE0_SDA_1 10u // PIN_A12 -#define PIN_WIRE0_SDA_2 14u // PIN_A16 -#define PIN_WIRE0_SDA_3 18u // PIN_A20 +#define PIN_WIRE0_SCL_0 2u // PIN_A2 +#define PIN_WIRE0_SCL_1 11u // PIN_A11 +#define PIN_WIRE0_SCL_2 15u // PIN_A15 +#define PIN_WIRE0_SCL_3 19u // PIN_A19 +#define PIN_WIRE0_SDA_0 3u // PIN_A3 +#define PIN_WIRE0_SDA_1 12u // PIN_A12 +#define PIN_WIRE0_SDA_2 16u // PIN_A16 +#define PIN_WIRE0_SDA_3 20u // PIN_A20 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 3 -#define PIN_SERIAL0_CTS 8u // PIN_A10 -#define PIN_SERIAL0_RTS 7u // PIN_A9 -#define PIN_SERIAL0_RX_0 10u // PIN_A12 -#define PIN_SERIAL0_RX_1 11u // PIN_A13 -#define PIN_SERIAL0_TX_0 9u // PIN_A11 -#define PIN_SERIAL0_TX_1 12u // PIN_A14 -#define PIN_SERIAL1_CTS 4u // PIN_A4 -#define PIN_SERIAL1_RX_0 0u // PIN_A0 -#define PIN_SERIAL1_RX_1 2u // PIN_A2 -#define PIN_SERIAL1_TX_0 1u // PIN_A1 -#define PIN_SERIAL1_TX_1 3u // PIN_A3 -#define PIN_SERIAL2_CTS 17u // PIN_A19 -#define PIN_SERIAL2_RTS 18u // PIN_A20 -#define PIN_SERIAL2_RX 13u // PIN_A15 -#define PIN_SERIAL2_TX 14u // PIN_A16 +#define PIN_SERIAL0_CTS 10u // PIN_A10 +#define PIN_SERIAL0_RTS 9u // PIN_A9 +#define PIN_SERIAL0_RX_0 12u // PIN_A12 +#define PIN_SERIAL0_RX_1 13u // PIN_A13 +#define PIN_SERIAL0_TX_0 11u // PIN_A11 +#define PIN_SERIAL0_TX_1 14u // PIN_A14 +#define PIN_SERIAL1_CTS 4u // PIN_A4 +#define PIN_SERIAL1_RX_0 0u // PIN_A0 +#define PIN_SERIAL1_RX_1 2u // PIN_A2 +#define PIN_SERIAL1_TX_0 1u // PIN_A1 +#define PIN_SERIAL1_TX_1 3u // PIN_A3 +#define PIN_SERIAL2_CTS 19u // PIN_A19 +#define PIN_SERIAL2_RTS 20u // PIN_A20 +#define PIN_SERIAL2_RX 15u // PIN_A15 +#define PIN_SERIAL2_TX 16u // PIN_A16 // Pin function macros // ------------------- -#define PIN_CTS0 8u // PIN_A10 -#define PIN_CTS1 4u // PIN_A4 -#define PIN_CTS2 17u // PIN_A19 -#define PIN_PA00 0u // PIN_A0 -#define PIN_PA01 1u // PIN_A1 -#define PIN_PA02 2u // PIN_A2 -#define PIN_PA03 3u // PIN_A3 -#define PIN_PA04 4u // PIN_A4 -#define PIN_PA07 5u // PIN_A7 -#define PIN_PA08 6u // PIN_A8 -#define PIN_PA09 7u // PIN_A9 -#define PIN_PA10 8u // PIN_A10 -#define PIN_PA11 9u // PIN_A11 -#define PIN_PA12 10u // PIN_A12 -#define PIN_PA13 11u // PIN_A13 -#define PIN_PA14 12u // PIN_A14 -#define PIN_PA15 13u // PIN_A15 -#define PIN_PA16 14u // PIN_A16 -#define PIN_PA17 15u // PIN_A17 -#define PIN_PA18 16u // PIN_A18 -#define PIN_PA19 17u // PIN_A19 -#define PIN_PA20 18u // PIN_A20 -#define PIN_PA23 19u // PIN_A23 -#define PIN_RTS0 7u // PIN_A9 -#define PIN_RTS2 18u // PIN_A20 +#define PIN_CS0 15u // PIN_A15 +#define PIN_CTS0 10u // PIN_A10 +#define PIN_CTS1 4u // PIN_A4 +#define PIN_CTS2 19u // PIN_A19 +#define PIN_MISO0 20u // PIN_A20 +#define PIN_MOSI0 19u // PIN_A19 +#define PIN_PA00 0u // PIN_A0 +#define PIN_PA01 1u // PIN_A1 +#define PIN_PA02 2u // PIN_A2 +#define PIN_PA03 3u // PIN_A3 +#define PIN_PA04 4u // PIN_A4 +#define PIN_PA07 7u // PIN_A7 +#define PIN_PA08 8u // PIN_A8 +#define PIN_PA09 9u // PIN_A9 +#define PIN_PA10 10u // PIN_A10 +#define PIN_PA11 11u // PIN_A11 +#define PIN_PA12 12u // PIN_A12 +#define PIN_PA13 13u // PIN_A13 +#define PIN_PA14 14u // PIN_A14 +#define PIN_PA15 15u // PIN_A15 +#define PIN_PA16 16u // PIN_A16 +#define PIN_PA17 17u // PIN_A17 +#define PIN_PA18 18u // PIN_A18 +#define PIN_PA19 19u // PIN_A19 +#define PIN_PA20 20u // PIN_A20 +#define PIN_PA23 23u // PIN_A23 +#define PIN_PWM0 20u // PIN_A20 +#define PIN_PWM1 12u // PIN_A12 +#define PIN_PWM2 14u // PIN_A14 +#define PIN_PWM3 15u // PIN_A15 +#define PIN_PWM4 16u // PIN_A16 +#define PIN_PWM5 17u // PIN_A17 +#define PIN_PWM6 18u // PIN_A18 +#define PIN_PWM7 23u // PIN_A23 +#define PIN_RTS0 9u // PIN_A9 +#define PIN_RTS2 20u // PIN_A20 +#define PIN_RX0 13u // PIN_A13 +#define PIN_RX1 2u // PIN_A2 +#define PIN_RX2 15u // PIN_A15 +#define PIN_SCK0 16u // PIN_A16 +#define PIN_SCL0 19u // PIN_A19 +#define PIN_SDA0 20u // PIN_A20 +#define PIN_TX0 14u // PIN_A14 +#define PIN_TX1 3u // PIN_A3 +#define PIN_TX2 16u // PIN_A16 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_WIRE0 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_WIRE0 1 +#define SERIAL_INTERFACES_COUNT 3 +#define SPI_INTERFACES_COUNT 1 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 0u // PIN_A0 +#define PIN_D1 1u // PIN_A1 +#define PIN_D2 2u // PIN_A2 +#define PIN_D3 3u // PIN_A3 +#define PIN_D4 4u // PIN_A4 +#define PIN_D5 7u // PIN_A7 +#define PIN_D6 8u // PIN_A8 +#define PIN_D7 9u // PIN_A9 +#define PIN_D8 10u // PIN_A10 +#define PIN_D9 11u // PIN_A11 +#define PIN_D10 12u // PIN_A12 +#define PIN_D11 13u // PIN_A13 +#define PIN_D12 14u // PIN_A14 +#define PIN_D13 15u // PIN_A15 +#define PIN_D14 16u // PIN_A16 +#define PIN_D15 17u // PIN_A17 +#define PIN_D16 18u // PIN_A18 +#define PIN_D17 19u // PIN_A19 +#define PIN_D18 20u // PIN_A20 +#define PIN_D19 23u // PIN_A23 + +// Static pin names +// ---------------- +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; +static const unsigned char D16 = PIN_D16; +static const unsigned char D17 = PIN_D17; +static const unsigned char D18 = PIN_D18; +static const unsigned char D19 = PIN_D19; diff --git a/boards/variants/lsc-lma35-t.cpp b/boards/variants/lsc-lma35-t.c similarity index 64% rename from boards/variants/lsc-lma35-t.cpp rename to boards/variants/lsc-lma35-t.c index 528c92c..2ac070c 100644 --- a/boards/variants/lsc-lma35-t.cpp +++ b/boards/variants/lsc-lma35-t.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P26, PWM5, IRDA {GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -41,6 +39,22 @@ PinInfo pinTable[PINS_COUNT] = { // D14: P1, UART2_RX, I2C2_SDA {GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[5]), // GPIO0 (D5) + [1] = &(lt_arduino_pin_info_list[14]), // GPIO1 (D14) + [6] = &(lt_arduino_pin_info_list[10]), // GPIO6 (D10) + [7] = &(lt_arduino_pin_info_list[11]), // GPIO7 (D11) + [8] = &(lt_arduino_pin_info_list[7]), // GPIO8 (D7) + [9] = &(lt_arduino_pin_info_list[8]), // GPIO9 (D8) + [10] = &(lt_arduino_pin_info_list[12]), // GPIO10 (D12) + [11] = &(lt_arduino_pin_info_list[13]), // GPIO11 (D13) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [16] = &(lt_arduino_pin_info_list[2]), // GPIO16 (D2) + [21] = &(lt_arduino_pin_info_list[9]), // GPIO21 (D9) + [22] = &(lt_arduino_pin_info_list[4]), // GPIO22 (D4) + [23] = &(lt_arduino_pin_info_list[6]), // GPIO23 (D6) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[0]), // GPIO26 (D0) +}; +// clang-format on diff --git a/boards/variants/lsc-lma35-t.h b/boards/variants/lsc-lma35-t.h index 458fd87..695df45 100644 --- a/boards/variants/lsc-lma35-t.h +++ b/boards/variants/lsc-lma35-t.h @@ -6,70 +6,100 @@ // Pins // ---- -#define PINS_COUNT 15 -#define NUM_DIGITAL_PINS 15 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 6u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 15 // Total GPIO count +#define NUM_DIGITAL_PINS 15 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE2_SCL 5u // GPIO0 -#define PIN_WIRE2_SDA 14u // GPIO1 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 12u // GPIO10 -#define PIN_SERIAL1_TX 13u // GPIO11 -#define PIN_SERIAL2_RX 14u // GPIO1 -#define PIN_SERIAL2_TX 5u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 6u // GPIO23 -#define PIN_MOSI 2u // GPIO16 -#define PIN_P0 5u // GPIO0 -#define PIN_P1 14u // GPIO1 -#define PIN_P6 10u // GPIO6 -#define PIN_P7 11u // GPIO7 -#define PIN_P8 7u // GPIO8 -#define PIN_P9 8u // GPIO9 -#define PIN_P10 12u // GPIO10 -#define PIN_P11 13u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P16 2u // GPIO16 -#define PIN_P21 9u // GPIO21 -#define PIN_P22 4u // GPIO22 -#define PIN_P23 6u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 0u // GPIO26 -#define PIN_PWM0 10u // GPIO6 -#define PIN_PWM1 11u // GPIO7 -#define PIN_PWM2 7u // GPIO8 -#define PIN_PWM3 8u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 0u // GPIO26 -#define PIN_RX1 12u // GPIO10 -#define PIN_RX2 14u // GPIO1 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL2 5u // GPIO0 -#define PIN_SDA1 9u // GPIO21 -#define PIN_SDA2 14u // GPIO1 -#define PIN_TX1 13u // GPIO11 -#define PIN_TX2 5u // GPIO0 +#define PIN_ADC3 23u // GPIO23 +#define PIN_MOSI 16u // GPIO16 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P9 9u // GPIO9 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P14 14u // GPIO14 +#define PIN_P16 16u // GPIO16 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 26u // GPIO26 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 16u // GPIO16 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 22u // GPIO22 +#define PIN_D5 0u // GPIO0 +#define PIN_D6 23u // GPIO23 +#define PIN_D7 8u // GPIO8 +#define PIN_D8 9u // GPIO9 +#define PIN_D9 21u // GPIO21 +#define PIN_D10 6u // GPIO6 +#define PIN_D11 7u // GPIO7 +#define PIN_D12 10u // GPIO10 +#define PIN_D13 11u // GPIO11 +#define PIN_D14 1u // GPIO1 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; diff --git a/boards/variants/lsc-lma35.cpp b/boards/variants/lsc-lma35.c similarity index 64% rename from boards/variants/lsc-lma35.cpp rename to boards/variants/lsc-lma35.c index b511787..c04545b 100644 --- a/boards/variants/lsc-lma35.cpp +++ b/boards/variants/lsc-lma35.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P26, PWM5, IRDA {GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -41,6 +39,22 @@ PinInfo pinTable[PINS_COUNT] = { // D14: P1, UART2_RX, I2C2_SDA {GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[5]), // GPIO0 (D5) + [1] = &(lt_arduino_pin_info_list[14]), // GPIO1 (D14) + [6] = &(lt_arduino_pin_info_list[10]), // GPIO6 (D10) + [7] = &(lt_arduino_pin_info_list[11]), // GPIO7 (D11) + [8] = &(lt_arduino_pin_info_list[7]), // GPIO8 (D7) + [9] = &(lt_arduino_pin_info_list[8]), // GPIO9 (D8) + [10] = &(lt_arduino_pin_info_list[12]), // GPIO10 (D12) + [11] = &(lt_arduino_pin_info_list[13]), // GPIO11 (D13) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [16] = &(lt_arduino_pin_info_list[2]), // GPIO16 (D2) + [21] = &(lt_arduino_pin_info_list[9]), // GPIO21 (D9) + [22] = &(lt_arduino_pin_info_list[4]), // GPIO22 (D4) + [23] = &(lt_arduino_pin_info_list[6]), // GPIO23 (D6) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[0]), // GPIO26 (D0) +}; +// clang-format on diff --git a/boards/variants/lsc-lma35.h b/boards/variants/lsc-lma35.h index 7612e73..4a0d153 100644 --- a/boards/variants/lsc-lma35.h +++ b/boards/variants/lsc-lma35.h @@ -6,70 +6,100 @@ // Pins // ---- -#define PINS_COUNT 15 -#define NUM_DIGITAL_PINS 15 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 6u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 15 // Total GPIO count +#define NUM_DIGITAL_PINS 15 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE2_SCL 5u // GPIO0 -#define PIN_WIRE2_SDA 14u // GPIO1 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 12u // GPIO10 -#define PIN_SERIAL1_TX 13u // GPIO11 -#define PIN_SERIAL2_RX 14u // GPIO1 -#define PIN_SERIAL2_TX 5u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 6u // GPIO23 -#define PIN_MOSI 2u // GPIO16 -#define PIN_P0 5u // GPIO0 -#define PIN_P1 14u // GPIO1 -#define PIN_P6 10u // GPIO6 -#define PIN_P7 11u // GPIO7 -#define PIN_P8 7u // GPIO8 -#define PIN_P9 8u // GPIO9 -#define PIN_P10 12u // GPIO10 -#define PIN_P11 13u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P16 2u // GPIO16 -#define PIN_P21 9u // GPIO21 -#define PIN_P22 4u // GPIO22 -#define PIN_P23 6u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 0u // GPIO26 -#define PIN_PWM0 10u // GPIO6 -#define PIN_PWM1 11u // GPIO7 -#define PIN_PWM2 7u // GPIO8 -#define PIN_PWM3 8u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 0u // GPIO26 -#define PIN_RX1 12u // GPIO10 -#define PIN_RX2 14u // GPIO1 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL2 5u // GPIO0 -#define PIN_SDA1 9u // GPIO21 -#define PIN_SDA2 14u // GPIO1 -#define PIN_TX1 13u // GPIO11 -#define PIN_TX2 5u // GPIO0 +#define PIN_ADC3 23u // GPIO23 +#define PIN_MOSI 16u // GPIO16 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P9 9u // GPIO9 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P14 14u // GPIO14 +#define PIN_P16 16u // GPIO16 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 26u // GPIO26 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 16u // GPIO16 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 22u // GPIO22 +#define PIN_D5 0u // GPIO0 +#define PIN_D6 23u // GPIO23 +#define PIN_D7 8u // GPIO8 +#define PIN_D8 9u // GPIO9 +#define PIN_D9 21u // GPIO21 +#define PIN_D10 6u // GPIO6 +#define PIN_D11 7u // GPIO7 +#define PIN_D12 10u // GPIO10 +#define PIN_D13 11u // GPIO11 +#define PIN_D14 1u // GPIO1 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; diff --git a/boards/variants/wb2l.cpp b/boards/variants/wb2l.c similarity index 64% rename from boards/variants/wb2l.cpp rename to boards/variants/wb2l.c index 84dd332..6501454 100644 --- a/boards/variants/wb2l.cpp +++ b/boards/variants/wb2l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P8, PWM2 {GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P7, PWM1 @@ -37,6 +35,20 @@ PinInfo pinTable[PINS_COUNT] = { // D12: P22, TDI, FSI {GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[8]), // GPIO0 (D8) + [1] = &(lt_arduino_pin_info_list[7]), // GPIO1 (D7) + [6] = &(lt_arduino_pin_info_list[2]), // GPIO6 (D2) + [7] = &(lt_arduino_pin_info_list[1]), // GPIO7 (D1) + [8] = &(lt_arduino_pin_info_list[0]), // GPIO8 (D0) + [10] = &(lt_arduino_pin_info_list[5]), // GPIO10 (D5) + [11] = &(lt_arduino_pin_info_list[6]), // GPIO11 (D6) + [20] = &(lt_arduino_pin_info_list[9]), // GPIO20 (D9) + [21] = &(lt_arduino_pin_info_list[10]), // GPIO21 (D10) + [22] = &(lt_arduino_pin_info_list[12]), // GPIO22 (D12) + [23] = &(lt_arduino_pin_info_list[11]), // GPIO23 (D11) + [24] = &(lt_arduino_pin_info_list[4]), // GPIO24 (D4) + [26] = &(lt_arduino_pin_info_list[3]), // GPIO26 (D3) +}; +// clang-format on diff --git a/boards/variants/wb2l.h b/boards/variants/wb2l.h index 57cf1ef..55a5d1b 100644 --- a/boards/variants/wb2l.h +++ b/boards/variants/wb2l.h @@ -6,69 +6,95 @@ // Pins // ---- -#define PINS_COUNT 13 -#define NUM_DIGITAL_PINS 13 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 11u // GPIO23 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 13 // Total GPIO count +#define NUM_DIGITAL_PINS 13 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 5 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 9u // GPIO20 -#define PIN_WIRE1_SDA 10u // GPIO21 -#define PIN_WIRE2_SCL 8u // GPIO0 -#define PIN_WIRE2_SDA 7u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 5u // GPIO10 -#define PIN_SERIAL1_TX 6u // GPIO11 -#define PIN_SERIAL2_RX 7u // GPIO1 -#define PIN_SERIAL2_TX 8u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 11u // GPIO23 -#define PIN_P0 8u // GPIO0 -#define PIN_P1 7u // GPIO1 -#define PIN_P6 2u // GPIO6 -#define PIN_P7 1u // GPIO7 -#define PIN_P8 0u // GPIO8 -#define PIN_P10 5u // GPIO10 -#define PIN_P11 6u // GPIO11 -#define PIN_P20 9u // GPIO20 -#define PIN_P21 10u // GPIO21 -#define PIN_P22 12u // GPIO22 -#define PIN_P23 11u // GPIO23 -#define PIN_P24 4u // GPIO24 -#define PIN_P26 3u // GPIO26 -#define PIN_PWM0 2u // GPIO6 -#define PIN_PWM1 1u // GPIO7 -#define PIN_PWM2 0u // GPIO8 -#define PIN_PWM4 4u // GPIO24 -#define PIN_PWM5 3u // GPIO26 -#define PIN_RX1 5u // GPIO10 -#define PIN_RX2 7u // GPIO1 -#define PIN_SCL1 9u // GPIO20 -#define PIN_SCL2 8u // GPIO0 -#define PIN_SDA1 10u // GPIO21 -#define PIN_SDA2 7u // GPIO1 -#define PIN_TX1 6u // GPIO11 -#define PIN_TX2 8u // GPIO0 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 8u // GPIO8 +#define PIN_D1 7u // GPIO7 +#define PIN_D2 6u // GPIO6 +#define PIN_D3 26u // GPIO26 +#define PIN_D4 24u // GPIO24 +#define PIN_D5 10u // GPIO10 +#define PIN_D6 11u // GPIO11 +#define PIN_D7 1u // GPIO1 +#define PIN_D8 0u // GPIO0 +#define PIN_D9 20u // GPIO20 +#define PIN_D10 21u // GPIO21 +#define PIN_D11 23u // GPIO23 +#define PIN_D12 22u // GPIO22 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; diff --git a/boards/variants/wb2s.cpp b/boards/variants/wb2s.c similarity index 64% rename from boards/variants/wb2s.cpp rename to boards/variants/wb2s.c index 543fe04..b08506c 100644 --- a/boards/variants/wb2s.cpp +++ b/boards/variants/wb2s.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P8, PWM2 {GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: P7, PWM1 @@ -39,6 +37,21 @@ PinInfo pinTable[PINS_COUNT] = { // D13: P22, TDI, FSI {GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[11]), // GPIO0 (D11) + [1] = &(lt_arduino_pin_info_list[10]), // GPIO1 (D10) + [6] = &(lt_arduino_pin_info_list[2]), // GPIO6 (D2) + [7] = &(lt_arduino_pin_info_list[1]), // GPIO7 (D1) + [8] = &(lt_arduino_pin_info_list[0]), // GPIO8 (D0) + [9] = &(lt_arduino_pin_info_list[9]), // GPIO9 (D9) + [10] = &(lt_arduino_pin_info_list[4]), // GPIO10 (D4) + [11] = &(lt_arduino_pin_info_list[5]), // GPIO11 (D5) + [20] = &(lt_arduino_pin_info_list[8]), // GPIO20 (D8) + [21] = &(lt_arduino_pin_info_list[12]), // GPIO21 (D12) + [22] = &(lt_arduino_pin_info_list[13]), // GPIO22 (D13) + [23] = &(lt_arduino_pin_info_list[3]), // GPIO23 (D3) + [24] = &(lt_arduino_pin_info_list[6]), // GPIO24 (D6) + [26] = &(lt_arduino_pin_info_list[7]), // GPIO26 (D7) +}; +// clang-format on diff --git a/boards/variants/wb2s.h b/boards/variants/wb2s.h index eb3617b..b7b5102 100644 --- a/boards/variants/wb2s.h +++ b/boards/variants/wb2s.h @@ -6,73 +6,99 @@ // Pins // ---- -#define PINS_COUNT 14 -#define NUM_DIGITAL_PINS 14 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 3u // GPIO23 -#define PIN_A0 3u // GPIO23 -#define A0 PIN_A0 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 14 // Total GPIO count +#define NUM_DIGITAL_PINS 14 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 8u // GPIO20 -#define PIN_WIRE1_SDA 12u // GPIO21 -#define PIN_WIRE2_SCL 11u // GPIO0 -#define PIN_WIRE2_SDA 10u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 4u // GPIO10 -#define PIN_SERIAL1_TX 5u // GPIO11 -#define PIN_SERIAL2_RX 10u // GPIO1 -#define PIN_SERIAL2_TX 11u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 3u // GPIO23 -#define PIN_P0 11u // GPIO0 -#define PIN_P1 10u // GPIO1 -#define PIN_P6 2u // GPIO6 -#define PIN_P7 1u // GPIO7 -#define PIN_P8 0u // GPIO8 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 #define PIN_P9 9u // GPIO9 -#define PIN_P10 4u // GPIO10 -#define PIN_P11 5u // GPIO11 -#define PIN_P20 8u // GPIO20 -#define PIN_P21 12u // GPIO21 -#define PIN_P22 13u // GPIO22 -#define PIN_P23 3u // GPIO23 -#define PIN_P24 6u // GPIO24 -#define PIN_P26 7u // GPIO26 -#define PIN_PWM0 2u // GPIO6 -#define PIN_PWM1 1u // GPIO7 -#define PIN_PWM2 0u // GPIO8 +#define PIN_P10 10u // GPIO10 +#define PIN_P11 11u // GPIO11 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 #define PIN_PWM3 9u // GPIO9 -#define PIN_PWM4 6u // GPIO24 -#define PIN_PWM5 7u // GPIO26 -#define PIN_RX1 4u // GPIO10 -#define PIN_RX2 10u // GPIO1 -#define PIN_SCL1 8u // GPIO20 -#define PIN_SCL2 11u // GPIO0 -#define PIN_SDA1 12u // GPIO21 -#define PIN_SDA2 10u // GPIO1 -#define PIN_TX1 5u // GPIO11 -#define PIN_TX2 11u // GPIO0 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 +#define PIN_RX1 10u // GPIO10 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 +#define PIN_TX1 11u // GPIO11 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 8u // GPIO8 +#define PIN_D1 7u // GPIO7 +#define PIN_D2 6u // GPIO6 +#define PIN_D3 23u // GPIO23 +#define PIN_D4 10u // GPIO10 +#define PIN_D5 11u // GPIO11 +#define PIN_D6 24u // GPIO24 +#define PIN_D7 26u // GPIO26 +#define PIN_D8 20u // GPIO20 +#define PIN_D9 9u // GPIO9 +#define PIN_D10 1u // GPIO1 +#define PIN_D11 0u // GPIO0 +#define PIN_D12 21u // GPIO21 +#define PIN_D13 22u // GPIO22 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; diff --git a/boards/variants/wb3l.cpp b/boards/variants/wb3l.c similarity index 64% rename from boards/variants/wb3l.cpp rename to boards/variants/wb3l.c index 5b75246..aad420e 100644 --- a/boards/variants/wb3l.cpp +++ b/boards/variants/wb3l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P23, ADC3, TDO, FSO {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -43,6 +41,23 @@ PinInfo pinTable[PINS_COUNT] = { // D15: P1, UART2_RX, I2C2_SDA {GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [1] = &(lt_arduino_pin_info_list[15]), // GPIO1 (D15) + [6] = &(lt_arduino_pin_info_list[4]), // GPIO6 (D4) + [7] = &(lt_arduino_pin_info_list[9]), // GPIO7 (D9) + [8] = &(lt_arduino_pin_info_list[8]), // GPIO8 (D8) + [9] = &(lt_arduino_pin_info_list[5]), // GPIO9 (D5) + [10] = &(lt_arduino_pin_info_list[10]), // GPIO10 (D10) + [11] = &(lt_arduino_pin_info_list[11]), // GPIO11 (D11) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [16] = &(lt_arduino_pin_info_list[7]), // GPIO16 (D7) + [20] = &(lt_arduino_pin_info_list[14]), // GPIO20 (D14) + [21] = &(lt_arduino_pin_info_list[13]), // GPIO21 (D13) + [22] = &(lt_arduino_pin_info_list[12]), // GPIO22 (D12) + [23] = &(lt_arduino_pin_info_list[0]), // GPIO23 (D0) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[2]), // GPIO26 (D2) +}; +// clang-format on diff --git a/boards/variants/wb3l.h b/boards/variants/wb3l.h index 4f3b580..77e07bc 100644 --- a/boards/variants/wb3l.h +++ b/boards/variants/wb3l.h @@ -6,77 +6,107 @@ // Pins // ---- -#define PINS_COUNT 16 -#define NUM_DIGITAL_PINS 16 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 0u // GPIO23 -#define PIN_A0 0u // GPIO23 -#define A0 PIN_A0 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 16 // Total GPIO count +#define NUM_DIGITAL_PINS 16 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 14u // GPIO20 -#define PIN_WIRE1_SDA 13u // GPIO21 -#define PIN_WIRE2_SCL 6u // GPIO0 -#define PIN_WIRE2_SDA 15u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 10u // GPIO10 -#define PIN_SERIAL1_TX 11u // GPIO11 -#define PIN_SERIAL2_RX 15u // GPIO1 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 0u // GPIO23 -#define PIN_MOSI 7u // GPIO16 -#define PIN_P0 6u // GPIO0 -#define PIN_P1 15u // GPIO1 -#define PIN_P6 4u // GPIO6 -#define PIN_P7 9u // GPIO7 +#define PIN_ADC3 23u // GPIO23 +#define PIN_MOSI 16u // GPIO16 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 #define PIN_P8 8u // GPIO8 -#define PIN_P9 5u // GPIO9 +#define PIN_P9 9u // GPIO9 #define PIN_P10 10u // GPIO10 #define PIN_P11 11u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P16 7u // GPIO16 -#define PIN_P20 14u // GPIO20 -#define PIN_P21 13u // GPIO21 -#define PIN_P22 12u // GPIO22 -#define PIN_P23 0u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 2u // GPIO26 -#define PIN_PWM0 4u // GPIO6 -#define PIN_PWM1 9u // GPIO7 +#define PIN_P14 14u // GPIO14 +#define PIN_P16 16u // GPIO16 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 #define PIN_PWM2 8u // GPIO8 -#define PIN_PWM3 5u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 2u // GPIO26 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 #define PIN_RX1 10u // GPIO10 -#define PIN_RX2 15u // GPIO1 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL1 14u // GPIO20 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA1 13u // GPIO21 -#define PIN_SDA2 15u // GPIO1 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 #define PIN_TX1 11u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 23u // GPIO23 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 26u // GPIO26 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 6u // GPIO6 +#define PIN_D5 9u // GPIO9 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 16u // GPIO16 +#define PIN_D8 8u // GPIO8 +#define PIN_D9 7u // GPIO7 +#define PIN_D10 10u // GPIO10 +#define PIN_D11 11u // GPIO11 +#define PIN_D12 22u // GPIO22 +#define PIN_D13 21u // GPIO21 +#define PIN_D14 20u // GPIO20 +#define PIN_D15 1u // GPIO1 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; +static const unsigned char D15 = PIN_D15; diff --git a/boards/variants/wb3s.cpp b/boards/variants/wb3s.c similarity index 64% rename from boards/variants/wb3s.cpp rename to boards/variants/wb3s.c index 20dd48b..9866697 100644 --- a/boards/variants/wb3s.cpp +++ b/boards/variants/wb3s.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: P23, ADC3, TDO, FSO {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, // D1: P14, SD_CLK, SCK @@ -41,6 +39,22 @@ PinInfo pinTable[PINS_COUNT] = { // D14: P20, I2C1_SCL, TCK, FSCK {GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[6]), // GPIO0 (D6) + [1] = &(lt_arduino_pin_info_list[7]), // GPIO1 (D7) + [6] = &(lt_arduino_pin_info_list[4]), // GPIO6 (D4) + [7] = &(lt_arduino_pin_info_list[5]), // GPIO7 (D5) + [8] = &(lt_arduino_pin_info_list[9]), // GPIO8 (D9) + [9] = &(lt_arduino_pin_info_list[8]), // GPIO9 (D8) + [10] = &(lt_arduino_pin_info_list[10]), // GPIO10 (D10) + [11] = &(lt_arduino_pin_info_list[11]), // GPIO11 (D11) + [14] = &(lt_arduino_pin_info_list[1]), // GPIO14 (D1) + [20] = &(lt_arduino_pin_info_list[14]), // GPIO20 (D14) + [21] = &(lt_arduino_pin_info_list[13]), // GPIO21 (D13) + [22] = &(lt_arduino_pin_info_list[12]), // GPIO22 (D12) + [23] = &(lt_arduino_pin_info_list[0]), // GPIO23 (D0) + [24] = &(lt_arduino_pin_info_list[3]), // GPIO24 (D3) + [26] = &(lt_arduino_pin_info_list[2]), // GPIO26 (D2) +}; +// clang-format on diff --git a/boards/variants/wb3s.h b/boards/variants/wb3s.h index b658493..f875fe8 100644 --- a/boards/variants/wb3s.h +++ b/boards/variants/wb3s.h @@ -6,75 +6,103 @@ // Pins // ---- -#define PINS_COUNT 15 -#define NUM_DIGITAL_PINS 15 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 0u // GPIO23 -#define PIN_A0 0u // GPIO23 -#define A0 PIN_A0 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 15 // Total GPIO count +#define NUM_DIGITAL_PINS 15 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 26 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE1_SCL 14u // GPIO20 -#define PIN_WIRE1_SDA 13u // GPIO21 -#define PIN_WIRE2_SCL 6u // GPIO0 -#define PIN_WIRE2_SDA 7u // GPIO1 +#define PIN_WIRE1_SCL 20u // GPIO20 +#define PIN_WIRE1_SDA 21u // GPIO21 +#define PIN_WIRE2_SCL 0u // GPIO0 +#define PIN_WIRE2_SDA 1u // GPIO1 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL1_RX 10u // GPIO10 -#define PIN_SERIAL1_TX 11u // GPIO11 -#define PIN_SERIAL2_RX 7u // GPIO1 -#define PIN_SERIAL2_TX 6u // GPIO0 +#define PIN_SERIAL1_RX 10u // GPIO10 +#define PIN_SERIAL1_TX 11u // GPIO11 +#define PIN_SERIAL2_RX 1u // GPIO1 +#define PIN_SERIAL2_TX 0u // GPIO0 // Pin function macros // ------------------- -#define PIN_ADC3 0u // GPIO23 -#define PIN_P0 6u // GPIO0 -#define PIN_P1 7u // GPIO1 -#define PIN_P6 4u // GPIO6 -#define PIN_P7 5u // GPIO7 -#define PIN_P8 9u // GPIO8 -#define PIN_P9 8u // GPIO9 +#define PIN_ADC3 23u // GPIO23 +#define PIN_P0 0u // GPIO0 +#define PIN_P1 1u // GPIO1 +#define PIN_P6 6u // GPIO6 +#define PIN_P7 7u // GPIO7 +#define PIN_P8 8u // GPIO8 +#define PIN_P9 9u // GPIO9 #define PIN_P10 10u // GPIO10 #define PIN_P11 11u // GPIO11 -#define PIN_P14 1u // GPIO14 -#define PIN_P20 14u // GPIO20 -#define PIN_P21 13u // GPIO21 -#define PIN_P22 12u // GPIO22 -#define PIN_P23 0u // GPIO23 -#define PIN_P24 3u // GPIO24 -#define PIN_P26 2u // GPIO26 -#define PIN_PWM0 4u // GPIO6 -#define PIN_PWM1 5u // GPIO7 -#define PIN_PWM2 9u // GPIO8 -#define PIN_PWM3 8u // GPIO9 -#define PIN_PWM4 3u // GPIO24 -#define PIN_PWM5 2u // GPIO26 +#define PIN_P14 14u // GPIO14 +#define PIN_P20 20u // GPIO20 +#define PIN_P21 21u // GPIO21 +#define PIN_P22 22u // GPIO22 +#define PIN_P23 23u // GPIO23 +#define PIN_P24 24u // GPIO24 +#define PIN_P26 26u // GPIO26 +#define PIN_PWM0 6u // GPIO6 +#define PIN_PWM1 7u // GPIO7 +#define PIN_PWM2 8u // GPIO8 +#define PIN_PWM3 9u // GPIO9 +#define PIN_PWM4 24u // GPIO24 +#define PIN_PWM5 26u // GPIO26 #define PIN_RX1 10u // GPIO10 -#define PIN_RX2 7u // GPIO1 -#define PIN_SCK 1u // GPIO14 -#define PIN_SCL1 14u // GPIO20 -#define PIN_SCL2 6u // GPIO0 -#define PIN_SDA1 13u // GPIO21 -#define PIN_SDA2 7u // GPIO1 +#define PIN_RX2 1u // GPIO1 +#define PIN_SCK 14u // GPIO14 +#define PIN_SCL1 20u // GPIO20 +#define PIN_SCL2 0u // GPIO0 +#define PIN_SDA1 21u // GPIO21 +#define PIN_SDA2 1u // GPIO1 #define PIN_TX1 11u // GPIO11 -#define PIN_TX2 6u // GPIO0 +#define PIN_TX2 0u // GPIO0 // Port availability // ----------------- -#define HAS_SERIAL1 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE1 1 -#define HAS_WIRE2 1 +#define HAS_SERIAL1 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE1 1 +#define HAS_WIRE2 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 23u // GPIO23 +#define PIN_D1 14u // GPIO14 +#define PIN_D2 26u // GPIO26 +#define PIN_D3 24u // GPIO24 +#define PIN_D4 6u // GPIO6 +#define PIN_D5 7u // GPIO7 +#define PIN_D6 0u // GPIO0 +#define PIN_D7 1u // GPIO1 +#define PIN_D8 9u // GPIO9 +#define PIN_D9 8u // GPIO8 +#define PIN_D10 10u // GPIO10 +#define PIN_D11 11u // GPIO11 +#define PIN_D12 22u // GPIO22 +#define PIN_D13 21u // GPIO21 +#define PIN_D14 20u // GPIO20 +#define PIN_A0 23u // GPIO23 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; +static const unsigned char D11 = PIN_D11; +static const unsigned char D12 = PIN_D12; +static const unsigned char D13 = PIN_D13; +static const unsigned char D14 = PIN_D14; diff --git a/boards/variants/wr2.cpp b/boards/variants/wr2.c similarity index 68% rename from boards/variants/wr2.cpp rename to boards/variants/wr2.c index 59e09f3..7dcdcdc 100644 --- a/boards/variants/wr2.cpp +++ b/boards/variants/wr2.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA12, PWM3 {PA_12, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA00, PWM2 @@ -27,6 +25,15 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[1]), // PA_0 (D1) + [5] = &(lt_arduino_pin_info_list[2]), // PA_5 (D2) + [12] = &(lt_arduino_pin_info_list[0]), // PA_12 (D0) + [14] = &(lt_arduino_pin_info_list[5]), // PA_14 (D6) + [15] = &(lt_arduino_pin_info_list[6]), // PA_15 (D7) + [18] = &(lt_arduino_pin_info_list[3]), // PA_18 (D4) + [23] = &(lt_arduino_pin_info_list[4]), // PA_23 (D5) + [41] = &(lt_arduino_pin_info_list[7]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr2.h b/boards/variants/wr2.h index e3f255c..0c9909d 100644 --- a/boards/variants/wr2.h +++ b/boards/variants/wr2.h @@ -6,52 +6,71 @@ // Pins // ---- -#define PINS_COUNT 8 -#define NUM_DIGITAL_PINS 7 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A1 7u // AD_2 -#define A1 PIN_A1 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 8 // Total GPIO count +#define NUM_DIGITAL_PINS 7 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 6 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE1_SCL 3u // PA_18 -#define PIN_WIRE1_SDA 4u // PA_23 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 1 -#define PIN_SERIAL0_RX 3u // PA_18 -#define PIN_SERIAL0_TX 4u // PA_23 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 // Pin function macros // ------------------- -#define PIN_ADC2 7u // AD_2 -#define PIN_MOSI0 4u // PA_23 -#define PIN_MOSI1 4u // PA_23 -#define PIN_PA00 1u // PA_0 -#define PIN_PA05 2u // PA_5 -#define PIN_PA12 0u // PA_12 -#define PIN_PA14 5u // PA_14 -#define PIN_PA15 6u // PA_15 -#define PIN_PA18 3u // PA_18 -#define PIN_PA23 4u // PA_23 -#define PIN_RX0 3u // PA_18 -#define PIN_SCK0 3u // PA_18 -#define PIN_SCK1 3u // PA_18 -#define PIN_SCL1 3u // PA_18 -#define PIN_SDA1 4u // PA_23 -#define PIN_TX0 4u // PA_23 +#define PIN_ADC2 41u // AD_2 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA23 23u // PA_23 +#define PIN_PWM0 14u // PA_14 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_RX0 18u // PA_18 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 1 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 12u // PA_12 +#define PIN_D1 0u // PA_0 +#define PIN_D2 5u // PA_5 +#define PIN_D4 18u // PA_18 +#define PIN_D5 23u // PA_23 +#define PIN_D6 14u // PA_14 +#define PIN_D7 15u // PA_15 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; diff --git a/boards/variants/wr2e.cpp b/boards/variants/wr2e.c similarity index 71% rename from boards/variants/wr2e.cpp rename to boards/variants/wr2e.c index 9f1973d..ab08bfb 100644 --- a/boards/variants/wr2e.cpp +++ b/boards/variants/wr2e.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA12, PWM3 {PA_12, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, // D1: PA19, ADC1, UART0_CTS, SPI0_CS, SPI1_CS, I2C0_SDA, SD_D3, TMR5_TRIG, I2S0_TX @@ -27,6 +25,15 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [5] = &(lt_arduino_pin_info_list[2]), // PA_5 (D2) + [12] = &(lt_arduino_pin_info_list[0]), // PA_12 (D0) + [14] = &(lt_arduino_pin_info_list[5]), // PA_14 (D5) + [15] = &(lt_arduino_pin_info_list[6]), // PA_15 (D6) + [18] = &(lt_arduino_pin_info_list[3]), // PA_18 (D3) + [19] = &(lt_arduino_pin_info_list[1]), // PA_19 (D1) + [23] = &(lt_arduino_pin_info_list[4]), // PA_23 (D4) + [41] = &(lt_arduino_pin_info_list[7]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr2e.h b/boards/variants/wr2e.h index 66d2f9f..279dbaf 100644 --- a/boards/variants/wr2e.h +++ b/boards/variants/wr2e.h @@ -6,60 +6,78 @@ // Pins // ---- -#define PINS_COUNT 8 -#define NUM_DIGITAL_PINS 7 -#define NUM_ANALOG_INPUTS 2 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 1u // PA_19 -#define PIN_A1 7u // AD_2 -#define A0 PIN_A0 -#define A1 PIN_A1 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 8 // Total GPIO count +#define NUM_DIGITAL_PINS 7 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 5 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 1 -#define PIN_WIRE1_SCL 3u // PA_18 -#define PIN_WIRE1_SDA 4u // PA_23 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 1 -#define PIN_SERIAL0_CTS 1u // PA_19 -#define PIN_SERIAL0_RX 3u // PA_18 -#define PIN_SERIAL0_TX 4u // PA_23 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 // Pin function macros // ------------------- -#define PIN_ADC1 1u // PA_19 -#define PIN_ADC2 7u // AD_2 -#define PIN_CS0 1u // PA_19 -#define PIN_CS1 1u // PA_19 -#define PIN_CTS0 1u // PA_19 -#define PIN_MOSI0 4u // PA_23 -#define PIN_MOSI1 4u // PA_23 -#define PIN_PA05 2u // PA_5 -#define PIN_PA12 0u // PA_12 -#define PIN_PA14 5u // PA_14 -#define PIN_PA15 6u // PA_15 -#define PIN_PA18 3u // PA_18 -#define PIN_PA19 1u // PA_19 -#define PIN_PA23 4u // PA_23 -#define PIN_RX0 3u // PA_18 -#define PIN_SCK0 3u // PA_18 -#define PIN_SCK1 3u // PA_18 -#define PIN_SCL1 3u // PA_18 -#define PIN_SDA0 1u // PA_19 -#define PIN_SDA1 4u // PA_23 -#define PIN_TX0 4u // PA_23 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA23 23u // PA_23 +#define PIN_PWM0 14u // PA_14 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_RX0 18u // PA_18 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 19u // PA_19 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 1 +#define WIRE_INTERFACES_COUNT 1 + +// Arduino pin names +// ----------------- +#define PIN_D0 12u // PA_12 +#define PIN_D1 19u // PA_19 +#define PIN_D2 5u // PA_5 +#define PIN_D3 18u // PA_18 +#define PIN_D4 23u // PA_23 +#define PIN_D5 14u // PA_14 +#define PIN_D6 15u // PA_15 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; diff --git a/boards/variants/wr2l.cpp b/boards/variants/wr2l.c similarity index 70% rename from boards/variants/wr2l.cpp rename to boards/variants/wr2l.c index 1ef6df8..250ab34 100644 --- a/boards/variants/wr2l.cpp +++ b/boards/variants/wr2l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA15, PWM1, SWDIO {PA_15, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_SWD, PIN_NONE, 0}, // D1: PA14, PWM0, SWCLK @@ -21,6 +19,12 @@ PinInfo pinTable[PINS_COUNT] = { // D4: PA12, PWM3 {PA_12, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [5] = &(lt_arduino_pin_info_list[2]), // PA_5 (D2) + [12] = &(lt_arduino_pin_info_list[4]), // PA_12 (D4) + [14] = &(lt_arduino_pin_info_list[1]), // PA_14 (D1) + [15] = &(lt_arduino_pin_info_list[0]), // PA_15 (D0) + [19] = &(lt_arduino_pin_info_list[3]), // PA_19 (D3) +}; +// clang-format on diff --git a/boards/variants/wr2l.h b/boards/variants/wr2l.h index dc186cd..70feccd 100644 --- a/boards/variants/wr2l.h +++ b/boards/variants/wr2l.h @@ -6,41 +6,43 @@ // Pins // ---- -#define PINS_COUNT 5 -#define NUM_DIGITAL_PINS 5 -#define NUM_ANALOG_INPUTS 1 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 3u // PA_19 -#define A0 PIN_A0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 - -// Wire Interfaces -// --------------- -#define WIRE_INTERFACES_COUNT 0 - -// Serial ports -// ------------ -#define SERIAL_INTERFACES_COUNT 0 +#define PINS_COUNT 5 // Total GPIO count +#define NUM_DIGITAL_PINS 5 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 4 // PWM & DAC outputs +#define PINS_GPIO_MAX 19 // Last usable GPIO number // Pin function macros // ------------------- -#define PIN_ADC1 3u // PA_19 -#define PIN_CS0 3u // PA_19 -#define PIN_CS1 3u // PA_19 -#define PIN_CTS0 3u // PA_19 -#define PIN_PA05 2u // PA_5 -#define PIN_PA12 4u // PA_12 -#define PIN_PA14 1u // PA_14 -#define PIN_PA15 0u // PA_15 -#define PIN_PA19 3u // PA_19 -#define PIN_PWM0 1u // PA_14 -#define PIN_PWM1 0u // PA_15 -#define PIN_PWM3 4u // PA_12 -#define PIN_PWM4 2u // PA_5 -#define PIN_SDA0 3u // PA_19 +#define PIN_ADC1 19u // PA_19 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA19 19u // PA_19 +#define PIN_PWM0 14u // PA_14 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_SDA0 19u // PA_19 + +// Arduino pin names +// ----------------- +#define PIN_D0 15u // PA_15 +#define PIN_D1 14u // PA_14 +#define PIN_D2 5u // PA_5 +#define PIN_D3 19u // PA_19 +#define PIN_D4 12u // PA_12 +#define PIN_A0 19u // PA_19 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; diff --git a/boards/variants/wr2le.cpp b/boards/variants/wr2le.c similarity index 70% rename from boards/variants/wr2le.cpp rename to boards/variants/wr2le.c index 2b188a5..00570cf 100644 --- a/boards/variants/wr2le.cpp +++ b/boards/variants/wr2le.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA15, PWM1, SWDIO {PA_15, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_SWD, PIN_NONE, 0}, // D1: PA14, PWM0, SWCLK @@ -21,6 +19,12 @@ PinInfo pinTable[PINS_COUNT] = { // D4: PA12, PWM3 {PA_12, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [5] = &(lt_arduino_pin_info_list[2]), // PA_5 (D2) + [12] = &(lt_arduino_pin_info_list[4]), // PA_12 (D4) + [14] = &(lt_arduino_pin_info_list[1]), // PA_14 (D1) + [15] = &(lt_arduino_pin_info_list[0]), // PA_15 (D0) + [22] = &(lt_arduino_pin_info_list[3]), // PA_22 (D3) +}; +// clang-format on diff --git a/boards/variants/wr2le.h b/boards/variants/wr2le.h index 2bc3957..5ac549c 100644 --- a/boards/variants/wr2le.h +++ b/boards/variants/wr2le.h @@ -6,35 +6,41 @@ // Pins // ---- -#define PINS_COUNT 5 -#define NUM_DIGITAL_PINS 5 -#define NUM_ANALOG_OUTPUTS 0 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 - -// Wire Interfaces -// --------------- -#define WIRE_INTERFACES_COUNT 0 - -// Serial ports -// ------------ -#define SERIAL_INTERFACES_COUNT 0 +#define PINS_COUNT 5 // Total GPIO count +#define NUM_DIGITAL_PINS 5 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 0 // ADC inputs +#define NUM_ANALOG_OUTPUTS 5 // PWM & DAC outputs +#define PINS_GPIO_MAX 22 // Last usable GPIO number // Pin function macros // ------------------- -#define PIN_MISO0 3u // PA_22 -#define PIN_MISO1 3u // PA_22 -#define PIN_PA05 2u // PA_5 -#define PIN_PA12 4u // PA_12 -#define PIN_PA14 1u // PA_14 -#define PIN_PA15 0u // PA_15 -#define PIN_PA22 3u // PA_22 -#define PIN_PWM0 1u // PA_14 -#define PIN_PWM1 0u // PA_15 -#define PIN_PWM3 4u // PA_12 -#define PIN_PWM4 2u // PA_5 -#define PIN_PWM5 3u // PA_22 -#define PIN_RTS0 3u // PA_22 -#define PIN_SCL0 3u // PA_22 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA22 22u // PA_22 +#define PIN_PWM0 14u // PA_14 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_SCL0 22u // PA_22 + +// Arduino pin names +// ----------------- +#define PIN_D0 15u // PA_15 +#define PIN_D1 14u // PA_14 +#define PIN_D2 5u // PA_5 +#define PIN_D3 22u // PA_22 +#define PIN_D4 12u // PA_12 + +// Static pin names +// ---------------- +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; diff --git a/boards/variants/wr3.cpp b/boards/variants/wr3.c similarity index 71% rename from boards/variants/wr3.cpp rename to boards/variants/wr3.c index b157c15..abdd128 100644 --- a/boards/variants/wr3.cpp +++ b/boards/variants/wr3.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA22, UART0_RTS, SPI0_MISO, SPI1_MISO, I2C0_SCL, SD_D0, PWM5, I2S0_WS, WAKE2 {PA_22, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_I2S | PIN_SPI | PIN_UART, PIN_NONE, 0}, // D1: PA19, ADC1, UART0_CTS, SPI0_CS, SPI1_CS, I2C0_SDA, SD_D3, TMR5_TRIG, I2S0_TX @@ -35,6 +33,19 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[4]), // PA_0 (D4) + [5] = &(lt_arduino_pin_info_list[7]), // PA_5 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[2]), // PA_14 (D2) + [15] = &(lt_arduino_pin_info_list[3]), // PA_15 (D3) + [18] = &(lt_arduino_pin_info_list[9]), // PA_18 (D9) + [19] = &(lt_arduino_pin_info_list[1]), // PA_19 (D1) + [22] = &(lt_arduino_pin_info_list[0]), // PA_22 (D0) + [23] = &(lt_arduino_pin_info_list[10]), // PA_23 (D10) + [29] = &(lt_arduino_pin_info_list[5]), // PA_29 (D5) + [30] = &(lt_arduino_pin_info_list[6]), // PA_30 (D6) + [41] = &(lt_arduino_pin_info_list[11]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr3.h b/boards/variants/wr3.h index bfdcd1b..e479168 100644 --- a/boards/variants/wr3.h +++ b/boards/variants/wr3.h @@ -6,85 +6,121 @@ // Pins // ---- -#define PINS_COUNT 12 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_INPUTS 2 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 1u // PA_19 -#define PIN_A1 11u // AD_2 -#define A0 PIN_A0 -#define A1 PIN_A1 +#define PINS_COUNT 12 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 1u // PA_19 -#define PIN_SPI0_MISO 0u // PA_22 -#define PIN_SPI0_MOSI 10u // PA_23 -#define PIN_SPI0_SCK 9u // PA_18 -#define PIN_SPI1_CS 1u // PA_19 -#define PIN_SPI1_MISO 0u // PA_22 -#define PIN_SPI1_MOSI 10u // PA_23 -#define PIN_SPI1_SCK 9u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 0u // PA_22 -#define PIN_WIRE0_SCL_1 5u // PA_29 -#define PIN_WIRE0_SDA_0 1u // PA_19 -#define PIN_WIRE0_SDA_1 6u // PA_30 -#define PIN_WIRE1_SCL 9u // PA_18 -#define PIN_WIRE1_SDA 10u // PA_23 +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 1u // PA_19 -#define PIN_SERIAL0_RTS 0u // PA_22 -#define PIN_SERIAL0_RX 9u // PA_18 -#define PIN_SERIAL0_TX 10u // PA_23 -#define PIN_SERIAL2_RX 5u // PA_29 -#define PIN_SERIAL2_TX 6u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 1u // PA_19 -#define PIN_ADC2 11u // AD_2 -#define PIN_CS0 1u // PA_19 -#define PIN_CS1 1u // PA_19 -#define PIN_CTS0 1u // PA_19 -#define PIN_MISO0 0u // PA_22 -#define PIN_MISO1 0u // PA_22 -#define PIN_MOSI0 10u // PA_23 -#define PIN_MOSI1 10u // PA_23 -#define PIN_PA00 4u // PA_0 -#define PIN_PA05 7u // PA_5 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 2u // PA_14 -#define PIN_PA15 3u // PA_15 -#define PIN_PA18 9u // PA_18 -#define PIN_PA19 1u // PA_19 -#define PIN_PA22 0u // PA_22 -#define PIN_PA23 10u // PA_23 -#define PIN_PA29 5u // PA_29 -#define PIN_PA30 6u // PA_30 -#define PIN_RTS0 0u // PA_22 -#define PIN_RX0 9u // PA_18 -#define PIN_RX2 5u // PA_29 -#define PIN_SCK0 9u // PA_18 -#define PIN_SCK1 9u // PA_18 -#define PIN_TX0 10u // PA_23 -#define PIN_TX2 6u // PA_30 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 22u // PA_22 +#define PIN_D1 19u // PA_19 +#define PIN_D2 14u // PA_14 +#define PIN_D3 15u // PA_15 +#define PIN_D4 0u // PA_0 +#define PIN_D5 29u // PA_29 +#define PIN_D6 30u // PA_30 +#define PIN_D7 5u // PA_5 +#define PIN_D8 12u // PA_12 +#define PIN_D9 18u // PA_18 +#define PIN_D10 23u // PA_23 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/wr3e.cpp b/boards/variants/wr3e.c similarity index 71% rename from boards/variants/wr3e.cpp rename to boards/variants/wr3e.c index c0abdc0..e47c10c 100644 --- a/boards/variants/wr3e.cpp +++ b/boards/variants/wr3e.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA29, UART2_RX, I2C0_SCL, PWM4 {PA_29, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: PA14, PWM0, SWCLK @@ -35,6 +33,19 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[4]), // PA_0 (D4) + [5] = &(lt_arduino_pin_info_list[7]), // PA_5 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[1]), // PA_14 (D1) + [15] = &(lt_arduino_pin_info_list[2]), // PA_15 (D2) + [18] = &(lt_arduino_pin_info_list[9]), // PA_18 (D9) + [19] = &(lt_arduino_pin_info_list[6]), // PA_19 (D6) + [22] = &(lt_arduino_pin_info_list[3]), // PA_22 (D3) + [23] = &(lt_arduino_pin_info_list[10]), // PA_23 (D10) + [29] = &(lt_arduino_pin_info_list[0]), // PA_29 (D0) + [30] = &(lt_arduino_pin_info_list[5]), // PA_30 (D5) + [41] = &(lt_arduino_pin_info_list[11]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr3e.h b/boards/variants/wr3e.h index c2bccac..4a4c942 100644 --- a/boards/variants/wr3e.h +++ b/boards/variants/wr3e.h @@ -6,85 +6,121 @@ // Pins // ---- -#define PINS_COUNT 12 -#define NUM_ANALOG_INPUTS 2 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A1 11u // AD_2 -#define PIN_A0 6u // PA_19 -#define A1 PIN_A1 -#define A0 PIN_A0 +#define PINS_COUNT 12 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 6u // PA_19 -#define PIN_SPI0_MISO 3u // PA_22 -#define PIN_SPI0_MOSI 10u // PA_23 -#define PIN_SPI0_SCK 9u // PA_18 -#define PIN_SPI1_CS 6u // PA_19 -#define PIN_SPI1_MISO 3u // PA_22 -#define PIN_SPI1_MOSI 10u // PA_23 -#define PIN_SPI1_SCK 9u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 0u // PA_29 -#define PIN_WIRE0_SCL_1 3u // PA_22 -#define PIN_WIRE0_SDA_0 5u // PA_30 -#define PIN_WIRE0_SDA_1 6u // PA_19 -#define PIN_WIRE1_SCL 9u // PA_18 -#define PIN_WIRE1_SDA 10u // PA_23 +#define PIN_WIRE0_SCL_0 29u // PA_29 +#define PIN_WIRE0_SCL_1 22u // PA_22 +#define PIN_WIRE0_SDA_0 30u // PA_30 +#define PIN_WIRE0_SDA_1 19u // PA_19 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 6u // PA_19 -#define PIN_SERIAL0_RTS 3u // PA_22 -#define PIN_SERIAL0_RX 9u // PA_18 -#define PIN_SERIAL0_TX 10u // PA_23 -#define PIN_SERIAL2_RX 0u // PA_29 -#define PIN_SERIAL2_TX 5u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 6u // PA_19 -#define PIN_ADC2 11u // AD_2 -#define PIN_CS0 6u // PA_19 -#define PIN_CS1 6u // PA_19 -#define PIN_CTS0 6u // PA_19 -#define PIN_MISO0 3u // PA_22 -#define PIN_MISO1 3u // PA_22 -#define PIN_MOSI0 10u // PA_23 -#define PIN_MOSI1 10u // PA_23 -#define PIN_PA00 4u // PA_0 -#define PIN_PA05 7u // PA_5 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 1u // PA_14 -#define PIN_PA15 2u // PA_15 -#define PIN_PA18 9u // PA_18 -#define PIN_PA19 6u // PA_19 -#define PIN_PA22 3u // PA_22 -#define PIN_PA23 10u // PA_23 -#define PIN_PA29 0u // PA_29 -#define PIN_PA30 5u // PA_30 -#define PIN_RTS0 3u // PA_22 -#define PIN_RX0 9u // PA_18 -#define PIN_RX2 0u // PA_29 -#define PIN_SCK0 9u // PA_18 -#define PIN_SCK1 9u // PA_18 -#define PIN_TX0 10u // PA_23 -#define PIN_TX2 5u // PA_30 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 22u // PA_22 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 19u // PA_19 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 29u // PA_29 +#define PIN_D1 14u // PA_14 +#define PIN_D2 15u // PA_15 +#define PIN_D3 22u // PA_22 +#define PIN_D4 0u // PA_0 +#define PIN_D5 30u // PA_30 +#define PIN_D6 19u // PA_19 +#define PIN_D7 5u // PA_5 +#define PIN_D8 12u // PA_12 +#define PIN_D9 18u // PA_18 +#define PIN_D10 23u // PA_23 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/wr3l.cpp b/boards/variants/wr3l.c similarity index 71% rename from boards/variants/wr3l.cpp rename to boards/variants/wr3l.c index ffa6ea6..8261af7 100644 --- a/boards/variants/wr3l.cpp +++ b/boards/variants/wr3l.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA22, UART0_RTS, SPI0_MISO, SPI1_MISO, I2C0_SCL, SD_D0, PWM5, I2S0_WS, WAKE2 {PA_22, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_I2S | PIN_SPI | PIN_UART, PIN_NONE, 0}, // D1: PA19, ADC1, UART0_CTS, SPI0_CS, SPI1_CS, I2C0_SDA, SD_D3, TMR5_TRIG, I2S0_TX @@ -35,6 +33,19 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[4]), // PA_0 (D4) + [5] = &(lt_arduino_pin_info_list[7]), // PA_5 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[2]), // PA_14 (D2) + [15] = &(lt_arduino_pin_info_list[3]), // PA_15 (D3) + [18] = &(lt_arduino_pin_info_list[9]), // PA_18 (D9) + [19] = &(lt_arduino_pin_info_list[1]), // PA_19 (D1) + [22] = &(lt_arduino_pin_info_list[0]), // PA_22 (D0) + [23] = &(lt_arduino_pin_info_list[10]), // PA_23 (D10) + [29] = &(lt_arduino_pin_info_list[5]), // PA_29 (D5) + [30] = &(lt_arduino_pin_info_list[6]), // PA_30 (D6) + [41] = &(lt_arduino_pin_info_list[11]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr3l.h b/boards/variants/wr3l.h index 9071c4c..5a692a6 100644 --- a/boards/variants/wr3l.h +++ b/boards/variants/wr3l.h @@ -6,85 +6,121 @@ // Pins // ---- -#define PINS_COUNT 12 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_INPUTS 2 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A0 1u // PA_19 -#define PIN_A1 11u // AD_2 -#define A0 PIN_A0 -#define A1 PIN_A1 +#define PINS_COUNT 12 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 1u // PA_19 -#define PIN_SPI0_MISO 0u // PA_22 -#define PIN_SPI0_MOSI 10u // PA_23 -#define PIN_SPI0_SCK 9u // PA_18 -#define PIN_SPI1_CS 1u // PA_19 -#define PIN_SPI1_MISO 0u // PA_22 -#define PIN_SPI1_MOSI 10u // PA_23 -#define PIN_SPI1_SCK 9u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 0u // PA_22 -#define PIN_WIRE0_SCL_1 5u // PA_29 -#define PIN_WIRE0_SDA_0 1u // PA_19 -#define PIN_WIRE0_SDA_1 6u // PA_30 -#define PIN_WIRE1_SCL 9u // PA_18 -#define PIN_WIRE1_SDA 10u // PA_23 +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 1u // PA_19 -#define PIN_SERIAL0_RTS 0u // PA_22 -#define PIN_SERIAL0_RX 9u // PA_18 -#define PIN_SERIAL0_TX 10u // PA_23 -#define PIN_SERIAL2_RX 5u // PA_29 -#define PIN_SERIAL2_TX 6u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 1u // PA_19 -#define PIN_ADC2 11u // AD_2 -#define PIN_CS0 1u // PA_19 -#define PIN_CS1 1u // PA_19 -#define PIN_CTS0 1u // PA_19 -#define PIN_MISO0 0u // PA_22 -#define PIN_MISO1 0u // PA_22 -#define PIN_MOSI0 10u // PA_23 -#define PIN_MOSI1 10u // PA_23 -#define PIN_PA00 4u // PA_0 -#define PIN_PA05 7u // PA_5 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 2u // PA_14 -#define PIN_PA15 3u // PA_15 -#define PIN_PA18 9u // PA_18 -#define PIN_PA19 1u // PA_19 -#define PIN_PA22 0u // PA_22 -#define PIN_PA23 10u // PA_23 -#define PIN_PA29 5u // PA_29 -#define PIN_PA30 6u // PA_30 -#define PIN_RTS0 0u // PA_22 -#define PIN_RX0 9u // PA_18 -#define PIN_RX2 5u // PA_29 -#define PIN_SCK0 9u // PA_18 -#define PIN_SCK1 9u // PA_18 -#define PIN_TX0 10u // PA_23 -#define PIN_TX2 6u // PA_30 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 22u // PA_22 +#define PIN_D1 19u // PA_19 +#define PIN_D2 14u // PA_14 +#define PIN_D3 15u // PA_15 +#define PIN_D4 0u // PA_0 +#define PIN_D5 29u // PA_29 +#define PIN_D6 30u // PA_30 +#define PIN_D7 5u // PA_5 +#define PIN_D8 12u // PA_12 +#define PIN_D9 18u // PA_18 +#define PIN_D10 23u // PA_23 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/wr3le.cpp b/boards/variants/wr3le.c similarity index 71% rename from boards/variants/wr3le.cpp rename to boards/variants/wr3le.c index 463831f..b96370f 100644 --- a/boards/variants/wr3le.cpp +++ b/boards/variants/wr3le.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA29, UART2_RX, I2C0_SCL, PWM4 {PA_29, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: PA14, PWM0, SWCLK @@ -35,6 +33,19 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[4]), // PA_0 (D4) + [5] = &(lt_arduino_pin_info_list[7]), // PA_5 (D7) + [12] = &(lt_arduino_pin_info_list[8]), // PA_12 (D8) + [14] = &(lt_arduino_pin_info_list[1]), // PA_14 (D1) + [15] = &(lt_arduino_pin_info_list[2]), // PA_15 (D2) + [18] = &(lt_arduino_pin_info_list[9]), // PA_18 (D9) + [19] = &(lt_arduino_pin_info_list[6]), // PA_19 (D6) + [22] = &(lt_arduino_pin_info_list[3]), // PA_22 (D3) + [23] = &(lt_arduino_pin_info_list[10]), // PA_23 (D10) + [29] = &(lt_arduino_pin_info_list[0]), // PA_29 (D0) + [30] = &(lt_arduino_pin_info_list[5]), // PA_30 (D5) + [41] = &(lt_arduino_pin_info_list[11]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr3le.h b/boards/variants/wr3le.h index 69c097d..8063f1b 100644 --- a/boards/variants/wr3le.h +++ b/boards/variants/wr3le.h @@ -6,85 +6,121 @@ // Pins // ---- -#define PINS_COUNT 12 -#define NUM_ANALOG_INPUTS 2 -#define NUM_DIGITAL_PINS 11 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A1 11u // AD_2 -#define PIN_A0 6u // PA_19 -#define A1 PIN_A1 -#define A0 PIN_A0 +#define PINS_COUNT 12 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 2 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // SPI Interfaces // -------------- -#define SPI_INTERFACES_COUNT 2 -#define PIN_SPI0_CS 6u // PA_19 -#define PIN_SPI0_MISO 3u // PA_22 -#define PIN_SPI0_MOSI 10u // PA_23 -#define PIN_SPI0_SCK 9u // PA_18 -#define PIN_SPI1_CS 6u // PA_19 -#define PIN_SPI1_MISO 3u // PA_22 -#define PIN_SPI1_MOSI 10u // PA_23 -#define PIN_SPI1_SCK 9u // PA_18 +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL_0 0u // PA_29 -#define PIN_WIRE0_SCL_1 3u // PA_22 -#define PIN_WIRE0_SDA_0 5u // PA_30 -#define PIN_WIRE0_SDA_1 6u // PA_19 -#define PIN_WIRE1_SCL 9u // PA_18 -#define PIN_WIRE1_SDA 10u // PA_23 +#define PIN_WIRE0_SCL_0 29u // PA_29 +#define PIN_WIRE0_SCL_1 22u // PA_22 +#define PIN_WIRE0_SDA_0 30u // PA_30 +#define PIN_WIRE0_SDA_1 19u // PA_19 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_CTS 6u // PA_19 -#define PIN_SERIAL0_RTS 3u // PA_22 -#define PIN_SERIAL0_RX 9u // PA_18 -#define PIN_SERIAL0_TX 10u // PA_23 -#define PIN_SERIAL2_RX 0u // PA_29 -#define PIN_SERIAL2_TX 5u // PA_30 +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC1 6u // PA_19 -#define PIN_ADC2 11u // AD_2 -#define PIN_CS0 6u // PA_19 -#define PIN_CS1 6u // PA_19 -#define PIN_CTS0 6u // PA_19 -#define PIN_MISO0 3u // PA_22 -#define PIN_MISO1 3u // PA_22 -#define PIN_MOSI0 10u // PA_23 -#define PIN_MOSI1 10u // PA_23 -#define PIN_PA00 4u // PA_0 -#define PIN_PA05 7u // PA_5 -#define PIN_PA12 8u // PA_12 -#define PIN_PA14 1u // PA_14 -#define PIN_PA15 2u // PA_15 -#define PIN_PA18 9u // PA_18 -#define PIN_PA19 6u // PA_19 -#define PIN_PA22 3u // PA_22 -#define PIN_PA23 10u // PA_23 -#define PIN_PA29 0u // PA_29 -#define PIN_PA30 5u // PA_30 -#define PIN_RTS0 3u // PA_22 -#define PIN_RX0 9u // PA_18 -#define PIN_RX2 0u // PA_29 -#define PIN_SCK0 9u // PA_18 -#define PIN_SCK1 9u // PA_18 -#define PIN_TX0 10u // PA_23 -#define PIN_TX2 5u // PA_30 +#define PIN_ADC1 19u // PA_19 +#define PIN_ADC2 41u // AD_2 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 22u // PA_22 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 19u // PA_19 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_SPI0 1 -#define HAS_SPI1 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 29u // PA_29 +#define PIN_D1 14u // PA_14 +#define PIN_D2 15u // PA_15 +#define PIN_D3 22u // PA_22 +#define PIN_D4 0u // PA_0 +#define PIN_D5 30u // PA_30 +#define PIN_D6 19u // PA_19 +#define PIN_D7 5u // PA_5 +#define PIN_D8 12u // PA_12 +#define PIN_D9 18u // PA_18 +#define PIN_D10 23u // PA_23 +#define PIN_A0 19u // PA_19 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A0 = PIN_A0; +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10; diff --git a/boards/variants/wr3n.cpp b/boards/variants/wr3n.c similarity index 69% rename from boards/variants/wr3n.cpp rename to boards/variants/wr3n.c index a222a3d..5af75b6 100644 --- a/boards/variants/wr3n.cpp +++ b/boards/variants/wr3n.c @@ -2,14 +2,12 @@ #include -extern "C" { - #ifdef LT_VARIANT_INCLUDE #include LT_VARIANT_INCLUDE #endif // clang-format off -PinInfo pinTable[PINS_COUNT] = { +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { // D0: PA29, UART2_RX, I2C0_SCL, PWM4 {PA_29, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, // D1: PA14, PWM0, SWCLK @@ -31,6 +29,17 @@ PinInfo pinTable[PINS_COUNT] = { // A1: ADC2 {AD_2, PIN_ADC, PIN_NONE, 0}, }; -// clang-format on -} // extern "C" +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[3]), // PA_0 (D3) + [5] = &(lt_arduino_pin_info_list[5]), // PA_5 (D5) + [12] = &(lt_arduino_pin_info_list[6]), // PA_12 (D6) + [14] = &(lt_arduino_pin_info_list[1]), // PA_14 (D1) + [15] = &(lt_arduino_pin_info_list[2]), // PA_15 (D2) + [18] = &(lt_arduino_pin_info_list[7]), // PA_18 (D7) + [23] = &(lt_arduino_pin_info_list[8]), // PA_23 (D8) + [29] = &(lt_arduino_pin_info_list[0]), // PA_29 (D0) + [30] = &(lt_arduino_pin_info_list[4]), // PA_30 (D4) + [41] = &(lt_arduino_pin_info_list[9]), // AD_2 (A1) +}; +// clang-format on diff --git a/boards/variants/wr3n.h b/boards/variants/wr3n.h index 8ed7c7c..0c44afa 100644 --- a/boards/variants/wr3n.h +++ b/boards/variants/wr3n.h @@ -6,64 +6,87 @@ // Pins // ---- -#define PINS_COUNT 10 -#define NUM_ANALOG_INPUTS 1 -#define NUM_DIGITAL_PINS 9 -#define NUM_ANALOG_OUTPUTS 0 - -// Analog pins -// ----------- -#define PIN_A1 9u // AD_2 -#define A1 PIN_A1 - -// SPI Interfaces -// -------------- -#define SPI_INTERFACES_COUNT 0 +#define PINS_COUNT 10 // Total GPIO count +#define NUM_DIGITAL_PINS 9 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 1 // ADC inputs +#define NUM_ANALOG_OUTPUTS 8 // PWM & DAC outputs +#define PINS_GPIO_MAX 41 // Last usable GPIO number // Wire Interfaces // --------------- -#define WIRE_INTERFACES_COUNT 2 -#define PIN_WIRE0_SCL 0u // PA_29 -#define PIN_WIRE0_SDA 4u // PA_30 -#define PIN_WIRE1_SCL 7u // PA_18 -#define PIN_WIRE1_SDA 8u // PA_23 +#define PIN_WIRE0_SCL 29u // PA_29 +#define PIN_WIRE0_SDA 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 // Serial ports // ------------ -#define SERIAL_INTERFACES_COUNT 2 -#define PIN_SERIAL0_RX 7u // PA_18 -#define PIN_SERIAL0_TX 8u // PA_23 -#define PIN_SERIAL2_RX 0u // PA_29 -#define PIN_SERIAL2_TX 4u // PA_30 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 // Pin function macros // ------------------- -#define PIN_ADC2 9u // AD_2 -#define PIN_MOSI0 8u // PA_23 -#define PIN_MOSI1 8u // PA_23 -#define PIN_PA00 3u // PA_0 -#define PIN_PA05 5u // PA_5 -#define PIN_PA12 6u // PA_12 -#define PIN_PA14 1u // PA_14 -#define PIN_PA15 2u // PA_15 -#define PIN_PA18 7u // PA_18 -#define PIN_PA23 8u // PA_23 -#define PIN_PA29 0u // PA_29 -#define PIN_PA30 4u // PA_30 -#define PIN_RX0 7u // PA_18 -#define PIN_RX2 0u // PA_29 -#define PIN_SCK0 7u // PA_18 -#define PIN_SCK1 7u // PA_18 -#define PIN_SCL0 0u // PA_29 -#define PIN_SCL1 7u // PA_18 -#define PIN_SDA0 4u // PA_30 -#define PIN_SDA1 8u // PA_23 -#define PIN_TX0 8u // PA_23 -#define PIN_TX2 4u // PA_30 +#define PIN_ADC2 41u // AD_2 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM0 23u // PA_23 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 5u // PA_5 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL0 29u // PA_29 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA0 30u // PA_30 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 // Port availability // ----------------- -#define HAS_SERIAL0 1 -#define HAS_SERIAL2 1 -#define HAS_WIRE0 1 -#define HAS_WIRE1 1 +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 29u // PA_29 +#define PIN_D1 14u // PA_14 +#define PIN_D2 15u // PA_15 +#define PIN_D3 0u // PA_0 +#define PIN_D4 30u // PA_30 +#define PIN_D5 5u // PA_5 +#define PIN_D6 12u // PA_12 +#define PIN_D7 18u // PA_18 +#define PIN_D8 23u // PA_23 +#define PIN_A1 41u // AD_2 + +// Static pin names +// ---------------- +static const unsigned char A1 = PIN_A1; +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; diff --git a/builder/frameworks/arduino.py b/builder/frameworks/arduino.py index 9d9517d..0912981 100644 --- a/builder/frameworks/arduino.py +++ b/builder/frameworks/arduino.py @@ -59,7 +59,7 @@ queue.AddLibrary( name="board_${VARIANT}", base_dir="$VARIANTS_DIR", srcs=[ - "+<${VARIANT}.cpp>", + "+<${VARIANT}.c>", ], # not adding includes since they're added with the base core ) diff --git a/builder/utils/ltchiptool.py b/builder/utils/ltchiptool.py index dc8ac5e..10b765b 100644 --- a/builder/utils/ltchiptool.py +++ b/builder/utils/ltchiptool.py @@ -48,6 +48,7 @@ def env_uf2ota(env: Environment, *args, **kwargs): f"--lt-version {lt_version}", f'--fw "{project_name}:{project_version}"', f"--date {int(now.timestamp())}", + "--legacy", *env["UF2OTA"], ] diff --git a/cores/beken-72xx/arduino/src/wiring_irq.c b/cores/beken-72xx/arduino/src/wiring_irq.c index 7455da1..d014b42 100644 --- a/cores/beken-72xx/arduino/src/wiring_irq.c +++ b/cores/beken-72xx/arduino/src/wiring_irq.c @@ -9,30 +9,25 @@ static void *irqHandlerArgs[PINS_COUNT] = {NULL}; static bool irqChangeList[PINS_COUNT]; static void irqHandler(unsigned char gpio) { - int pin = -1; - for (pin_size_t i = 0; i < PINS_COUNT; i++) { - if (pinTable[i].gpio == gpio) { - pin = i; - break; + PinInfo *pin = pinByGpio(gpio); + if (pin == NULL) + return; + uint32_t index = pinIndex(pin); + if (!irqHandlerList[index]) + return; + if (irqChangeList[index]) { + if (pin->mode == INPUT_PULLDOWN) { + pin->mode = INPUT_PULLUP; + gpio_int_enable(pin->gpio, GPIO_INT_LEVEL_FALLING, irqHandler); + } else if (pin->mode == INPUT_PULLUP) { + pin->mode = INPUT_PULLDOWN; + gpio_int_enable(pin->gpio, GPIO_INT_LEVEL_RISING, irqHandler); } } - if (pin == -1) - return; - if (!irqHandlerList[pin]) - return; - if (irqChangeList[pin]) { - if (pinTable[pin].mode == INPUT_PULLDOWN) { - pinTable[pin].mode = INPUT_PULLUP; - gpio_int_enable(pinTable[pin].gpio, GPIO_INT_LEVEL_FALLING, irqHandler); - } else if (pinTable[pin].mode == INPUT_PULLUP) { - pinTable[pin].mode = INPUT_PULLDOWN; - gpio_int_enable(pinTable[pin].gpio, GPIO_INT_LEVEL_RISING, irqHandler); - } - } - if (irqHandlerArgs[pin] == NULL) { - ((voidFuncPtr)irqHandlerList[pin])(); + if (irqHandlerArgs[index] == NULL) { + ((voidFuncPtr)irqHandlerList[index])(); } else { - ((voidFuncPtrParam)irqHandlerList[pin])(irqHandlerArgs[pin]); + ((voidFuncPtrParam)irqHandlerList[index])(irqHandlerArgs[index]); } } @@ -46,6 +41,7 @@ void attachInterruptParam(pin_size_t interruptNumber, voidFuncPtrParam callback, return; if (!pinSupported(pin, PIN_IRQ)) return; + uint32_t index = pinIndex(pin); uint32_t event = 0; PinMode modeNew = 0; bool change = 0; @@ -79,9 +75,9 @@ void attachInterruptParam(pin_size_t interruptNumber, voidFuncPtrParam callback, default: return; } - irqHandlerList[interruptNumber] = callback; - irqHandlerArgs[interruptNumber] = param; - irqChangeList[interruptNumber] = change; + irqHandlerList[index] = callback; + irqHandlerArgs[index] = param; + irqChangeList[index] = change; gpio_int_enable(pin->gpio, event, irqHandler); pin->enabled |= PIN_IRQ | PIN_GPIO; pin->mode = modeNew; @@ -93,9 +89,10 @@ void detachInterrupt(pin_size_t interruptNumber) { return; if (!pinSupported(pin, PIN_IRQ)) return; - irqHandlerList[interruptNumber] = NULL; - irqHandlerArgs[interruptNumber] = NULL; - irqChangeList[interruptNumber] = false; + uint32_t index = pinIndex(pin); + irqHandlerList[index] = NULL; + irqHandlerArgs[index] = NULL; + irqChangeList[index] = false; gpio_int_disable(pin->gpio); pin->enabled &= ~PIN_IRQ; } diff --git a/cores/common/arduino/src/wiring_custom.c b/cores/common/arduino/src/wiring_custom.c index 050a87f..a002ea1 100644 --- a/cores/common/arduino/src/wiring_custom.c +++ b/cores/common/arduino/src/wiring_custom.c @@ -32,25 +32,43 @@ void runPeriodicTasks() { #endif } -/** - * @brief Check if pin is invalid (too low or too high). - */ -bool pinInvalid(pin_size_t pinNumber) { -#ifdef PINS_COUNT - return pinNumber < 0 || pinNumber >= PINS_COUNT; -#else - return false; -#endif -} - /** * @brief Get PinInfo struct for the specified number. * Returns NULL if pin number is invalid. */ PinInfo *pinInfo(pin_size_t pinNumber) { - if (pinInvalid(pinNumber)) + if (pinNumber < 0 || pinNumber > PINS_GPIO_MAX) return NULL; - return &(pinTable[pinNumber]); + return lt_arduino_pin_gpio_map[pinNumber]; +} + +/** + * @brief Get PinInfo struct for the specified index. + * Returns NULL if pin index is invalid. + */ +PinInfo *pinByIndex(uint32_t index) { + if (index < 0 || index >= PINS_COUNT) + return NULL; + return &(lt_arduino_pin_info_list[index]); +} + +/** + * @brief Find PinInfo struct by GPIO number. + * Returns NULL if not found. + */ +PinInfo *pinByGpio(uint32_t gpio) { + for (uint32_t i = 0; i < PINS_COUNT; i++) { + if (lt_arduino_pin_info_list[i].gpio == gpio) + return &(lt_arduino_pin_info_list[i]); + } + return NULL; +} + +/** + * @brief Get index of PinInfo in the global pin info table. + */ +uint32_t pinIndex(PinInfo *pin) { + return pin - lt_arduino_pin_info_list; } /** diff --git a/cores/common/arduino/src/wiring_custom.h b/cores/common/arduino/src/wiring_custom.h index 8cf1a17..4dd43f1 100644 --- a/cores/common/arduino/src/wiring_custom.h +++ b/cores/common/arduino/src/wiring_custom.h @@ -40,7 +40,8 @@ typedef struct { uint32_t mode; } PinInfo; -extern PinInfo pinTable[]; +extern PinInfo lt_arduino_pin_info_list[PINS_COUNT]; +extern PinInfo *lt_arduino_pin_gpio_map[PINS_GPIO_MAX + 1]; // Custom Wiring methods @@ -54,8 +55,10 @@ bool startMainTask(void); void mainTask(const void *arg); // implemented in main.cpp void runPeriodicTasks(); // implemented in wiring_custom.c -bool pinInvalid(pin_size_t pinNumber); PinInfo *pinInfo(pin_size_t pinNumber); +PinInfo *pinByIndex(uint32_t index); +PinInfo *pinByGpio(uint32_t gpio); +uint32_t pinIndex(PinInfo *pin); bool pinSupported(PinInfo *pin, uint32_t mask); bool pinEnabled(PinInfo *pin, uint32_t mask); bool pinIsOutput(PinInfo *pin); diff --git a/cores/realtek-amb/arduino/libraries/Wire/Wire.cpp b/cores/realtek-amb/arduino/libraries/Wire/Wire.cpp index f850a7d..aa93e65 100644 --- a/cores/realtek-amb/arduino/libraries/Wire/Wire.cpp +++ b/cores/realtek-amb/arduino/libraries/Wire/Wire.cpp @@ -45,8 +45,8 @@ bool TwoWire::setPins(int8_t sda, int8_t scl) { // set private pins _sda = sda; _scl = scl; - sda = pinTable[sda].gpio; - scl = pinTable[scl].gpio; + sda = pinInfo(sda)->gpio; + scl = pinInfo(scl)->gpio; // check if pins are valid if ((sda == PA_4 || sda == PA_19 || sda == PA_30) && (scl == PA_1 || scl == PA_22 || scl == PA_29)) { @@ -81,7 +81,7 @@ bool TwoWire::begin(int8_t sda, int8_t scl, uint32_t frequency) { frequency = WIRE_DEFAULT_FREQ; _i2c = new i2c_t; - i2c_init(_i2c, (PinName)pinTable[_sda].gpio, (PinName)pinTable[_scl].gpio); + i2c_init(_i2c, (PinName)pinInfo(_sda)->gpio, (PinName)pinInfo(_scl)->gpio); i2c_frequency(_i2c, frequency); _freq = frequency; return true; diff --git a/cores/realtek-amb/arduino/src/wiring_irq.c b/cores/realtek-amb/arduino/src/wiring_irq.c index 295b3d3..4fd7cd5 100644 --- a/cores/realtek-amb/arduino/src/wiring_irq.c +++ b/cores/realtek-amb/arduino/src/wiring_irq.c @@ -5,10 +5,10 @@ extern void *gpio_pin_struct[PINS_COUNT]; static void *gpio_irq_handler_list[PINS_COUNT] = {NULL}; static void *gpio_irq_handler_args[PINS_COUNT] = {NULL}; -extern bool pinInvalid(pin_size_t pinNumber); extern void pinRemoveMode(pin_size_t pinNumber); static void gpioIrqHandler(uint32_t id, gpio_irq_event event) { + // id is pin index if (gpio_irq_handler_list[id] != NULL) { if (gpio_irq_handler_args[id] == NULL) ((voidFuncPtr)gpio_irq_handler_list[id])(); @@ -22,33 +22,35 @@ void attachInterrupt(pin_size_t interruptNumber, voidFuncPtr callback, PinStatus } void attachInterruptParam(pin_size_t interruptNumber, voidFuncPtrParam callback, PinStatus mode, void *param) { - if (pinInvalid(interruptNumber)) + PinInfo *pin = pinInfo(interruptNumber); + if (pin == NULL) return; + uint32_t index = pinIndex(pin); - gpio_irq_handler_list[interruptNumber] = callback; - gpio_irq_handler_args[interruptNumber] = param; + gpio_irq_handler_list[index] = callback; + gpio_irq_handler_args[index] = param; - if (pinTable[interruptNumber].enabled == PIN_IRQ && pinTable[interruptNumber].mode == mode) + if (pin->enabled == PIN_IRQ && pin->mode == mode) // Nothing changes in pin mode return; - if (pinTable[interruptNumber].enabled != PIN_IRQ) + if (pin->enabled != PIN_IRQ) // pin mode changes; deinit gpio and free memory pinRemoveMode(interruptNumber); gpio_irq_t *gpio; - if (pinTable[interruptNumber].enabled == PIN_NONE) { + if (pin->enabled == PIN_NONE) { // allocate memory if pin not used before - gpio = malloc(sizeof(gpio_irq_t)); - gpio_pin_struct[interruptNumber] = gpio; - gpio_irq_init(gpio, pinTable[interruptNumber].gpio, gpioIrqHandler, interruptNumber); - pinTable[interruptNumber].enabled = PIN_IRQ; + gpio = malloc(sizeof(gpio_irq_t)); + gpio_pin_struct[index] = gpio; + gpio_irq_init(gpio, pin->gpio, gpioIrqHandler, index); + pin->enabled = PIN_IRQ; } else { // pin already used as irq - gpio = (gpio_irq_t *)gpio_pin_struct[interruptNumber]; + gpio = (gpio_irq_t *)gpio_pin_struct[index]; } - pinTable[interruptNumber].mode = mode; + pin->mode = mode; gpio_irq_event event; @@ -74,11 +76,13 @@ void attachInterruptParam(pin_size_t interruptNumber, voidFuncPtrParam callback, } void detachInterrupt(pin_size_t interruptNumber) { - if (pinInvalid(interruptNumber)) + PinInfo *pin = pinInfo(interruptNumber); + if (pin == NULL) return; + uint32_t index = pinIndex(pin); - if (pinTable[interruptNumber].enabled == PIN_IRQ) { + if (pin->enabled == PIN_IRQ) { pinRemoveMode(interruptNumber); } - gpio_irq_handler_list[interruptNumber] = NULL; + gpio_irq_handler_list[index] = NULL; } diff --git a/cores/realtek-amb/arduino/src/wiring_pulse.c b/cores/realtek-amb/arduino/src/wiring_pulse.c index 97ac71b..85161e6 100644 --- a/cores/realtek-amb/arduino/src/wiring_pulse.c +++ b/cores/realtek-amb/arduino/src/wiring_pulse.c @@ -25,23 +25,28 @@ extern void *gpio_pin_struct[]; * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds * to 3 minutes in length, but must be called at least a few dozen microseconds * before the start of the pulse. */ -extern unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) { +extern unsigned long pulseIn(uint8_t pinNumber, uint8_t state, unsigned long timeout) { // cache the port and bit of the pin in order to speed up the // pulse width measuring loop and achieve finer resolution. calling // digitalRead() instead yields much coarser resolution. + PinInfo *pin = pinInfo(pinNumber); + if (pin == NULL) + return; + uint32_t index = pinIndex(pin); + gpio_t *pGpio_t; uint32_t start_ticks, cur_ticks; - if (pin < 0 || pin > PINS_COUNT || (pinTable[pin].gpio == NC)) + if (pin < 0 || pin > PINS_COUNT || (pin->gpio == NC)) return 0; /* Handle */ - if (pinTable[pin].enabled != PIN_GPIO) { + if (pin->enabled != PIN_GPIO) { return 0; } - pGpio_t = (gpio_t *)gpio_pin_struct[pin]; + pGpio_t = (gpio_t *)gpio_pin_struct[index]; // wait for any previous pulse to end start_ticks = us_ticker_read();