Skip to content

Offline Mode - UART and GPS #786

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 687 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
687 commits
Select commit Hold shift + click to select a range
166b2b1
Done - full API implementation for pixels.proto, needs doxygen and te…
brentru Apr 15, 2025
67e1756
Doxygen pass
brentru Apr 15, 2025
700f387
build pass
brentru Apr 15, 2025
ec2291f
pass pixel add, write
brentru Apr 15, 2025
6e7732c
cleanup
brentru Apr 16, 2025
81ba6c3
fix rm neopixel
brentru Apr 16, 2025
51972f9
Test Dotstar with FunHouse
brentru Apr 16, 2025
92b257a
Modify yml, add gen/skip files
brentru Apr 16, 2025
bc5a005
rm samd-arduino
brentru Apr 16, 2025
7f34ca3
Bring SAMD Airlift in-line for v2
brentru Apr 16, 2025
fe99de3
Fix debug tests, add c6 target
brentru Apr 16, 2025
a0d1866
Re-enable adapter for Pico2W, use PStolarz OneWireNG and Temp Ctrl Li…
brentru Apr 16, 2025
b90aaee
fix rp2040 compiler error output
brentru Apr 16, 2025
9d91263
fix std::find
brentru Apr 16, 2025
3a3cc81
Fix assignments after declaration causing compile-time error
brentru Apr 16, 2025
264281f
Fix dtors, use memeset() to clear struct memory just like we did in c…
brentru Apr 17, 2025
79f6042
Fixes for ESP8266
brentru Apr 17, 2025
f70f9ae
Fix ESp8266 compile completely
brentru Apr 17, 2025
4bc8a48
Fix: SAMD51 Target
brentru Apr 17, 2025
50eb84e
Fix: RP2040 Targets
brentru Apr 17, 2025
dc6e5ac
Fix: Cx targets
brentru Apr 17, 2025
fc755f9
Fix: Missing ||
brentru Apr 17, 2025
c9a8070
Fix eval
brentru Apr 17, 2025
58e273f
Fix - C6
brentru Apr 17, 2025
be02bd6
Fix - RP2350
brentru Apr 17, 2025
6fe7d06
Fix RP2350
brentru Apr 17, 2025
8f385d1
Fix - Feather esp32c6, esp32s3revtft debug
brentru Apr 17, 2025
0e5f1db
Fix - Feather c6, RP2350 W
brentru Apr 17, 2025
e69f538
Fix - Clang picking up protos/ folder!
brentru Apr 17, 2025
536fb54
Clangify
brentru Apr 18, 2025
0f959d5
Clang again!
brentru Apr 18, 2025
b5f703d
one more time
brentru Apr 18, 2025
13af849
Update the @file for doxygen to fix conflicts
brentru Apr 18, 2025
8c68d45
Update doxyfile, drop back to 1.8.3
brentru Apr 18, 2025
97be20a
Start! And added to hardware.cpp
brentru Apr 18, 2025
184c5df
Doxy the hardware class
brentru Apr 18, 2025
141753b
Implement Handler for PWMAdd Message
brentru Apr 18, 2025
ffd7a71
Tidy handler for PWMWriteDutycycle
brentru Apr 21, 2025
aadac2b
Tidy x2
brentru Apr 21, 2025
edadb31
Implement WriteFrequency message
brentru Apr 21, 2025
31e5758
YAGNI - noTone() never implemented in v1 or called, remove from API
brentru Apr 21, 2025
3304fb4
Full PWM implementation, sans writemulti..
brentru Apr 21, 2025
3562104
Init. Servo
brentru Apr 21, 2025
a6d8755
Plumbing in app
brentru Apr 21, 2025
de50089
Implement - ServoAdd, ServoAdded API
brentru Apr 21, 2025
8fc941e
Implement - ServoWrite, boundary checks around handling the servohard…
brentru Apr 21, 2025
4cc35be
bugfixes
brentru Apr 21, 2025
e4ae80a
Implement - ServoRemove, fix bugs
brentru Apr 22, 2025
48e30f0
Migrate to pstolarz fork of Arduino Temperature Control Library
brentru Apr 22, 2025
59aba4e
Testing - Update NoFs.ino to work with Wokwi, add plumbing in app for…
brentru Apr 22, 2025
b32ecdf
Tests - behavioral, pwm
brentru Apr 22, 2025
361f97d
Fix - Remove PWMWriteDutyCycle_Multi (Unused), fix logical bug in Wri…
brentru Apr 22, 2025
7458980
Fix - ServoRemove Unit Test
brentru Apr 23, 2025
25ad69a
Merge pull request #731 from adafruit/add-pixel-api-v2
brentru Apr 23, 2025
dac4af5
Fix - Controller writes the pulse width from the message upon Add, va…
brentru Apr 23, 2025
7589b78
Clang
brentru Apr 23, 2025
8c3dbdd
Address brent PR
brentru Apr 24, 2025
bb1e440
Adds HTU31D
tyeth Apr 25, 2025
1617c18
BSP 3.20
tyeth Apr 25, 2025
c1a3c4e
Address @tyeth PR review
brentru Apr 25, 2025
5f4a8e4
Merge pull request #733 from adafruit/add-pwm-api-v2
brentru Apr 25, 2025
7fd0d1a
Attempt to fix the config.json file getting rm'd
brentru Apr 29, 2025
11cee82
More intelligent approach for the config file rm issue
brentru Apr 29, 2025
d1285cb
Remove final SPI Flash forked copy from CI
tyeth Apr 4, 2025
b93f131
Closes #724 - Add SGP30 to offline mode
tyeth Apr 4, 2025
aec7371
Adds HTU31D
tyeth Apr 25, 2025
57a0b89
BSP 3.20
tyeth Apr 25, 2025
19b58a8
Add HDC302x
tyeth Apr 29, 2025
602bbd6
Add LPS28DFW
tyeth Apr 29, 2025
e547559
Add VCNL4200
tyeth Apr 29, 2025
943b717
Add INA260
tyeth Apr 29, 2025
2c6713d
Add SEN6x
tyeth Apr 29, 2025
45da7d3
Mention RP2350
tyeth Apr 29, 2025
922653c
clang
tyeth Apr 29, 2025
e602c71
Fix RTC issue
brentru May 2, 2025
59bb1e5
Use fix for Wire1, too
brentru May 2, 2025
7494b5a
Remove prints/delays for debugging
brentru May 2, 2025
0e6de25
CI run
brentru May 2, 2025
11e2116
Clang
brentru May 2, 2025
0887141
Remove requirement for secrets.json config default for offline mode
brentru May 2, 2025
2a75f7a
Merge branch 'add-offline-drivers-2025-04-04' into latest-fixes-20250506
tyeth May 6, 2025
edfde81
clang format i2c/controller.cpp
tyeth May 6, 2025
34e4db4
Clang reorder imports controller.h
tyeth May 6, 2025
0addc4f
ESP32 BSP 3.20 -> 3.13
tyeth May 6, 2025
66fc39d
Add I2C_Output PB, add new outputbase driver class, add i2c output to…
brentru May 6, 2025
b8ad718
detect i2c output device
brentru May 6, 2025
54cc000
Add drv for QuadAlphaNum LED backpack
brentru May 6, 2025
8f19c08
Add handler for Write message
brentru May 6, 2025
d54d4ad
Handle initial configuration and begin for outputs
brentru May 7, 2025
9340fff
Added options file, new protos/
brentru May 7, 2025
888a3c0
Fixed options files
brentru May 7, 2025
263fbfa
Implement WriteX funcs for each value type and link within drvOutputBase
brentru May 8, 2025
c9a20b3
add 0a74dc96f50785d7f29d2f44b409033fd880d600
brentru May 8, 2025
eb2cfa1
Writing working for everything but floats
brentru May 8, 2025
878d186
Fix float issues
brentru May 9, 2025
f06ac06
Implement begin and configure for a char lcd
brentru May 9, 2025
a9b1e06
Implement WriteMessage for CharLCD
brentru May 9, 2025
5d1f489
Merge remote-tracking branch 'upstream/offline-mode-add-missing-drive…
tyeth May 12, 2025
69f2659
Back to BSP 3.13
tyeth May 12, 2025
6e592fb
Drop NDEBUG flags
tyeth May 12, 2025
09a925b
Add SEN66 auto detection addresses
tyeth May 12, 2025
a1dd63d
Add INA260 autodetection
tyeth May 12, 2025
799d422
Add VCNL4200 autodetection
tyeth May 12, 2025
4aaa036
Add LPS28DFW autodetection
tyeth May 12, 2025
9355d04
Add HDC302x autodetection
tyeth May 12, 2025
92ecd21
Add HTU31D autodetection
tyeth May 12, 2025
5b55fd5
Merge branch 'offline-mode-add-missing-drivers-2025-04-04' into offli…
tyeth May 12, 2025
6ace339
clang format autodetection list
tyeth May 12, 2025
a388b6d
remove hardcode for row/col
brentru May 12, 2025
f5c2c93
Print I2C driver info
tyeth May 12, 2025
20c4784
Wait 2.5seconds after reconnect before printing
tyeth May 12, 2025
91c2ee8
Remove USB_CDC. Don't refresh host on host write
tyeth May 12, 2025
e519261
printing!
brentru May 12, 2025
2cc9f32
charlcd prints, handlers for degrees symbol
brentru May 12, 2025
b86cfc1
haltErrorV2 reattach MSC by default
tyeth May 12, 2025
a923c22
Set PlatformIO sketch to use offline adapter if needed
tyeth May 13, 2025
10f0a20
Default to PiCowbell SD CS pins on Pico boards
tyeth May 13, 2025
bf2e43c
Report SD CS Pin in event of failure
tyeth May 13, 2025
087e5bd
SGP30 auto address
tyeth May 13, 2025
8cc7335
Add missing default sensor types
tyeth May 13, 2025
3499a32
Add LPS33HW + LPS35HW auto address
tyeth May 13, 2025
c6e8722
Merge branch 'offline-mode-20250506-with-drivers' of https://github.c…
tyeth May 13, 2025
a68913f
Use SEN55 as auto default instead of SEN50
tyeth May 13, 2025
3be34a3
Remove extra boards file and clang format
tyeth May 13, 2025
43c9cda
set WsV2.pin_sd_cs on InitSdCard(pin_cs) call
tyeth May 13, 2025
45989bf
Drivers as drvBase not auto
tyeth May 13, 2025
74eab4c
Remove null driver check + \n after drv->printSensorInfo()
tyeth May 13, 2025
dab54bb
Remove redundant commented out code
tyeth May 13, 2025
1b4b617
Update file headers with Licence etc
tyeth May 13, 2025
93dd43d
Match charlcd commit
brentru May 13, 2025
bbc6a4f
Merge pull request #748 from adafruit/offline-mode-20250506-with-drivers
tyeth May 13, 2025
538ce3b
Add libraries
brentru May 13, 2025
1a12145
clang
brentru May 13, 2025
f8aa819
doxy
brentru May 13, 2025
4df009e
Fix charLCD formatting, decimal on quadalphanum
brentru May 15, 2025
dd6599a
match pb commit 13325a9
brentru May 21, 2025
59c8a73
Update firmware to match previous PB commit's updated PBs
brentru May 21, 2025
4598bbe
Add SSD1306 compatability
brentru May 21, 2025
c1ace0b
Optimizations within pb.h
brentru May 21, 2025
84a4017
Modifications for @tyeth review
brentru May 21, 2025
0059343
Merge pull request #749 from adafruit/migrate-api-v2-i2c-output
brentru May 21, 2025
9a75c29
RP2 debug target updates
tyeth May 25, 2025
07cbf00
Add updated UART.proto, signal.proto, bring in new GPS.proto
brentru May 28, 2025
b9eae36
Add uart/ component files
brentru May 28, 2025
1ffc861
Start hooking Hardware
brentru May 28, 2025
2e7c373
init uart serial
brentru May 28, 2025
6ee80cb
Update PB - e6b79ff4b165c6161a67994c217721281a20fe72
brentru May 28, 2025
b99e70c
Update PB, ConfigureSerial
brentru May 29, 2025
bdad070
Break out driver into base class and new pm25 class - WIP
brentru May 29, 2025
4a4d562
Remove /*************************************************************…
brentru May 29, 2025
1b9e973
meh attempt at initializing a driver
brentru May 29, 2025
c5dbb86
Rough in uart driver for reading sensor events, pm25 driver match
brentru May 30, 2025
dcb623b
Match 492e3a0..4e42234
brentru May 30, 2025
e60e887
Match 4e42234..5f3ec33
brentru May 30, 2025
8725ba4
Full Handle_Uartadded workflow implementation for PM25AQI
brentru May 30, 2025
e2d8233
eod, wrapping up code
brentru May 30, 2025
bbb14ab
Impl - UartRemove handler
brentru Jun 2, 2025
761a2b8
Impl - Uart Update() handler
brentru Jun 2, 2025
1b372c4
Add - uart-us100 driver
brentru Jun 3, 2025
0a16097
Add distance measurement getter for us-100
brentru Jun 3, 2025
53a26c6
debugging
brentru Jun 3, 2025
7216ffe
match cca78c8..09bf58e
brentru Jun 3, 2025
3d45338
fix handleUartAdd and publishing back to io, driver for us100 not wor…
brentru Jun 4, 2025
e229bd3
debug within us100
brentru Jun 4, 2025
81b3061
cleanup
brentru Jun 5, 2025
a3bf856
GPS - Match be3dc9d..850d73c
brentru Jun 13, 2025
d17f2b8
GPS - Initial commits
brentru Jun 13, 2025
b60c233
GPS - Routing towards DecodeGPSConfig
brentru Jun 16, 2025
c0aa18d
GPS - add processing
brentru Jun 17, 2025
baef12d
Set interface
brentru Jun 17, 2025
786c041
use adafruit gps
brentru Jun 17, 2025
5c30483
GPS - Query mediatek
brentru Jun 20, 2025
f0aefd9
GPS - fix build
brentru Jun 20, 2025
b43a8ba
GPS - tracking add bug
brentru Jun 20, 2025
51dea24
GPS -detecting mtk
brentru Jun 23, 2025
b699c06
GPS - attempt a driver approach for managing instances
brentru Jun 23, 2025
57a4396
GPS -refactor to use hwserial pattern
brentru Jun 23, 2025
09bfdcf
GPS - refactor away from driver approoach causing circular dependency
brentru Jun 24, 2025
f3286ef
GPS - break out config handler
brentru Jun 24, 2025
4b6666a
GPS - add pb with responses
brentru Jun 24, 2025
61e45a7
GPS - Full implementation of GPSConfig Handler
brentru Jun 24, 2025
de6a1dd
Match Protobuf - 478e51b..607702e
brentru Jun 25, 2025
f05f163
GPS - Build checksum for responses
brentru Jun 25, 2025
8b33ba7
GPS - Refactor BuildPtmkAck
brentru Jun 25, 2025
c07f8de
GPS - Refactor out GPSHardware
brentru Jun 25, 2025
551df54
GPS - begin read impl.
brentru Jun 25, 2025
bede6ab
GPS - Match Protobuf: 607702e..6811f7b
brentru Jun 25, 2025
6509167
GPS - Read/discard approach, add nmea rates to hardware
brentru Jun 25, 2025
77c553a
GPS - Circular buffer implementation for GPS reading and parsing
brentru Jun 26, 2025
522a62f
GPS - Fix circular buffer pop
brentru Jun 26, 2025
8b20e27
GPS - Implement KAT, debugging
brentru Jun 26, 2025
58623ba
GPS - Increase reliability within initial cmd sends
brentru Jun 27, 2025
881e47a
GPS - clang
brentru Jun 27, 2025
7d22453
GPS - discard parse errors
brentru Jun 27, 2025
30d301d
GPS - match 6811f7b..3a7d109
brentru Jun 27, 2025
89f2ddc
GPS - match 3a7d109..2aad669
brentru Jun 27, 2025
a2ab695
GPS - Start model GPS
brentru Jun 27, 2025
c4aca50
GPS - Fill RMC, datetime setters
brentru Jun 30, 2025
97d20ea
GPS - Fill GGA
brentru Jun 30, 2025
4722ee9
GPS- all fillers done, compiles
brentru Jun 30, 2025
71f707c
GPS - Parse GGA/RMC into Event
brentru Jul 1, 2025
402e75d
GPS - Match PB: 2aad669..d0fbb8d
brentru Jul 1, 2025
bc7d5ce
GPS - Publish back GPSevent
brentru Jul 1, 2025
528ff03
GPS - Fix bug, publishing multiple messages instead of one GPSevent
brentru Jul 1, 2025
c6924af
GPS - Refactor within update() for redundancy and memory checks
brentru Jul 1, 2025
9233d2e
GPS - Match PB d54396c..6b71dc3
brentru Jul 2, 2025
642733e
GPS - Update for PB
brentru Jul 2, 2025
320fa1e
GPS - I2C integration, Handle_GPSConfig not working yet
brentru Jul 2, 2025
c499080
GPS - handleConfig not working yet, paused on validation
brentru Jul 2, 2025
d6dbda4
GPS - Fix TwoWire not being passed properly
brentru Jul 7, 2025
5a5a6e7
Decodes init msg
brentru Jul 7, 2025
07f936c
GPS - Discard TwoWire buffer, refactoring within controller update()
brentru Jul 8, 2025
c9d9595
GPS - Remove redundant delay, update BuildPmtkAck() func
brentru Jul 8, 2025
6589b40
GPS - Fix pointer in update(), GPSEvent not filled yet
brentru Jul 8, 2025
43abe81
GPS - GPSEvent sent
brentru Jul 8, 2025
8ab6ecb
GPS - Update PBs
brentru Jul 8, 2025
e115785
GPS - store 1 GGA/RMC event within model FIFO
brentru Jul 8, 2025
232dc1a
GPS - Begin UBX implementation
brentru Jul 9, 2025
2330368
GPS - Match PB
brentru Jul 9, 2025
783ec2d
GPS - Handle Config progress on UBX
brentru Jul 9, 2025
bd4ec63
GPS - Comment out ACK
brentru Jul 10, 2025
d3afe8a
GPS - UBX Parsing OK
brentru Jul 10, 2025
9a9c57b
GPS - Refactor update() to remove funcs that should be called by the …
brentru Jul 10, 2025
5ccb7c7
GPS - Refactor GPSEvent and processing, datetime construction
brentru Jul 11, 2025
0376181
GPS - Fully refactor out common HAL to hardware and parsing to model
brentru Jul 11, 2025
f1a718f
GPS - Add processNMEA() with override, hacky but works
brentru Jul 11, 2025
3d0bb4d
Refactor away from SFE lib!
brentru Jul 21, 2025
96c5512
rm cruft from sfe detection
brentru Jul 21, 2025
6797eaf
GPS Sending event but empty for UBX
brentru Jul 22, 2025
dff9e98
GPS - Sends RMC event response
brentru Jul 22, 2025
0263274
Merge branch 'offline-mode' into migrate-api-v2-uart
brentru Jul 23, 2025
f256fcd
Merge branch 'migrate-api-v2-uart' into offline-mode
brentru Jul 23, 2025
ab7cc41
Compile OK
brentru Jul 23, 2025
2bbc638
Clang
brentru Jul 23, 2025
4636abc
kick ci
brentru Jul 23, 2025
ced98cb
clang format
brentru Jul 23, 2025
86d95ec
SDCard - begin parsing UARTadd, needs new PB
brentru Jul 24, 2025
ff5c0f3
Update Uart PB
brentru Jul 24, 2025
11062ed
SD - Parse UART generic, uart pm25aqi types
brentru Jul 24, 2025
8800c78
SD - Parse UART GPS
brentru Jul 24, 2025
351c156
GPS - I2c Refactor, put back missing autodetect from merge, crash on …
brentru Jul 28, 2025
5f6f26f
GPS - Add Parsing to SD Card
brentru Jul 28, 2025
c6d6482
SD - Add UART Logging, offline/online switch, small refactor of func …
brentru Jul 28, 2025
4792c91
SD - Add UART GPS
brentru Jul 28, 2025
82c9c6a
Offline - GPS over I2C working for PA1010D, UBX MAX-M10
brentru Jul 28, 2025
3d969cf
Offline/SD - UART GPS, UART US-100 OK
brentru Jul 29, 2025
4578099
Offline/SD - Fix PM25 sensor
brentru Jul 29, 2025
b6c3c27
Offline/SD - Fix small regression in fs
brentru Jul 29, 2025
42f83f4
Offline/SD - Fix regression RP2040
brentru Jul 30, 2025
604b889
Offline/SD - Clang Format
brentru Jul 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
525 changes: 409 additions & 116 deletions .github/workflows/build-clang-doxy.yml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .github/workflows/release-callee.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2022
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2022-2024
#
# SPDX-License-Identifier: MIT
name: WipperSnapper Release Callee
Expand Down
28 changes: 22 additions & 6 deletions .github/workflows/release-caller.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,37 @@
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2022
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2022-2025
#
# SPDX-License-Identifier: MIT
name: WipperSnapper Release Workflow

on:
release:
types: [published]
workflow_call:
secrets:
GH_REPO_TOKEN:
required: true

jobs:
check-branch:
runs-on: ubuntu-latest
outputs:
should_run: ${{ steps.check.outputs.should_run }}
steps:
- id: check
run: |
if [[ $GITHUB_REF == *"offline-mode"* ]]; then
echo "should_run=false" >> $GITHUB_OUTPUT
else
echo "should_run=true" >> $GITHUB_OUTPUT
fi
shell: bash

call-workflow-build:
needs: check-branch
if: needs.check-branch.outputs.should_run == 'true'
uses: adafruit/Adafruit_Wippersnapper_Arduino/.github/workflows/build-clang-doxy.yml@main
secrets:
GH_REPO_TOKEN: ${{ secrets.GH_REPO_TOKEN }}

call-workflow-release:
needs: call-workflow-build
uses: adafruit/Adafruit_Wippersnapper_Arduino/.github/workflows/release-callee.yml@main
needs: [check-branch, call-workflow-build]
if: needs.check-branch.outputs.should_run == 'true'
uses: adafruit/Adafruit_Wippersnapper_Arduino/.github/workflows/release-callee.yml@main
291 changes: 291 additions & 0 deletions .github/workflows/release-offline.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,291 @@
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2025
#
# SPDX-License-Identifier: MIT
name: WipperSnapper Release Workflow for "Offline Mode" Alpha Feature
on:
push:
branches:
- offline-mode
- offline-mode-*
pull_request:
branches:
- offline-mode
release:
types: [published]
branches:
- offline-mode
workflow_call:
secrets:
GH_REPO_TOKEN:
required: true

jobs:
clang:
name: 🔎 Clang
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4

- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
ref: ci-wippersnapper
path: ci
- name: pre-install
run: bash ci/actions_install.sh
- name: clang
run: python3 ci/run-clang-format.py -r -e "ci/*" -e "bin/*" -e src/nanopb -e src/protos -e src/pb.h -e src/provisioning/tinyusb src/

test-offline-mode:
name: 🧪 Test Offline Mode
runs-on: ubuntu-latest
needs: clang
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install -r tests/requirements.txt
- name: Install Wokwi CI Server
uses: wokwi/wokwi-ci-server-action@v1
- name: Install Wokwi CLI
run: curl -L https://wokwi.com/ci/install.sh | sh
- name: Install PIO Libraries for esp32dev target
run: pio pkg install --environment=esp32dev
- name: Build PlatformIO Project
run: platformio run --environment esp32dev
- name: Move new build file to test folder
run: cp .pio/build/esp32dev/firmware.elf tests/bin/offline/firmware.elf
- name: Run Wokwi Tests
run: pytest tests/test_offline.py --junitxml=report.xml -v
env:
WOKWI_CLI_TOKEN: ${{ secrets.WOKWI_CLI_TOKEN }}
- name: Publish Wokwi Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: always()
with:
files: |
/home/runner/work/Adafruit_Wippersnapper_Arduino/Adafruit_Wippersnapper_Arduino/report.xml

build-esp32sx:
name: 🏗️ ESP32-Sx
runs-on: ubuntu-latest
needs: [clang]
strategy:
fail-fast: false
matrix:
arduino-platform:
[
"metroesp32s2",
"metro_esp32s3",
"feather_esp32s2",
"feather_esp32s2_tft",
"feather_esp32s2_reverse_tft",
"feather_esp32s3",
"feather_esp32s3_4mbflash_2mbpsram",
"feather_esp32s3_tft",
"qtpy_esp32s3",
"qtpy_esp32s2",
"feather_esp32s3_reverse_tft",
"qtpy_esp32s3_n4r2",
]
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
ref: ci-wippersnapper
path: ci
- name: Install CI-Arduino
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg
git clone --quiet https://github.com/adafruit/Adafruit_HX8357_Library.git /home/runner/Arduino/libraries/Adafruit_HX8357_Library
git clone --quiet https://github.com/adafruit/Adafruit_ILI9341.git /home/runner/Arduino/libraries/Adafruit_ILI9341
git clone --quiet https://github.com/adafruit/Adafruit_STMPE610.git /home/runner/Arduino/libraries/Adafruit_STMPE610
git clone --quiet https://github.com/adafruit/Adafruit-ST7735-Library.git /home/runner/Arduino/libraries/Adafruit-ST7735-Library
git clone --quiet https://github.com/adafruit/Adafruit_TouchScreen.git /home/runner/Arduino/libraries/Adafruit_TouchScreen
git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino
git clone --depth 1 --branch wippersnapper https://github.com/brentru/lvgl.git /home/runner/Arduino/libraries/lvgl
git clone --depth 1 --branch development https://github.com/brentru/Adafruit_LvGL_Glue.git /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library
- name: Download stable Nanopb
id: download-nanopb
continue-on-error: true
run: |
wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz
- if: ${{ failure() || steps.download-nanopb.outcome != 'success' }}
name: Restore cached nanopb
id: cache-nanopb-restore
uses: actions/cache/restore@v4
env:
cache-name: cache-node-modules
with:
path: ./nanopb-0.4.8.tar.gz
key: nanopb-0.4.8.tar.gz
- if: ${{ steps.download-nanopb.outcome == 'success' }}
name: Save nanopb to cache
id: cache-nanopb-save
uses: actions/cache/save@v4
env:
cache-name: cache-node-modules
with:
path: ./nanopb-0.4.8.tar.gz
key: nanopb-0.4.8.tar.gz
- name: Install stable Nanopb
run: |
tar -xf nanopb-0.4.8.tar.gz
# Copy files to WipperSnapper's src/nanopb directory
cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb
mv nanopb/pb.h src/nanopb/nanopb.pb.h
- name: List all files in Adafruit_LittlevGL_Glue_Library folder
run: |
ls /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library
- name: Copy lv_conf.h file in Adafruit_LittlevGL_Glue_Library to the arduino library folder
run: |
cp /home/runner/Arduino/libraries/Adafruit_LittlevGL_Glue_Library/lv_conf.h /home/runner/Arduino/libraries
- name: Build for ESP32-SX
run: |
python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
- name: list files (tree)
run: |
tree
- name: Rename build artifacts to reflect the platform name
run: |
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin
- name: upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}
path: |
wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2
wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bin

build-rp2040:
name: 🏗️ RP2040, RP2350
runs-on: ubuntu-latest
needs: [clang]
strategy:
fail-fast: false
matrix:
arduino-platform: ["pico_rp2040_tinyusb",
"pico_rp2350_tinyusb",
"feather_rp2040_adalogger_tinyusb",
"metro_rp2350_tinyusb"
]
steps:
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
ref: ci-wippersnapper
path: ci
- name: Install CI-Arduino
run: bash ci/actions_install.sh
# manually install OneWireNG/TempControlLib for OneWireNg (RP2040 Supported OneWire w/backwards compat.)
- name: Install extra Arduino libraries
run: |
git clone --quiet https://github.com/pstolarz/OneWireNg.git /home/runner/Arduino/libraries/OneWireNg
git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino
git clone --quiet --branch fix-for-pico https://github.com/brentru/SdFat.git /home/runner/Arduino/libraries/SdFat_-_Adafruit_Fork/
- name: Download stable Nanopb
id: download-nanopb
continue-on-error: true
run: |
wget https://jpa.kapsi.fi/nanopb/download/nanopb-0.4.8.tar.gz
- if: ${{ failure() || steps.download-nanopb.outcome != 'success' }}
name: Restore cached nanopb
id: cache-nanopb-restore
uses: actions/cache/restore@v4
env:
cache-name: cache-node-modules
with:
path: ./nanopb-0.4.8.tar.gz
key: nanopb-0.4.8.tar.gz
- if: ${{ steps.download-nanopb.outcome == 'success' }}
name: Save nanopb to cache
id: cache-nanopb-save
uses: actions/cache/save@v4
env:
cache-name: cache-node-modules
with:
path: ./nanopb-0.4.8.tar.gz
key: nanopb-0.4.8.tar.gz
- name: Install stable Nanopb
run: |
tar -xf nanopb-0.4.8.tar.gz
# Copy files to WipperSnapper's src/nanopb directory
cp nanopb/pb_common.* nanopb/pb_encode.* nanopb/pb_decode.* src/nanopb
mv nanopb/pb.h src/nanopb/nanopb.pb.h
- name: build RP2040 platforms
run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
- name: Rename build artifacts to reflect the platform name
run: |
mv examples/*/build/*/Wippersnapper_demo_offline_nonetiface.ino.uf2 wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2
- name: upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-files-${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}
path: |
wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2

merge-job-build-files:
name: Merge Artifacts for build-files
runs-on: ubuntu-latest
needs: [build-esp32sx, build-rp2040]
steps:
- name: Merge Artifacts from Builds
uses: actions/upload-artifact/merge@v4
with:
name: build-files
pattern: build-files-!(dev)-*
delete-merged: true


release-wippersnapper:
name: 🚀 Upload Release Files
runs-on: ubuntu-latest
needs: merge-job-build-files
if: github.event_name == 'release' && startsWith(github.ref, 'refs/tags/')
steps:
- name: Download build artifacts from build-platform steps
uses: actions/download-artifact@v4
with:
name: build-files
- name: List Files
run: ls
- name: Upload Assets to the GitHub Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
wippersnapper.*.uf2
wippersnapper.*.bin
wippersnapper.*.zip
25 changes: 21 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,30 @@ html/*
# VSCode artifacts
.vscode/*
src/.vscode/settings.json

.DS_STORE

examples/Wippersnapper_demo/build/

# Virtual environment directories
.venv/
venv/

# Python artifacts
tests/__pycache__/

# Platformio artifacts
.pio/

# Secrets
data/
# These sometimes contain credentials, don't commit them!
src/Wippersnapper_demo_wokwi.ino
data/
examples/Wippersnapper_demo_offline/.theia/
examples/Wippersnapper_demo_offline/.vscode/
examples/Wippersnapper_demo_offline/build/

# Test results
report.xml

# VSCode settings
.vscode/settings.json

CLAUDE.md
Loading
Loading