Skip to content

Commit

Permalink
CI by compiling all examples with github action (#221)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
designer2k2 committed Mar 7, 2024
1 parent 4918cdc commit 3a58073
Show file tree
Hide file tree
Showing 8 changed files with 184 additions and 4 deletions.
145 changes: 145 additions & 0 deletions .github/workflows/CI_compile_examples.yml
Original file line number Diff line number Diff line change
@@ -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'
2 changes: 1 addition & 1 deletion Arduino_package/hardware/boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -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
5 changes: 5 additions & 0 deletions Arduino_package/hardware/libraries/IRDevice/src/IRDevice.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand All @@ -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");
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 4 additions & 0 deletions Arduino_package/hardware/variants/ameba_amb25_amb26/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions Arduino_package/hardware/variants/rtl8720dn_bw16/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down
4 changes: 4 additions & 0 deletions Arduino_package/hardware/variants/rtl8722dm_mini/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions Arduino_package/hardware/variants/u-blox_nora-w30/variant.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,13 +114,21 @@ 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
#define I2C_SCL 19 // PB_20 NORA_F9 HS_I2C_SCL / HS_UART_CTS
#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
Expand Down

0 comments on commit 3a58073

Please sign in to comment.