diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..fac6880 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,22 @@ +name: ci +on: [push] +jobs: + Build: + runs-on: ubuntu-latest + steps: + - name: Clone repo + uses: actions/checkout@v2 + - name: build + run: | + mkdir build + cd build + 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