diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 07cf8b6..fac6880 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,3 +13,10 @@ jobs: cmake .. make ./nanomodbus_tests + - name: Compile Arduino examples + run: | + pushd build + curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh + popd + export PATH="build/bin:$PATH" + ./examples/arduino/compile-examples.sh diff --git a/examples/arduino/README.md b/examples/arduino/README.md index f1ca0d5..f84e66e 100644 --- a/examples/arduino/README.md +++ b/examples/arduino/README.md @@ -4,3 +4,7 @@ This folder contains nanoMODBUS examples for Arduino. To build and load a sketch with the Arduino IDE, copy `nanomodbus.c` and `nanomodbus.h` inside its folder. `client-rtu` and `server-rtu` are meant to be used with two Arduinos connected via their TX0/RX0 serial pins. + +If you have [arduino-cli](https://github.com/arduino/arduino-cli) installed, you can run +`examples/arduino/compile-examples.sh` from the top-level nanoMODBUS directory to compile the examples. +They will be available in the `build` folder. diff --git a/examples/arduino/compile-examples.sh b/examples/arduino/compile-examples.sh new file mode 100755 index 0000000..f0e8928 --- /dev/null +++ b/examples/arduino/compile-examples.sh @@ -0,0 +1,24 @@ +#!/bin/env bash +set -e -o pipefail + +# Set default board +BOARD=$1 +if [ -z "${BOARD}" ] +then + echo No board specified, using arduino:avr:uno + BOARD=arduino:avr:uno +fi + +# Set up example folders +mkdir -p build/arduino +cp -r examples/arduino build +cp nanomodbus.h nanomodbus.c build/arduino/server-rtu/ +cp nanomodbus.h nanomodbus.c build/arduino/client-rtu/ + +# Ensure ardunio-cli is up to date +arduino-cli core update-index +arduino-cli core install arduino:avr + +# Compile both examples +arduino-cli compile -b $BOARD --output-dir build/arduino -- build/arduino/server-rtu/server-rtu.ino +arduino-cli compile -b $BOARD --output-dir build/arduino -- build/arduino/client-rtu/client-rtu.ino