From 3a5807349bee1c08f936a6371f8e5a4180552eea Mon Sep 17 00:00:00 2001 From: Stephan Martin Date: Thu, 7 Mar 2024 11:33:22 +0100 Subject: [PATCH] CI by compiling all examples with github action (#221) * ci by compiling the examples compile the examples, and simple fix for A0 pin on BW16 Still some errors remain! * Add missing libs AmebaEink and AmebaMotors Add the missing libs * CI with all boards and selected examples This runs all boards and nearly all examples. * Update compile-examples.yml * lower case variant for u-blox_nora_w30 * Update BasicInputOutput.ino/ WiFiWebServer.ino for other boards * Update the CI github action - rename the yml file - add dev and master branch supports - add weekly automation run - update the examples-to-use - revert files for minimal changes - add IR pin check for API - add default pin mapping as NC if not supported by boards - update nora-w30 variant.h --- .github/workflows/CI_compile_examples.yml | 145 ++++++++++++++++++ Arduino_package/hardware/boards.txt | 2 +- .../examples/BW16_RGB_LED/BW16_RGB_LED.ino | 18 ++- .../libraries/IRDevice/src/IRDevice.cpp | 5 + .../variants/ameba_amb25_amb26/variant.h | 4 + .../variants/rtl8720dn_bw16/variant.h | 2 + .../variants/rtl8722dm_mini/variant.h | 4 + .../variants/u-blox_nora-w30/variant.h | 8 + 8 files changed, 184 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/CI_compile_examples.yml diff --git a/.github/workflows/CI_compile_examples.yml b/.github/workflows/CI_compile_examples.yml new file mode 100644 index 00000000..e9eb0853 --- /dev/null +++ b/.github/workflows/CI_compile_examples.yml @@ -0,0 +1,145 @@ +name: Compile Examples + +on: + pull_request: + paths: + - ".github/workflows/CI_compile_examples.yml" + - "Arduino_package/hardware/libraries/**" + - "Arduino_package/hardware/cores/**" + - "Arduino_package/hardware/variants/**" + push: + paths: + - ".github/workflows/CI_compile_examples.yml" + - "Arduino_package/hardware/libraries/**" + - "Arduino_package/hardware/cores/**" + - "Arduino_package/hardware/variants/**" + # workflow_dispatch event allows the workflow to be triggered manually + # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch + workflow_dispatch: + # repository_dispatch event allows the workflow to be triggered via the GitHub API + # See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows#repository_dispatch + repository_dispatch: + # weekly, Monday, 12 00 AM + schedule: + - cron: '0 12 * * 1' + +jobs: + compile-examples_ubuntu: + # same name as the fqbn (without the platform-name): + name: ${{ matrix.board.fqbn }} + runs-on: ubuntu-latest + + # list of all examples, WiFiControlCar and BW16_RGB_LED are left out + env: + examples-to-use: | + - Arduino_package/hardware/libraries/Analog + - Arduino_package/hardware/libraries/AudioCodec + - Arduino_package/hardware/libraries/BLE + - Arduino_package/hardware/libraries/Debugging + - Arduino_package/hardware/libraries/FatfsSDIO + - Arduino_package/hardware/libraries/FlashMemory + - Arduino_package/hardware/libraries/GPIO + - Arduino_package/hardware/libraries/GTimer + - Arduino_package/hardware/libraries/Http + - Arduino_package/hardware/libraries/IRDevice + - Arduino_package/hardware/libraries/MDNS + - Arduino_package/hardware/libraries/MQTTClient + - Arduino_package/hardware/libraries/NTPClient + - Arduino_package/hardware/libraries/OTA + - Arduino_package/hardware/libraries/PowerSave + #- Arduino_package/hardware/libraries/Preferences + - Arduino_package/hardware/libraries/RTC + - Arduino_package/hardware/libraries/SoftwareSerial + - Arduino_package/hardware/libraries/SPI + - Arduino_package/hardware/libraries/Sys + - Arduino_package/hardware/libraries/USB + - Arduino_package/hardware/libraries/Watchdog + - Arduino_package/hardware/libraries/WiFi/examples/ConcurrentMode + - Arduino_package/hardware/libraries/WiFi/examples/ConnectWithWiFi + - Arduino_package/hardware/libraries/WiFi/examples/HTTP_IFTTT_Post + - Arduino_package/hardware/libraries/WiFi/examples/IPv6TCPClient + - Arduino_package/hardware/libraries/WiFi/examples/IPv6TCPServer + - Arduino_package/hardware/libraries/WiFi/examples/IPv6UDPClient + - Arduino_package/hardware/libraries/WiFi/examples/IPv6UDPServer + - Arduino_package/hardware/libraries/WiFi/examples/ScanNetworks + - Arduino_package/hardware/libraries/WiFi/examples/SimpleServerWiFi + - Arduino_package/hardware/libraries/WiFi/examples/SimpleWebServerWiFi + - Arduino_package/hardware/libraries/WiFi/examples/UDP_Calculation + - Arduino_package/hardware/libraries/WiFi/examples/WiFiAPMode + #- Arduino_package/hardware/libraries/WiFi/examples/WiFiControlCar + - Arduino_package/hardware/libraries/WiFi/examples/WiFiSSLClient + - Arduino_package/hardware/libraries/WiFi/examples/WiFiUdpNtpClient + - Arduino_package/hardware/libraries/WiFi/examples/WiFiUdpSendReceiveString + - Arduino_package/hardware/libraries/WiFi/examples/WiFiWebClient + - Arduino_package/hardware/libraries/WiFi/examples/WiFiWebServer + - Arduino_package/hardware/libraries/Wire + - Arduino_package/hardware/libraries/WS2812B + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: Ameba_AMB21_AMB22 + - fqbn: Ameba_AMB23 + - fqbn: Ai-Thinker_BW16 + - fqbn: SparkFun_ThingPlus-AWCU488 + - fqbn: Ameba_AMB25 + - fqbn: Ameba_AMB26 + - fqbn: u-blox_NORA-W30 + + steps: + - name: Exit workflow (other branches) + run: exit 1 + if: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/dev' }} + + - name: Checkout repository + uses: actions/checkout@v4 + with: + sparse-checkout: | + Arduino_package + Arduino_zip_libraries + + - name: Compile examples dev + uses: arduino/compile-sketches@main + with: + fqbn: realtek:AmebaD:${{ matrix.board.fqbn }} + sketch-paths: | + ${{ env['examples-to-use'] }} + platforms: | + # Install ambd_arduino via Boards Manager for the toolchain + - source-url: https://github.com/ambiot/ambd_arduino/raw/dev/Arduino_package/package_realtek_amebad_early_index.json + name: realtek:AmebaD + # Overwrite the ambd_arduino release version with the platform from the local path + - source-path: Arduino_package/hardware/ + name: realtek:AmebaD + libraries: | + # The sketches typically don't have any external library dependencies, just some: + - source-url: https://github.com/ambiot/ambd_arduino/raw/dev/Arduino_zip_libraries/AmebaMotors.zip + - source-url: https://github.com/ambiot/ambd_arduino/raw/dev/Arduino_zip_libraries/AmebaEink.zip + - name: "SparkFun ADXL313 Arduino Library" + verbose: false + enable-deltas-report: false + if: github.ref == 'refs/heads/dev' + + - name: Compile examples master + uses: arduino/compile-sketches@main + with: + fqbn: realtek:AmebaD:${{ matrix.board.fqbn }} + sketch-paths: | + ${{ env['examples-to-use'] }} + platforms: | + # Install ambd_arduino via Boards Manager for the toolchain + - source-url: https://github.com/ambiot/ambd_arduino/raw/master/Arduino_package/package_realtek_amebad_index.json + name: realtek:AmebaD + # Overwrite the ambd_arduino release version with the platform from the local path + - source-path: Arduino_package/hardware/ + name: realtek:AmebaD + libraries: | + # The sketches typically don't have any external library dependencies, just some: + - source-url: https://github.com/ambiot/ambd_arduino/raw/master/Arduino_zip_libraries/AmebaMotors.zip + - source-url: https://github.com/ambiot/ambd_arduino/raw/master/Arduino_zip_libraries/AmebaEink.zip + - name: "SparkFun ADXL313 Arduino Library" + verbose: false + enable-deltas-report: false + if: github.ref == 'refs/heads/master' \ No newline at end of file diff --git a/Arduino_package/hardware/boards.txt b/Arduino_package/hardware/boards.txt index e3b938a7..dd4627b9 100644 --- a/Arduino_package/hardware/boards.txt +++ b/Arduino_package/hardware/boards.txt @@ -288,7 +288,7 @@ u-blox_NORA-W30.build.board=AMEBA u-blox_NORA-W30.build.core=ambd u-blox_NORA-W30.build.extra_flags=-mthumb -DRTL8722DM -DBOARD_UBLOX_NORAW30 {build.usb_flags} -DArduino_STD_PRINTF u-blox_NORA-W30.build.ldscript=linker_scripts/gcc/amebad_img2_is_arduino.ld -u-blox_NORA-W30.build.variant=u-blox_NORA-W30 +u-blox_NORA-W30.build.variant=u-blox_nora-w30 u-blox_NORA-W30.upload.tool=ameba_d_tools u-blox_NORA-W30.upload.protocol=usb_serial diff --git a/Arduino_package/hardware/libraries/GPIO/examples/BW16_RGB_LED/BW16_RGB_LED.ino b/Arduino_package/hardware/libraries/GPIO/examples/BW16_RGB_LED/BW16_RGB_LED.ino index c8de89d8..289f87c2 100644 --- a/Arduino_package/hardware/libraries/GPIO/examples/BW16_RGB_LED/BW16_RGB_LED.ino +++ b/Arduino_package/hardware/libraries/GPIO/examples/BW16_RGB_LED/BW16_RGB_LED.ino @@ -9,9 +9,7 @@ This example code is in the public domain. */ -#ifndef BOARD_AITHINKER_BW16 -#error "Please use this example on the BW16 Board" -#endif +#ifdef BOARD_AITHINKER_BW16 // the setup function runs once when you press reset or power the board void setup() { @@ -78,3 +76,17 @@ void loop() { fade(); // fade RED, BLUE delay(1000); // wait for a second } + +#else + +void setup() { + // put your setup code here, to run once: + +} + +void loop() { + // put your main code here, to run repeatedly: + printf("Error. This example is only for board BW16 \n\r"); +} + +#endif diff --git a/Arduino_package/hardware/libraries/IRDevice/src/IRDevice.cpp b/Arduino_package/hardware/libraries/IRDevice/src/IRDevice.cpp index a64e5c3d..3a5694a7 100644 --- a/Arduino_package/hardware/libraries/IRDevice/src/IRDevice.cpp +++ b/Arduino_package/hardware/libraries/IRDevice/src/IRDevice.cpp @@ -194,6 +194,7 @@ uint8_t IRDevice::getFreq() { } void IRDevice::begin(uint8_t irPin, uint32_t irMode, uint32_t freq) { + amb_ard_pin_check_fun(irPin, PIO_IR); if (irMode == IR_MODE_TX) { setTxPin(irPin); } else if (irMode == IR_MODE_RX) { @@ -212,6 +213,8 @@ void IRDevice::begin(uint8_t irPin, uint32_t irMode, uint32_t freq) { } void IRDevice::begin(uint8_t receivePin, uint8_t transmitPin, uint32_t irMode, uint32_t freq) { + amb_ard_pin_check_fun(receivePin, PIO_IR); + amb_ard_pin_check_fun(transmitPin, PIO_IR); setPins(receivePin, transmitPin); if ((irMode != IR_MODE_TX) && (irMode != IR_MODE_RX)) { printf("Invalid IR mode!\r\n"); @@ -316,6 +319,8 @@ void IRDevice::recv() { } void IRDevice::beginNEC(uint8_t receivePin, uint8_t transmitPin, uint32_t irMode) { + amb_ard_pin_check_fun(receivePin, PIO_IR); + amb_ard_pin_check_fun(transmitPin, PIO_IR); setPins(receivePin, transmitPin); IR_Cmd(IR_DEV, IR_InitStruct.IR_Mode, DISABLE); IR_StructInit(&IR_InitStruct); diff --git a/Arduino_package/hardware/variants/ameba_amb25_amb26/variant.h b/Arduino_package/hardware/variants/ameba_amb25_amb26/variant.h index e1ceec59..3074be9e 100644 --- a/Arduino_package/hardware/variants/ameba_amb25_amb26/variant.h +++ b/Arduino_package/hardware/variants/ameba_amb25_amb26/variant.h @@ -91,6 +91,10 @@ extern void wait_for_debug(void); #define PB30 AMB_D4 /* Analog pin mapping */ +#define A0 NC +#define A1 NC +#define A2 NC +#define A3 NC #define A4 AMB_D11 // PB_1 3.3V CH4 #define A5 AMB_D10 // PB_2 3.3V CH5 #define A6 AMB_D9 // PB_3 3.3V CH6 diff --git a/Arduino_package/hardware/variants/rtl8720dn_bw16/variant.h b/Arduino_package/hardware/variants/rtl8720dn_bw16/variant.h index 654b9e2d..d768309d 100644 --- a/Arduino_package/hardware/variants/rtl8720dn_bw16/variant.h +++ b/Arduino_package/hardware/variants/rtl8720dn_bw16/variant.h @@ -81,6 +81,8 @@ extern void wait_for_debug(void); /* Analog pin mapping */ //#define A0 AMB_D4 // PB_1 3.3V CH4 //Not available connect with USB chip //#define A1 AMB_D5 // PB_2 3.3V CH5 //Not available connect with USB chip +#define A0 NC +#define A1 NC #define A2 AMB_D6 // PB_3 3.3V CH6 /* LED pin mapping */ diff --git a/Arduino_package/hardware/variants/rtl8722dm_mini/variant.h b/Arduino_package/hardware/variants/rtl8722dm_mini/variant.h index ce5bb0da..b253d5dd 100644 --- a/Arduino_package/hardware/variants/rtl8722dm_mini/variant.h +++ b/Arduino_package/hardware/variants/rtl8722dm_mini/variant.h @@ -113,6 +113,10 @@ extern void wait_for_debug(void); #define I2C1_SDA AMB_D21 // AMB_D21 #define I2C1_SCL AMB_D20 // AMB_D20 +/* IR Device pin mapping */ +#define IR_TX NC +#define IR_RX NC + /* UART pin mapping */ #define LOG_UART_MODIFIABLE_BAUD_RATE 1 #define SERIAL_ONE_UART_MODIFIABLE_BAUD_RATE 1 diff --git a/Arduino_package/hardware/variants/u-blox_nora-w30/variant.h b/Arduino_package/hardware/variants/u-blox_nora-w30/variant.h index 9fd46ce1..14389b98 100644 --- a/Arduino_package/hardware/variants/u-blox_nora-w30/variant.h +++ b/Arduino_package/hardware/variants/u-blox_nora-w30/variant.h @@ -114,6 +114,10 @@ extern void wait_for_debug(void); #define SPI_MISO 2 // PA_13 NORA_J8 SPI_MISO #define SPI_SCLK 1 // PA_14 NORA_H9 SPI_SCLK #define SPI_SS 0 // PA_15 NORA_H8 SPI_CS +#define SPI1_MOSI 17 // PB_18 +#define SPI1_MISO 16 // PB_19 +#define SPI1_SCLK 19 // PB_20 +#define SPI1_SS 18 // PB_21 /* TwoWire/I2C pin mapping */ #define I2C_SDA 18 // PB_21 NORA_F8 HS_I2C_SDA / HS_UART_RTS @@ -121,6 +125,10 @@ extern void wait_for_debug(void); #define I2C1_SDA 6 // PA_26 NORA_C1 LP_I2C_SDA #define I2C1_SCL 7 // PA_25 NORA_C2 LP_I2C_SCL +/* IR Device pin mapping */ +#define IR_TX 7 // PA_25 / PB_23 +#define IR_RX 6 // PA_26 / PB_22 + /* UART pin mapping */ #define LOG_UART_MODIFIABLE_BAUD_RATE 1 #define SERIAL_ONE_UART_MODIFIABLE_BAUD_RATE 1