Compare commits

..

415 commits

Author SHA1 Message Date
brentru
308ed322fb Update version to prep for merge 2025-07-23 11:05:27 -04:00
Brent Rubell
556477721e
Merge pull request #728 from adafruit/offline-mode-autoconfig
Add automatic configuration capability and other enhancements for Offline Mode
2025-04-14 11:48:54 -04:00
brentru
375fd394a0 address @tyeth review 2025-04-14 11:26:36 -04:00
brentru
ec229aaa5f Restore demo 2025-04-11 16:18:16 -04:00
brentru
eda059e13b fix OFFLINE requirement that is causing msc detach/attach after logging 2025-04-11 16:17:32 -04:00
brentru
49124174eb Fix target - metro rp2350 tinyusb 2025-04-11 14:56:21 -04:00
brentru
2d0d4fe110 fix the swapped classes 2025-04-11 13:59:52 -04:00
brentru
385537fedc nonet update 2025-04-11 13:48:00 -04:00
brentru
0ece23be40 test demo offline, nonet and netifaces 2025-04-11 13:35:33 -04:00
brentru
1b51d0cc10 Test should work now, revert ci change for offline 2025-04-11 13:28:19 -04:00
brentru
4a680ad06f build targets for offline mode 2025-04-11 13:14:08 -04:00
brentru
7362592430 Fix tyeth issue 2025-04-11 13:06:51 -04:00
brentru
14fe05a94d ignore offline 2025-04-11 11:21:50 -04:00
brentru
24c4961555 flip conditinals 2025-04-11 11:20:26 -04:00
brentru
44f351d6d0 update release-caller.yml 2025-04-11 11:16:15 -04:00
brentru
8d17e93cf9 Fix all regressions 2025-04-11 10:12:17 -04:00
brentru
ff80728a8f fix regression - analogio, digitalio 2025-04-11 09:46:51 -04:00
brentru
0b072e2bcd clang 2025-04-10 16:07:57 -04:00
brentru
765cb4afae build for esp32dev CLI 2025-04-10 16:06:48 -04:00
brentru
4335c247ba Fix - automatic scan backing out incorrectly after candidate list exhausted' 2025-04-10 15:35:53 -04:00
brentru
8baad48a17 clang 2025-04-10 15:01:31 -04:00
brentru
b7c89e58e7 Release for offline fix 2025-04-10 14:59:09 -04:00
brentru
c58774c954 doxygen: 2025-04-10 14:54:39 -04:00
brentru
9205787459 putback old sketch 2025-04-10 14:23:06 -04:00
brentru
f13f8b7618 review modifications 2025-04-10 13:42:27 -04:00
brentru
8313b66a82 trim controller 2025-04-10 12:19:05 -04:00
brentru
d86a445735 reviewing 2025-04-10 12:10:12 -04:00
brentru
f579bbdd96 reenum adding cdc and msc doesnt reenum til the end 2025-04-09 15:23:45 -04:00
brentru
8614a6db12 pair 2: remove debug code 2025-04-09 12:27:00 -04:00
brentru
0a422f5400 pair: working mux 2025-04-09 12:11:38 -04:00
brentru
9fc3e4dd50 still debugging mux inclusion 2025-04-08 16:35:11 -04:00
brentru
fbfcc08bcd debugging mux 2025-04-08 15:49:50 -04:00
brentru
6c4595915f put back old work without the no/auto/yes 2025-04-07 16:22:19 -04:00
brentru
aaf718d754 sync protos 2025-04-07 13:52:24 -04:00
brentru
4020e0330d debugging existing file 2025-04-07 12:52:57 -04:00
brentru
6018591b5d Load an existing file into the in-memory document and append to it as-needed 2025-04-04 16:58:30 -04:00
brentru
77c9a53389 autocfg->write->usb workflow implemented 2025-04-04 12:21:53 -04:00
brentru
40e80d99fb check if scan == candidate 2025-04-04 11:45:16 -04:00
brentru
fa65af9a65 add use: fields 2025-04-03 15:00:47 -04:00
brentru
01a4a72aa5 Wow, uh, WSVs._fsv2 wasnt being called everywhere leading to a dangling member. Fixed 2025-04-03 13:33:18 -04:00
brentru
387e66c32d looking at autocfg->write->start 2025-04-03 12:49:04 -04:00
brentru
f778e46456 working on hw 2025-04-02 15:54:37 -04:00
brentru
161bacb4ad Reduce error string verbosity 2025-04-02 13:21:05 -04:00
brentru
3b58f2e370 Check for scan results within parse, log a warning 2025-04-02 11:35:56 -04:00
brentru
8edabaa50a Refactor parsing scan results into the buffer 2025-03-28 15:57:01 -04:00
brentru
0a208e2f96 Persistent init working from config 2025-03-28 11:41:55 -04:00
brentru
f8b7610229 Write back i2c device info to config file, doesn't work on boot yet 2025-03-27 15:20:47 -04:00
brentru
f4408473dc remove the usb attach/detach and extra syncs 2025-03-26 18:37:47 -04:00
brentru
515ce9c5d9 remove detach/attach issue 2025-03-26 18:20:00 -04:00
brentru
f323fd02d0 use reverse map, unordered_map instead 2025-03-26 16:55:11 -04:00
brentru
ea3c17f485 add all drivers 2025-03-26 12:26:13 -04:00
brentru
3686c6f8a6 add sensor types to components, (2) 2025-03-25 17:12:29 -04:00
brentru
f83d534542 add sensor types to components, (1) 2025-03-25 16:35:01 -04:00
brentru
aa557e2a56 Temporarily remove adding the device to the config file since it doesnt write out its types, device default_sensor_types is broken 2025-03-25 13:25:31 -04:00
brentru
8ce8b7b5d4 Fix driver name issue 2025-03-25 11:22:15 -04:00
brentru
f13a706d93 Associate driver with address, writeback to file 2025-03-25 10:52:55 -04:00
brentru
b7784dfe49 add association within controller, TODO: remove association cruft in driver! 2025-03-24 16:59:21 -04:00
brentru
0b55693def add scan pb to config 2025-03-24 15:36:11 -04:00
brentru
ebb36d6d89 Refresh USB for Pico if sd config was automatically found 2025-03-24 13:12:29 -04:00
brentru
cef1bfc76f save friday progress 2025-03-21 16:45:19 -04:00
brentru
c4eba79970 Refactor all ParseX component functions within ws_sdcard.h 2025-03-21 11:04:04 -04:00
brentru
a5d8807d50 Hooks for detach/attach 2025-03-21 10:10:37 -04:00
brentru
e17292f080 Append scan results to config file? 2025-03-20 15:10:13 -04:00
brentru
6d312c573a check scan results 2025-03-20 13:43:24 -04:00
brentru
d9f6a36fd3 putback old initbus, scan the non-alt bus by default, fixing the bug 2025-03-20 13:15:20 -04:00
brentru
b3a1edf08f save work 2025-03-20 10:58:22 -04:00
brentru
e797fd483e Add controller hooks for managing the scan from another class 2025-03-19 11:50:12 -04:00
brentru
c2f471fbff add bus scan with storage for results, not hooked into ctroler 2025-03-19 11:02:23 -04:00
Brent Rubell
d3f04623aa Break out components parsing 2025-03-19 14:01:03 +00:00
brentru
bd2ec33ee8 Starting to break out config file parsing so we can insert entry-point for i2c component auto workflow within it 2025-03-18 17:03:52 -04:00
brentru
fcbd86a19f Test with hardware, resolve spi_cfg issues 2025-03-18 14:38:42 -04:00
brentru
de667441fd Merge branch 'offline-mode' into offline-mode-autoconfig 2025-03-18 13:22:15 -04:00
brentru
0de3e5c73a sht4x fix 2025-03-18 11:31:37 -04:00
brentru
7b48d81094 use adafruit fork of sdfat within ws_sdcard.h 2025-03-18 11:12:01 -04:00
brentru
433865d3c7 use spiflash from gh not brentru 2025-03-18 11:08:43 -04:00
brentru
1603b9ff08 same as main 2025-03-18 11:02:08 -04:00
brentru
ceaf6fd91f add streamutils, rtclib 2025-03-18 10:54:37 -04:00
Brent Rubell
a821a31d5b Merge pull request #711 from adafruit/revert-forked-deps
Revert SDFat Forked Dependency for Pico
2025-03-18 10:50:51 -04:00
brentru
970901e4d7 Move SD_CS_PIN into Boards 2025-03-17 16:45:21 -04:00
brentru
480e2c7d7e Refactoring within WS_SDCARD 2025-03-17 16:30:25 -04:00
brentru
6f1b2d5419 Add to FS for config file 2025-03-17 15:46:48 -04:00
brentru
bd8095ed0b Prelim thoughts on SD API, tighten up FS APIs 2025-03-17 15:08:54 -04:00
brentru
1e6a8c74ed hm how about trying adding the potential address to the driver.. 2025-03-14 16:14:39 -04:00
brentru
09095e56f3 Refactor to use PIO-specific driver on RP2040 platforms, rather than bitbang it
clean up

max 7

clang
2025-03-06 14:41:08 -05:00
brentru
ca568b36e2 explicit dont run 2025-03-03 12:09:08 -05:00
brentru
128f34b3a0 do NOT build the regular release workflow 2025-03-03 12:02:36 -05:00
brentru
e6d87aa2af 4sp->2sp 2025-03-03 11:27:40 -05:00
brentru
787cb00ca8 workflowcall->secrets 2025-03-03 11:26:13 -05:00
brentru
734b879f18 Match upstream, upload to release check 2025-03-03 11:25:16 -05:00
brentru
ad0e794a7b Mirror library.properties on main 2025-03-03 10:58:42 -05:00
brentru
02c09e6439 Address Tyeth feedback 2025-03-03 10:50:02 -05:00
brentru
9f6a0885ff attempt to fix rp2040 adalogger 2025-02-26 15:22:47 -05:00
brentru
d3cdc61e71 clang 2025-02-26 15:06:36 -05:00
brentru
99d8cf5394 Add Metro RP2350 builds 2025-02-26 15:03:43 -05:00
brentru
4093c96d20 Add Metro RP2350 2025-02-26 14:58:46 -05:00
brentru
15184612fb rename skip/gen 2025-02-26 13:38:57 -05:00
brentru
d88b17ff10 skip/gen files 2025-02-26 12:57:14 -05:00
brentru
8d261ec7bc Allow for SPI1 port to be used on Feather RP2040 Adalogger 2025-02-26 12:35:52 -05:00
brentru
835b601d21 putback demo code 2025-02-26 12:13:40 -05:00
brentru
f0abfa566c Add Adafruit RP2040 Adalogger to workflow too 2025-02-26 12:05:22 -05:00
brentru
13b149625e Add Adafruit RP2040 Adalogger to PIO and codebase 2025-02-26 12:04:04 -05:00
brentru
affdf956ef Fix I2C Pinout on RP2040 Variants 2025-02-25 16:33:56 -05:00
brentru
5ac35f3b03 build while testing instead 2025-02-24 15:18:12 -05:00
brentru
a2e722cab1 attribute scott perkins correctly 2025-02-24 14:20:31 -05:00
brentru
8aa233a47a Modify demos 2025-02-24 14:19:52 -05:00
brentru
afffa814e9 remove .cpp residual 2025-02-24 13:58:17 -05:00
brentru
0d96f93a4e Add workflow for this branch 2025-02-24 13:57:02 -05:00
brentru
9c3d525215 Remove unused ctor in drvBase, remove code in ctor body for drvers 2025-02-24 13:48:18 -05:00
brentru
6485e4dfe1 Work without a RTC attached 2025-02-24 13:23:08 -05:00
brentru
d0b42ad9ea bump download-artifact version to 4 2025-02-19 12:12:54 -05:00
brentru
357a73c1a0 consolidate tests and build script 2025-02-19 11:55:36 -05:00
brentru
cec28b1ad8 Pass tests 2025-02-19 11:42:33 -05:00
brentru
8e7385ccf8 tests use the runner 2025-02-18 12:54:20 -05:00
brentru
33f5955ab3 target esp32dev install only 2025-02-18 12:46:06 -05:00
brentru
61de28781a clangx2 2025-02-18 12:35:50 -05:00
brentru
f206963507 clang again 2025-02-18 12:34:07 -05:00
brentru
2770d8a6a0 bring in test runner, attempt to run! 2025-02-18 12:33:24 -05:00
brentru
af886dba37 clang, fix offline test runner to install 2025-02-18 12:27:36 -05:00
brentru
77bbf1a77a run clang first 2025-02-18 12:20:50 -05:00
brentru
670a6dc4c6 do not clang inside protos/ dir, new dir replaces wippersnapper/ dir 2025-02-18 12:14:43 -05:00
brentru
1d2d97ca7f checkout 2x? 2025-02-18 12:01:57 -05:00
brentru
1d12fa7cc6 tree clang 2025-02-18 11:48:46 -05:00
brentru
5f78c969fe fix rename 2025-02-18 11:34:27 -05:00
brentru
0344da5c02 fix mv 2025-02-18 11:27:00 -05:00
brentru
fc10a78c29 add pico board 2025-02-18 11:24:45 -05:00
brentru
435bac2890 status neopixel num = 1 2025-02-13 17:00:50 -05:00
brentru
9dcd5f0edc typo, v2 api uses _address 2025-02-13 16:51:25 -05:00
brentru
6c84b7a0fd Rm manual scd4x lib clone 2025-02-13 16:45:19 -05:00
brentru
5150c9ba1a Match main branch for 1.0.0 release of scd4x lib 2025-02-13 16:44:33 -05:00
brentru
bc1902ee47 manual scd4x branch 2025-02-13 16:41:04 -05:00
brentru
9b43229810 fix generate/skip 2025-02-13 16:36:13 -05:00
brentru
c937e93c26 add streamutils 2025-02-13 16:14:14 -05:00
brentru
c35cc76f90 skipfiles for rp20xx 2025-02-13 16:11:55 -05:00
brentru
15ad1f4980 add RTCLib 2025-02-13 16:10:18 -05:00
brentru
b6928ba2d9 sensiron changed their case sensitivity? 2025-02-13 16:04:16 -05:00
brentru
b8c98f2a32 fix redefiniton for Wippersnapper.h within driver 2025-02-13 15:38:52 -05:00
brentru
7558d32ff5 fix case sensitivty again 2025-02-13 15:30:10 -05:00
brentru
009581645f Fix BME280 uCase 2025-02-13 15:26:17 -05:00
brentru
33f35336ff Fix include case sensitivity issue 2025-02-13 15:22:54 -05:00
brentru
ae086bdf92 Fix skip/gen files 2025-02-13 15:13:59 -05:00
brentru
36f1b047bf Remove conditionals for relase, for now 2025-02-13 14:57:09 -05:00
brentru
7bf0896857 Update release for offline mode ci 2025-02-13 14:54:50 -05:00
brentru
0542219b00 Review model.cpp 2025-02-13 12:52:31 -05:00
brentru
e566898710 Fix mux init from refactor 2025-02-13 12:49:29 -05:00
brentru
a27bd94ce0 Refactor mux init, driver init 2025-02-13 11:58:25 -05:00
brentru
a756f0f6d2 Refactor mux handling within handleI2cDeviceAddOrReplace 2025-02-13 10:47:20 -05:00
brentru
71aa594eaf Refactor haltdelay to let it hang or reboot 2025-02-13 09:45:16 -05:00
brentru
340e3f880b Add offline skip/generate files 2025-02-12 11:16:52 -05:00
brentru
31533af591 Add CI for offline mode 2025-02-12 11:05:53 -05:00
brentru
55c6b53b74 Bring over SD card review changes 2025-02-11 15:13:35 -05:00
brentru
c362d0b27e complete doxygen pass through 2025-02-11 14:58:34 -05:00
brentru
560d707992 Fix DPS, scd, memset issue 2025-02-11 13:16:51 -05:00
brentru
c95047dc4c Fix SD card file handling for Pico target, overall fix 2025-02-11 11:14:02 -05:00
brentru
8506c17f60 attempt fix sd for pico target 2025-02-11 11:07:19 -05:00
brentru
8cd12dfdd2 Doxygen Pass 2/? 2025-02-11 10:40:16 -05:00
brentru
b86d9c213b Doxygen Pass 1/2 2025-02-11 10:26:51 -05:00
brentru
080d1dabe5 Fix for SCD40, SCD41 2025-02-10 16:31:34 -05:00
brentru
67ecbe6ac6 QoL for hanging the device for driver failure, allow picow via offline demo and fix for adapters 2025-02-10 15:49:15 -05:00
brentru
b78c3595cf Fix light sensor not recording to event for TSL2591 2025-02-10 12:46:53 -05:00
brentru
bb31f5eb21 Fix getAmbientTempF(), get raw event for AHT20 test 2025-02-10 11:29:53 -05:00
brentru
aa8ef676b0 Fix get->GetEvent() bug! 2025-02-07 16:19:07 -05:00
brentru
692f56fe91 Full mapping for all values! 2025-02-07 15:47:28 -05:00
brentru
d4eb3a984c Remove unsorted map, possible collisons 2025-02-07 15:19:12 -05:00
brentru
92a1af67da Fix bug with initial log file, fix status LED color issue 2025-02-07 14:58:22 -05:00
brentru
ec5bcb16be remove debugs, add kat blink for offline 2025-02-07 13:54:25 -05:00
brentru
bdfb73fe96 v2->no suffix 2025-02-07 10:19:57 -05:00
brentru
e659e118ae remove the api switcher 2025-02-06 16:11:34 -05:00
brentru
00006b4bf2 moving towards v2 api only? 2025-02-06 15:51:38 -05:00
brentru
c85104516a remove second pb.h file?! switch to hashmap 2025-02-06 15:25:06 -05:00
brentru
170cc42980 compile w/o cruft 2025-02-06 13:47:48 -05:00
brentru
c0786ffc89 add veml, vl53x, vl61x 2025-02-06 12:54:54 -05:00
brentru
e13ea8f0ca add sen5x, sgp40, sht3x, sht4x, shtc3, si7021, stemmasoil, tmp117, tsl2591, veml7700, vncl4020, vncl4040 2025-02-06 11:02:16 -05:00
brentru
180d48e322 Add PM25, SCD30, SCD4x 2025-02-06 09:45:31 -05:00
brentru
7b0facaf4d Add MPRLS, Ms8607, nau7802, pct2075, fix inclusion error for MPRLS and NAU 2025-02-05 12:23:54 -05:00
brentru
b31185581f add Mpl115a2 2025-02-04 16:35:21 -05:00
brentru
dde9120a53 add mcp9808 2025-02-04 16:27:27 -05:00
brentru
ee7a0f4467 add ltr329, ltr303, ltr390, max1704x, mcp3421 2025-02-04 16:20:16 -05:00
brentru
dc5783001b add lc709203f, lps22gb, lps25hb, lps3xhw 2025-02-04 14:57:20 -05:00
brentru
9099c0258b add ens160, htu21d, hts221, ina219 2025-02-04 14:21:56 -05:00
brentru
7f8477e30f Add bh1750, bme680, bmp280, bmp3xx variants 2025-02-04 12:24:50 -05:00
brentru
1eee91163e Add AHTx0 2025-02-04 11:50:40 -05:00
brentru
e384ad652b Add ADT7410 drv 2025-02-04 11:13:36 -05:00
brentru
79f4f38f70 Expose scl/sda pins through the driver for an alt. i2c bus rather than handling thru controller update() loop 2025-02-04 10:51:35 -05:00
brentru
7fe8d61b75 Fix bug with mux addr printing, non-default scl/sda pins for alt. bus decl. 2025-02-04 10:45:03 -05:00
brentru
f0f0855485 Log the output to serial and sd 2025-02-03 12:59:18 -05:00
brentru
2220b7faa4 refactor mux handling, doxygen 2025-01-31 12:34:01 -05:00
brentru
5c990e4945 pull data out of sensor into an event variable 2025-01-30 16:27:08 -05:00
brentru
3a82a14944 Map of lambda funcs for GetEventX() calls 2025-01-30 11:38:32 -05:00
brentru
af1ac3ba4e Allow controller to query driver obj. for if its using an alt. i2c bus, hooks in controller 2025-01-30 10:56:15 -05:00
brentru
05ce076b40 setbool 2025-01-28 14:03:14 -05:00
brentru
179cc525cf MUX refactor 2025-01-28 14:02:45 -05:00
brentru
cc2d25e545 Tyeth review 2025-01-28 12:51:35 -05:00
brentru
1e3f6af9df Update drvBase to use ulong() for all time-keeping rather than long, handle 49 day rollovers 2025-01-28 11:09:31 -05:00
brentru
e20d50feb0 Park Remove for now, dont implement just yet 2025-01-24 13:11:07 -05:00
brentru
a0b2729dd5 Refactor out SD parsing for I2C 2025-01-24 11:37:08 -05:00
brentru
5d8e9926a5 working on hardware 2025-01-23 15:36:08 -05:00
brentru
383a69e5d9 Fix logic within IsBusStatusOK and add alt. bus to create driver func 2025-01-23 13:29:18 -05:00
brentru
0d6fb0d31e Update with alt. i2c bus plumbing 2025-01-23 12:04:04 -05:00
brentru
970bf4c705 Match WipperSnapper_Protobuf bed8b12f6f5faec6c5604e204b44a8528e35607a 2025-01-22 15:36:32 -05:00
brentru
6c96a6006c Refactor out publishing, i2c mux init code! 2025-01-22 13:04:21 -05:00
brentru
75a58a64e0 Reflect WipperSnapper_Protobuf 10060314ca8f3e2d4f7f21de96e7521c58655a22 2025-01-21 16:49:22 -05:00
brentru
37eec43f43 Add initial mux working 2025-01-21 14:51:25 -05:00
brentru
100f343d31 Add driver, initial framework and comments for i2c muxes 2025-01-17 16:11:31 -05:00
brentru
88c7df249b Init i2c component from sd card config file 2025-01-17 11:23:16 -05:00
brentru
321c011acd Refactor further, add bme280 driver, compile OK 2025-01-16 11:41:12 -05:00
brentru
4d2f4464c5 Publish back the wippersnapper_i2c_I2cDeviceAddedOrReplaced message to IO 2025-01-15 16:11:16 -05:00
brentru
bdcf514d3e Implement API for I2cDeviceAddedorReplaced message 2025-01-15 16:03:36 -05:00
brentru
b2770ee2d3 refactoring more! 2025-01-14 15:30:23 -05:00
brentru
a507f77772 refactoring! 2025-01-14 14:22:06 -05:00
brentru
fafd25f058 add driver_v2 base class 2025-01-14 11:59:38 -05:00
brentru
17e5c4e26b implement first pass at Handle_I2cDeviceAddOrReplace 2025-01-13 14:47:33 -05:00
brentru
71b06ec36d more plumbing for i2c 2025-01-10 10:07:51 -05:00
brentru
450a369a39 plumb deviceaddreplace more 2025-01-09 13:44:43 -05:00
brentru
5b67a61f69 Introduce new I2c API 2025-01-02 13:49:32 -05:00
brentru
6ecacfd5cd [SD] Bring bcd script in-line with main 2024-12-27 11:22:18 -05:00
brentru
a2bcc7dd2a [SD] Resolve all Wokwi test issues, all green 2024-12-27 11:17:59 -05:00
brentru
75b117b2a5 [SD] Fix Wokwi Testing, test_digital_input is having issues still 2024-12-26 16:48:25 -05:00
brentru
f10f7551a7 [SD] Tested with ESP32 Pico QT Py and DS3231 2024-12-20 11:31:48 -05:00
brentru
1fd43286b1 [SD] Untested on HW | Fix for ESP32 SPI clock issue 2024-12-19 14:04:32 -05:00
brentru
253a2c0290 [SD] Support for LittleFS based provisioning 2024-12-16 14:43:16 -05:00
brentru
126f430967 [SD] Add debug output to adapter classes, valid return values where applicable to properly indicate its a stub class, add pico to ini 2024-12-13 15:52:19 -05:00
brentru
e3e6ff3f47 [SD] Complete adapters/ work and build 2024-12-13 15:35:13 -05:00
brentru
c67318012f [SD] Move to ws_adapters naming scheme to allow flexibility for offline devices too and eventual cellular 2024-12-12 17:02:34 -05:00
brentru
a7c20d1edc rm old terms 2024-12-12 16:39:35 -05:00
brentru
0d9633036b [SD] add pico2 2024-12-12 16:36:10 -05:00
brentru
d29e3e4bf7 [SD] Start to support pico2 2024-12-11 18:01:49 -05:00
brentru
e076710386 [SD] Set status led green after successful config 2024-12-10 15:59:28 -05:00
brentru
b7415d0500 [SD] Handle sd cards of varying capacities! 2024-12-10 13:06:04 -05:00
brentru
d1ac920df9 [SD] Address error cases/states for sd_cs handling 2024-12-10 11:33:49 -05:00
brentru
33d5089c28 clean up 2024-12-09 16:30:48 -05:00
brentru
0a29dc79bc [SD] Finish refactoring to allow config.json to sit on WIPPER drive, add dynamic SD CS pin 2024-12-09 16:00:47 -05:00
brentru
2d7139c593 [SD] Link tinyusb, refactor init 2024-12-09 13:42:47 -05:00
brentru
4a6364e1a4 [SD] dynamic pin refactor 2 2024-12-09 11:47:50 -05:00
brentru
c2a2e428bd [SD] Refactor and make pins dynaically allocated for sdcard 2024-12-06 16:32:36 -05:00
brentru
45d23653ee [SD] Refactor checksum validation out, dont require it to operate 2024-12-06 12:15:11 -05:00
brentru
8bac2d7aba [SD] Add some overhead for pico2, generate json checksum data script 2024-12-05 11:33:04 -05:00
brentru
cd720e5b17 [SD] first working offline log to sd 2024-12-03 15:50:37 -05:00
brentru
7207778166 [SD] All tests green again 2024-12-03 12:27:23 -05:00
brentru
c2ea367d92 [SD] Handle error cases during parsing for DIOAdd 2024-12-02 13:18:59 -05:00
brentru
e79530110f [SD] Refactor out LogSensorEventTOSD funcs 2024-11-29 15:11:51 -05:00
brentru
4d9bed832b [SD] Refactor sd header and clean it up 2024-11-29 12:46:46 -05:00
brentru
52a8bd7757 [SD] Implement buffered JSON stream writes to sd card, refactoring along logging, basic file creation implementaiton 2024-11-27 12:50:18 -05:00
brentru
0e0cda4b0f [SD] Parsing and dispatch working on Metro ESP32S3 hardware 2024-11-26 16:47:25 -05:00
brentru
c9c904c095 [SD] Fully refactor ParseConfigFile 2024-11-26 12:42:37 -05:00
brentru
4794bcd7ba [SD] Refactor all parsing 2024-11-26 11:28:44 -05:00
brentru
a81fa033ab [SD] Push #offline config into the PIO build ini for one platform only 2024-11-25 16:09:24 -05:00
brentru
ebb269c30f [SD] Refactoring ParseFile2 2024-11-22 15:55:53 -05:00
brentru
348334541a [SD] Refactoring ParseFile1 2024-11-22 14:47:21 -05:00
brentru
26c62ab431 putback main way to attach msc 2024-11-21 16:24:46 -05:00
brentru
8eea7ec70b looking at metro s3 2024-11-21 15:57:29 -05:00
brentru
192ff1ae13 merge in upstream esp32s3 metro patch 2024-11-21 14:20:19 -05:00
Brent Rubell
01d4b72529 Merge pull request #647 from tyeth/add-metro-s3
Add metro s3
2024-11-21 12:31:39 -05:00
brentru
c6776a2daf update tests, result ignore 2024-11-20 15:54:36 -05:00
brentru
6e6ad431ba [SD] Fix path 2024-11-20 13:58:26 -05:00
brentru
ccb13b128d [SD] Run via GH:A 2024-11-20 13:47:41 -05:00
brentru
4826b58526 [SD] Add binary for offline 2024-11-20 12:29:03 -05:00
brentru
1d43de2b6a [SD] Add Pytest file, rename to scenario yaml 2024-11-19 15:20:17 -05:00
brentru
b2c79f391f [SD] Add test for parsing invalid json edge case 2024-11-19 14:30:04 -05:00
brentru
7eab68270f [SD] Add test for offline digital input 2024-11-19 13:04:08 -05:00
brentru
3eac2215c2 [SD] Rm sd read json scenario that we aren't using 2024-11-19 11:58:33 -05:00
brentru
d97e430db3 [SD] Add offline analog input scenario 2024-11-19 11:58:13 -05:00
brentru
5b5463cd33 [SD] Refactor diagram, doxygen sd class 2024-11-18 15:04:03 -05:00
brentru
27aa7d4424 [SD] Multiple DS18b20 events, multiple ds18b20 instances 2024-11-18 12:13:13 -05:00
brentru
f0f574a0ac [SD] ds18x20 decode thru controller via HandleAdd OK 2024-11-14 14:22:05 -05:00
brentru
bf7b7de3fc [SD] Implement DS18x20 JSON->PB parsing, decoding at the component-handle fails 2024-11-14 13:02:21 -05:00
brentru
4d7d1db1d9 [SD] Get codebase show-ready 2024-11-13 15:43:45 -05:00
brentru
7020f4e275 [SD] Implement DigitalIO Output parsing, untested 2024-11-12 14:58:40 -05:00
brentru
d4c8dad505 [SD] Add vector of vectors for processing > 1 component from JSON, print json to serial in Line format w/newLine 2024-11-12 14:09:50 -05:00
brentru
b71e2e6ff1 [SD] 2x component json add 2024-11-08 11:52:17 -05:00
brentru
861ab98343 [SD] implement checkin process dynamic instead of hardcode 2024-11-07 13:35:48 -05:00
brentru
9f6c810792 [SD] Log jsonl to serial 2024-11-07 12:49:58 -05:00
brentru
019c7a91b1 [SD] Add PCF8253 RTC compatibility 2024-11-07 11:37:51 -05:00
brentru
1b5ee96ffe 🚧 SD - hardcode the checkin process 2024-11-05 16:00:14 -05:00
brentru
0f226a60de switch from func to property to test online mode 2024-11-05 14:50:51 -05:00
brentru
cdcbb6535a 🚧 SD - prioritizeds1307 rtc over ds3231 2024-11-05 12:49:20 -05:00
brentru
aa99b19da4 add rtc 2024-11-05 12:28:18 -05:00
brentru
ad574e23c6 🚧 SD - parsing to dispatch working for one component only 2024-11-05 11:54:58 -05:00
brentru
1aeee684df 🎨 SD - Add formatting logging 2024-11-04 16:48:11 -05:00
brentru
fbd4c5bad6 🚧 SD - Add parsing for AnalogIOAdd, remove DigitalIOAdd global message in favor of a global Signal message 2024-11-04 16:37:55 -05:00
brentru
6bb1ab2815 🚧 SD - Start building out json->pb parser, allow debug passthru for parsing a json string hardcoded 2024-11-04 16:00:44 -05:00
brentru
30bab50b8e 🚧 SD - parse out component type, add offline/debug flag, parse json string 2024-11-01 13:26:28 -04:00
brentru
3b3a10c172 🚧 SD - add waitForIncomingConfigFile() parse serial over TCP 2024-11-01 11:32:18 -04:00
brentru
eaa1ee8343 🚀 SD - wokwi simulator detecting and switching to offline mode 2024-10-31 14:29:42 -04:00
brentru
00530c1a7f 🚧 SD - refactor out sd func. to a new class 2024-10-31 13:40:00 -04:00
brentru
fbf9886d5a 🚧 Working simulation with Wokwi 2024-10-30 16:38:39 -04:00
brentru
f22b43136c 🚧 Wokwi progress 2024-10-30 15:13:20 -04:00
brentru
baca82d03a 🚧 Integrate Wokwi CLI and simulator builds, begin 2024-10-30 12:41:29 -04:00
brentru
46d85c0f80 🚧 SD - parsing hooks for arduinojson 2024-10-29 16:38:00 -04:00
brentru
26ff4ffe69 🚧 SD - Add global flag for sd mode, detection in connect and entry point for new parsing func. 2024-10-28 16:44:38 -04:00
brentru
24561bc51a 🚧 SD - entry point and detect if inserted in all boards 2024-10-28 16:04:36 -04:00
brentru
65b66fe597 🚧 SD - include sd cs pins for all boards 2024-10-28 15:31:27 -04:00
brentru
54edb4cb2d 🎨 Review dsx model 2024-10-18 10:48:36 -04:00
brentru
c1efd3e746 📝 Review controller/hardware classes, self-review 2024-10-17 16:48:33 -04:00
brentru
407b1e48c5 🐛 Don't allow non-object-temp SensorTypes to init a ds18 sensor 2024-10-17 14:40:27 -04:00
brentru
6d4e85d716 🐛 Fix DSx bug, onewirePin not added to ds18x20Evetn messages 2024-10-17 13:01:01 -04:00
brentru
546820793a 🐛 WIP, dsx - Fix bug where two sensors are initd but only the first is read 2024-10-17 12:02:48 -04:00
brentru
8e5a4de4e1 🚧 WIP, dsx - Add debug profile, remove redundant code within update() call 2024-10-17 11:06:39 -04:00
brentru
a5e43c102c add logging facility for dsx 2024-10-15 16:40:47 -04:00
brentru
16412d44d5 🚧 WIP, dsx, handle event/remove 2024-10-15 16:17:35 -04:00
brentru
458e7a696f 🚧 WIP, dsx - Read temperature and properly reset all counters 2024-10-15 11:28:24 -04:00
brentru
697b6e9f71 🎨 WIP, dsx - Doxygen and remove unused code implemented in the sensor model 2024-10-10 15:17:51 -04:00
brentru
72f5a3f473 🚧 Remove the onewire bus from the pin and vec erase 2024-10-10 13:05:03 -04:00
brentru
540b116988 🚧 WIP, dsx - Attempt towards encoding multiple sensor events in one update() looop 2024-10-10 12:21:49 -04:00
brentru
b424c7947b 🚧 WIP, dsx - Add to hardware, updat eloop 2024-10-09 14:23:37 -04:00
brentru
f4184e5962 🚧 WIP, dsx - Implement readF, getters 2024-10-08 16:17:07 -04:00
brentru
312c8f6977 🚧 WIP, dsx - Add read and sensor id funcs 2024-10-08 15:46:40 -04:00
brentru
d207447f06 🚧 WIP, analogio - publish out to the broker 2024-10-08 12:49:05 -04:00
brentru
b8377e5de0 🚧 WIP, dsx - added message 2024-10-08 12:37:23 -04:00
brentru
307fd4336f implement setup for dsx, remove deps that conflict 2024-10-08 10:21:09 -04:00
brentru
e342564dca 🚧 WIP, dsx - Plumbing for ds18x in App, switch to OneWireNG interface 2024-10-07 15:37:41 -04:00
brentru
a9288ccc38 🚧 WIP, dsx - Sketch out ds18x20 classes 2024-10-07 15:17:27 -04:00
brentru
706652fd0a add partitions, use larger parition size 2024-10-04 15:15:30 -04:00
brentru
7f2d550344 🐛 WIP, analogio - Refactor hardware.cpp for raw adc reads, fix underflow bug in func signature mismatch for model 2024-10-04 14:56:52 -04:00
brentru
e30d4e4126 🐛 WIP, analogio - Bug fixes during testing 2024-10-03 15:34:57 -04:00
brentru
549874a2f0 🐛 WIP, analogio - bring in
#635
2024-10-03 12:06:08 -04:00
brentru
067c220e87 🎨 WIP, analogio - Doxygen analogio classes 2024-10-03 11:16:28 -04:00
brentru
6a82e772e9 🚧 WIP, analogio - publish out 2024-10-02 16:00:19 -04:00
brentru
e5d3199e45 🚧 WIP, analogio - refactor encode/publish in controller, refactor model 2024-10-02 15:59:08 -04:00
brentru
fac050e853 🚧 WIP, analogio - Add encoder for a raw analogio event 2024-10-02 15:01:56 -04:00
brentru
e5e2724aac 🎨 WIP, analogio - Encode, publish voltage event 2024-10-02 12:56:21 -04:00
brentru
eb6bf12e26 🚧 WIP, analogio - Read voltage, precalculate scale factor for optimization 2024-10-02 11:33:15 -04:00
brentru
fcd87d19ce 🚧 WIP, analogio - Add deinit, scale reads, update 2024-10-01 16:16:09 -04:00
brentru
4ca038c94d 🚧 WIP, analogio - Fix compiler errors and build pass 2024-10-01 11:58:17 -04:00
brentru
b9f7c126f5 ⬆️ Upgrade protos, 7dd0fe6 2024-10-01 11:40:52 -04:00
brentru
6b93efcd64 ⬆️ Upgrade protobuf to match ee1df09fb542fd9ba27271cfa5aebc75bd9842a3 2024-10-01 11:38:18 -04:00
brentru
49e110db97 🚧 WIP, analogio - Create controller, hardware, model and hooks for AnalogIOAdd msg 2024-10-01 10:44:44 -04:00
brentru
c20e45b2af rm unused model func 2024-09-30 11:25:09 -04:00
brentru
3cc50de409 🚧 WIP, digitalio - refactor naming to match python 2024-09-30 11:20:07 -04:00
brentru
e42e963fbd 🚧 WIP, digitalio - Attach dio remove to b2d cb 2024-09-30 11:08:32 -04:00
brentru
4a2ccac2e6 🚧 WIP, digitalio - Implement remove pin API 2024-09-30 11:07:29 -04:00
brentru
fbaadb97f6 🎨 Doxygen pass complete 2024-09-27 16:19:27 -04:00
brentru
47dcb933d4 🎨 Doxygen sensor model, ws_manager classes 2024-09-27 12:47:27 -04:00
brentru
ce7d5ed0d1 🎨 Add doxygen across new v2 classes 2024-09-27 12:28:40 -04:00
brentru
e513533d8b 🚧 WIP, digitalio - Address TODO for statusled 2024-09-27 10:17:48 -04:00
brentru
624ba3d6b7 🚧 WIP, digitalio - refactoring 2024-09-26 14:20:06 -04:00
brentru
70406f39ca 🚧 WIP, digitalio - Add doxygen comments 2024-09-26 13:02:45 -04:00
brentru
0675abc890 🚧 WIP, digitalio - Refactoring in update() 2024-09-26 12:24:55 -04:00
brentru
fcc6914f9f 🚧 WIP, digitalio - Sends boolean value from timer-based input 2024-09-25 17:01:55 -04:00
brentru
50609f776b 🎨 Improve structure of the FS code 2024-09-25 11:36:37 -04:00
brentru
d8728147c7 🚑️ Fix Filesystem bug in V2 2024-09-25 11:05:55 -04:00
brentru
1b2c10b56d continue fix flash failure 2024-09-24 16:16:30 -04:00
brentru
3093b5085a looking at flash failure 2024-09-24 14:49:06 -04:00
brentru
a3386d3224 🚧 WIP, digitalio - publishing to broker missing value 2024-09-11 16:44:02 -04:00
brentru
5288af0be0 🚧 WIP, digtialio: adhere to period better, fix bug 2024-09-11 16:33:46 -04:00
brentru
434107c2a7 🚧 WIP, digitalio - Refactor out the Update() conditional function calls into new functions 2024-09-11 13:23:06 -04:00
brentru
10a19bf94d 🚧 WIP, digitalio - Add encoder for digital io event to model, encode/publish dio event message, inc. partition sz 2024-09-11 12:28:00 -04:00
brentru
3ac84724b5 🚧 WIP, digitalio: Add Update() service for reading pins 2024-09-10 16:08:19 -04:00
brentru
60fb5f66a0 refactor adddigitalpin() call 2024-09-10 15:08:47 -04:00
brentru
136332919f 🚧 WIP, digitalio - Refactor ConfigurePin, AddDigitalPin 2024-09-10 14:12:49 -04:00
brentru
c29f210592 🚧 WIP, digitalio: Add input, input pullup to ConfigurePin 2024-09-10 13:59:37 -04:00
brentru
1a6fc3debd 🚧 WIP, digitalio - blink demo 2024-09-10 13:30:33 -04:00
brentru
1007802d8e 🚧 WIP, digitalio - Fix linker error, refactor get pin to get pin idx, use only one array of pins instead of 2 2024-09-10 11:11:36 -04:00
brentru
014b2ba1cb 🚧 WIP, digitalio - Implement hardware digital write, update model to zer o out the previous msg 2024-09-09 11:11:17 -04:00
brentru
099efb71eb 🚧 WIP - Begin integrating sensor api 2024-09-09 10:56:02 -04:00
brentru
01f26b6813 🚧 WIP, digitalio - Detect status led pin 2024-09-06 11:26:22 -04:00
brentru
6588c15a08 🎨 Improve structure of code by moving digitalio model to the controller class instead of main app 2024-09-05 16:01:15 -04:00
brentru
9919945a80 ⬆️ Upgrade TinyUSB for enumeration patch 2024-09-05 11:38:52 -04:00
brentru
8292ad2314 🚧 WIP, digitalio - Implement hardware class, add setpinmode for hw 2024-09-04 16:35:26 -04:00
brentru
fedac2dad4 🚧 WIP, DigitalIO - Set max pins of dio controller, no vect.or 2024-09-04 15:09:55 -04:00
brentru
8c5d92c999 🐛 Fix nullptr due to digitaliomodel not being init'd 2024-09-04 15:00:57 -04:00
brentru
b37fb72262 🐛 Fix runV2() not executing by adding run() to ws_manager class and sketch 2024-09-04 13:14:54 -04:00
brentru
3583f0dfa2 🚧 WIP, DigitalIO - Fix linker error, don't create a pb struct within the controller 2024-09-04 13:03:58 -04:00
brentru
3acd2bc6d9 ⬆️ Upgrade compiled pb wrappers 2024-09-03 16:48:03 -04:00
brentru
1534649f92 🚧 WIP, DigitalIO - Build out controller's add pin func. 2024-09-03 16:20:58 -04:00
brentru
d56f8d5b46 🚧 WIP, DigitalIO - Deprecate old digitalio members in Wippersnapper.h 2024-09-03 14:23:37 -04:00
brentru
916d9669b2 🚧 WIP, DigitalIO - Add controller class, pin subclasses 2024-09-03 14:08:05 -04:00
brentru
0667b91e8f 🚧 WIP, DigitalIO - Rough out the pb model 2024-09-03 13:43:56 -04:00
brentru
02765aadd9 🚧 Begin digitalio.proto migration 2024-09-03 12:14:08 -04:00
brentru
08172e201b 🚀 Complete checkin process 2024-09-03 11:54:31 -04:00
brentru
642cc620f0 🎨 Improve structure of the new checkin api and deprecate unused class members 2024-08-30 15:28:06 -04:00
brentru
6018295478 🎨 Remove debug prints 2024-08-30 15:02:28 -04:00
brentru
602261ac29 🚧 WIP - Validate checkin response, configure GPIO classes with parsed values 2024-08-30 11:57:43 -04:00
brentru
aaa5961f07 🚧 WIP - Handle checkin response, refactor handler out of signal decoder cb 2024-08-30 11:39:50 -04:00
brentru
74b2cc1fc6 🚧 WIP - Decode checkin response 2024-08-30 11:11:29 -04:00
brentru
9b67169e56 use extern ws for CheckInModel so its accessable outside the publish func 2024-08-30 09:49:07 -04:00
brentru
3fcaf0efdb Add ws_helper_esp.h and use new ESP-IDF reset reason code 2024-08-29 14:40:12 -04:00
brentru
5d11057b9f 🗑️ Deprecate old signal callbacks, analog/digital callbacks 2024-08-29 14:05:42 -04:00
brentru
f366a43cc6 🗑️ Deprecate I2C code within app 2024-08-29 12:04:12 -04:00
brentru
c06ed448e0 🗑️ Deprecate callbacks for servo, pwm, dsx 2024-08-29 11:38:01 -04:00
brentru
c754eee5b0 🗑️ Deprecate callbacks for pixels, uart 2024-08-29 11:35:38 -04:00
brentru
dd79c67bbd Add callback for decoding a BrokerToDevice signal, auto-decoder 2024-08-27 15:17:38 -04:00
brentru
77e49e414c 🎨 Add getter/setters, parser to encapsulate checkinresponse variables in a better way 2024-08-27 14:13:59 -04:00
brentru
5d7ad71941 🎨 Improve publishSignal to reduce overhead 2024-08-27 13:43:25 -04:00
brentru
5db8dcbeb1 🎨 Improved EncodeCheckinRequest by encoding prior to publishing to get the expected sized 2024-08-27 13:35:37 -04:00
brentru
d2cd420a29 🐛 Fix topic names to include / at end for autoresponder expected topic 2024-08-27 12:14:26 -04:00
brentru
9a888226f4 🚀 CheckinRequest message is publishing across the DeviceToBroker topic 2024-08-26 16:58:15 -04:00
brentru
f1cf4be286 ♻️ Refactor out v1 registration code from app 2024-08-22 16:50:45 -04:00
brentru
84c69cb8c4 🎨 Implement publish call for checkin process 2024-08-22 16:35:52 -04:00
brentru
0f57639a66 🎨 Implement high-level publish call for d2b signal messages 2024-08-22 14:22:49 -04:00
brentru
2aa532b543 🎨 Start implementing new checkin process
New checkin model class added along with functions within .cpp to exec. it
2024-08-22 13:46:40 -04:00
brentru
5f6ecaaf83 ⬆️ Update protobufs
Use latest build artifacts
2024-08-21 15:50:50 -04:00
brentru
2c4c58f15d 🦺 Add hooks for error/throttle callbacks 2024-08-20 17:20:01 -04:00
brentru
f663d28799 🦺 Add v2 api folder, files generated locally 2024-08-20 16:42:44 -04:00
brentru
1c8ffa0bc7 🐛 Fixed incorrect malloc check within generatewstopicsv2() 2024-08-20 13:34:03 -04:00
brentru
2bafd29229 fix generateDeviceUIDV2 failure and crash 2024-08-20 12:59:16 -04:00
brentru
f65ea11fa5 ♻️ Move refactored topic generation from Wippersnapper class to Wippersnapper_V2 class 2024-08-19 17:38:25 -04:00
brentru
e5850a4676 Merge branch 'switch-runtimes' into migrate-api-v2 2024-08-19 16:45:49 -04:00
brentru
a96324588f pulling from json now 2024-08-19 16:41:15 -04:00
brentru
e9427cb51a break out fs to v2 class, attempting to pull all info from json, not working fully yet 2024-08-19 14:43:51 -04:00
brentru
5388152c57 set ssid and pass 2024-08-19 11:41:43 -04:00
brentru
310b3e5cb7 get the mac 2024-08-16 16:25:11 -04:00
brentru
abc83150ec bring in noota partition scheme, 47.2% of flash space on ESP32-S2 2024-08-16 16:02:35 -04:00
brentru
6d71ba072b connects to wifi and mqtt using v1, not v2 2024-08-16 15:13:15 -04:00
brentru
a12ccc9d45 bring in the Wippersnapper_registration methods 2024-08-16 13:03:49 -04:00
brentru
67600ded1e not compiling, add esp32_v2.h but conflict with registration class members 2024-08-16 12:54:07 -04:00
brentru
732a0a32e4 provisioning v1 working 2024-08-16 11:07:32 -04:00
brentru
e18801120b check api version just a basic POC 2024-08-15 16:09:45 -04:00
brentru
47a8642388 refactor v2, no collisions in the namespace or linker 2024-08-15 15:14:14 -04:00
brentru
5667ecc83c Implement API check when pin tied hi 2024-08-15 11:08:41 -04:00
brentru
035446eb34 Refactor out macros, helper topics, build v2 class, init manager class for factory 2024-08-14 17:03:07 -04:00
brentru
cd8d7dcc61 refactor out shared statuses into helper_status.h header 2024-08-14 16:34:24 -04:00
brentru
23c42bb1af Refactor generateDeviceUID() 2024-08-13 16:03:10 -04:00
brentru
f2c89d4bf2 Refactor generateWSTopics() 2 2024-08-13 15:52:12 -04:00
brentru
65d864aefa Refactor generateWSTopics() 2024-08-13 15:33:02 -04:00
brentru
43282c8148 rip off beta tag 2024-08-13 14:34:53 -04:00
379 changed files with 122865 additions and 19200 deletions

View file

@ -1,16 +1,13 @@
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2023
# SPDX-FileCopyrightText: Brent Rubell for Adafruit Industries, 2023-2025
#
# SPDX-License-Identifier: MIT
name: WipperSnapper Build CI
on:
workflow_dispatch:
inputs:
board:
description: 'Build ONLY this board (must match a matrix entry exactly, or leave empty for all)'
required: false
default: ''
pull_request:
branches-ignore:
- 'offline-mode'
workflow_call:
secrets:
GH_REPO_TOKEN:
@ -23,52 +20,19 @@ jobs:
strategy:
fail-fast: false
matrix:
arduino-platform:
[
"feather_esp32s2",
"feather_esp32s2_reverse_tft",
"feather_esp32s2_tft",
"funhouse_noota",
"magtag",
"metroesp32s2",
"qtpy_esp32s2",
"esp32s3_devkitc_1_n8",
"feather_esp32s3_4mbflash_2mbpsram",
"feather_esp32s3_reverse_tft",
"feather_esp32s3_tft",
"qtpy_esp32s3_n4r2",
"xiao_esp32s3",
]
arduino-platform: ["funhouse_noota"]
include:
- offset: "0x1000"
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
WS_VERSION="unknown"
if git describe --dirty --tags >/dev/null 2>&1; then
WS_VERSION=$(git describe --dirty --tags)
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -83,8 +47,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet --branch 2.2.54 https://github.com/adafruit/SdFat.git /home/runner/Arduino/libraries/SdFat
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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
@ -143,7 +106,6 @@ jobs:
mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.elf wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.elf
mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.map wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.map
mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.bootloader.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bootloader.bin
mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.merged.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.merged_auto.bin
mv examples/Wippersnapper_demo/build/*/Wippersnapper_demo.ino.partitions.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.partitions.bin
- name: Get Board Flash Parameters
id: get_board_json
@ -159,58 +121,6 @@ jobs:
echo $content
echo EOF
} >> "$GITHUB_OUTPUT"
- name: fetch tinyuf2 combined.bin
run: |
BOARD_NAME="${{fromJson(steps.get_board_json.outputs.boardJson).bootloaderBoardName}}"
set +e
for attempt in 1 2 3; do
echo "Attempt $attempt: Fetching tinyuf2 release info for board $BOARD_NAME"
API_RESPONSE=$(curl --silent --fail https://api.github.com/repos/adafruit/tinyuf2/releases/latest)
if [ $? -ne 0 ]; then
echo "Attempt $attempt: curl failed to fetch release info."
if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi
fi
DOWNLOAD_URL=$(echo "$API_RESPONSE" | jq -r '.assets[] | select(.browser_download_url | contains("tinyuf2-'$BOARD_NAME'-") and endswith(".zip")) | .browser_download_url // empty'); JQ_EXIT=$?
if [ $JQ_EXIT -ne 0 ] || [ -z "$DOWNLOAD_URL" ]; then
echo "Attempt $attempt: jq failed or no matching zip found."
if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi
fi
echo "Attempt $attempt: Downloading $DOWNLOAD_URL"
wget "$DOWNLOAD_URL" -O tinyuf2.zip
if [ $? -eq 0 ]; then
unzip -o tinyuf2.zip -d .
if [ $? -ne 0 ]; then
echo "Attempt $attempt: unzip failed"
if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); continue; fi
fi
break
else
echo "Attempt $attempt: wget failed to download $DOWNLOAD_URL"
if [ "$attempt" -eq 3 ]; then exit 1; else sleep $((60 + RANDOM % 40)); fi
fi
done
set -e
- name: move partition and bootloader files for tinyuf2 (to match flash_args)
run: |
# Copy files where they're expected to make flash_args happy
mkdir bootloader
cp bootloader.bin bootloader/bootloader.bin
mkdir partition_table
cp partition-table.bin partition_table/partition-table.bin
- name: Create new_flash_args file from flash_args with added app bin + output file
run: |
# Create new_flash_args with esptool parameters first and output file
echo "--flash-mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}}" > new_flash_args
echo "--flash-freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}}" >> new_flash_args
echo "--flash-size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}}" >> new_flash_args
echo "-o wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.combined.bin" >> new_flash_args
# Append flash_args content to new_flash_args, skipping the first line
tail -n +2 flash_args >> new_flash_args
# Append main app to flash_args file
echo "0x10000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bin" >> new_flash_args
- name: Check boot_app0 file existence (esp32sx built from core, not-source)
id: check_files
uses: andstor/file-existence-action@v3
@ -226,17 +136,23 @@ jobs:
ls /home/runner/Arduino/hardware/espressif/esp32/tools/partitions
- name: boot_app0 file from arduino-cli core
if: steps.check_files.outputs.files_exists == 'true'
run: cp /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
run: mv /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
- name: boot_app0 file from esp32 source bsp
if: steps.check_files.outputs.files_exists == 'false'
run: cp /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
- name: Copy boot_app0 file to ota_data_initial.bin (overwrite tinyuf2 boot preference)
run: cp wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin ota_data_initial.bin
- name: Create combined binary using Esptool merge-bin
run: mv /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
- name: Create combined binary using Esptool merge_bin
run: |
echo ${{ steps.get_board_json.outputs.boardJson }}
echo ${{ fromJson(steps.get_board_json.outputs.boardJson) }}
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge-bin @new_flash_args
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge_bin \
--flash_mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \
--flash_freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \
--flash_size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \
-o wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.combined.bin \
${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bootloader.bin \
0x8000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.partitions.bin \
0xe000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin \
0x10000 wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.bin
- name: Zip build artifacts
run: |
zip -r wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.*
@ -264,36 +180,30 @@ jobs:
matrix:
arduino-platform:
[
"magtag",
"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:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -303,7 +213,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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
@ -376,48 +286,27 @@ jobs:
[
"wippersnapper_feather_esp32",
"qtpy_esp32",
"sparklemotionmini_esp32",
"sparklemotionstick_esp32",
"feather_esp32_v2",
"itsybitsy_esp32",
"dfrobot_beetle_esp32c3",
"wippersnapper_qtpy_esp32c3",
"wippersnapper_feather_esp32c6"
]
include:
- offset: "0x1000"
- offset: "0x0"
arduino-platform: "dfrobot_beetle_esp32c3"
- offset: "0x0"
arduino-platform: "wippersnapper_qtpy_esp32c3"
- offset: "0x0"
arduino-platform: "wippersnapper_feather_esp32c6"
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -432,7 +321,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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
- name: Download stable Nanopb
id: download-nanopb
@ -465,7 +354,7 @@ jobs:
mv nanopb/pb.h src/nanopb/nanopb.pb.h
- name: Install Dependencies
run: |
pip install esptool
pip install esptool==4.6
- name: build ESP32 platforms
run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
- name: Check artifacts
@ -503,14 +392,14 @@ jobs:
echo $content
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Create combined binary using Esptool merge-bin
- name: Create combined binary using Esptool merge_bin
run: |
echo ${{ steps.get_board_json.outputs.boardJson }}
echo ${{ fromJson(steps.get_board_json.outputs.boardJson) }}
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge-bin \
--flash-mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \
--flash-freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \
--flash-size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge_bin \
--flash_mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \
--flash_freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \
--flash_size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \
-o wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.combined.bin \
${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin \
0x8000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin \
@ -539,31 +428,15 @@ jobs:
"metro_m4_airliftlite_tinyusb",
]
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -575,7 +448,7 @@ jobs:
- name: Install extra Arduino libraries
run: |
git clone --quiet https://github.com/adafruit/WiFiNINA.git /home/runner/Arduino/libraries/WiFiNINA
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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/PaulStoffregen/OneWire.git /home/runner/Arduino/libraries/OneWire
git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino
- name: Download stable Nanopb
@ -627,33 +500,17 @@ jobs:
strategy:
fail-fast: false
matrix:
arduino-platform: ["picow_rp2040_tinyusb", "picow_rp2350_tinyusb", "fruit_jam_tinyusb"]
arduino-platform: ["picow_rp2040_tinyusb", "picow_rp2350_tinyusb"]
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -666,6 +523,7 @@ jobs:
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/brentru/Adafruit_SPIFlash.git /home/runner/Arduino/libraries/Adafruit_SPIFlash
git clone --quiet https://github.com/adafruit/Adafruit_TinyUSB_Arduino /home/runner/Arduino/libraries/Adafruit_TinyUSB_Arduino
- name: Download stable Nanopb
id: download-nanopb
@ -708,6 +566,69 @@ jobs:
path: |
wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.uf2
# NOTE: This does NOT release artifacts, it only builds
build-samd-non-fs:
name: 🏗SAMD🚫⧾🔱
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arduino-platform: ["mkrwifi1010", "nano_33_iot"]
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/arduino-libraries/WiFiNINA.git /home/runner/Arduino/libraries/WiFiNINA
git clone --quiet https://github.com/arduino-libraries/Servo.git /home/runner/Arduino/libraries/Servo
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/PaulStoffregen/OneWire.git /home/runner/Arduino/libraries/OneWire
- 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 SAMD (no-FS) platforms
run: python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
build-esp8266:
name: 🏗ESP8266
runs-on: ubuntu-latest
@ -716,31 +637,15 @@ jobs:
matrix:
arduino-platform: ["feather_esp8266"]
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -750,7 +655,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino library
run: |
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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/PaulStoffregen/OneWire.git /home/runner/Arduino/libraries/OneWire
- name: Download stable Nanopb
id: download-nanopb
@ -810,7 +715,6 @@ jobs:
matrix:
arduino-platform:
[
"esp32s3_devkitc_1_n8_debug",
"feather_esp32s2_debug",
"feather_esp32s2_tft_debug",
"feather_esp32s3_debug",
@ -821,31 +725,15 @@ jobs:
"metro_esp32s3_debug",
]
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -855,7 +743,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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
@ -933,31 +821,15 @@ jobs:
- offset: "0x0"
arduino-platform: "wippersnapper_feather_esp32c6_debug"
steps:
- name: "skip if unwanted"
continue-on-error: true
if: |
github.event_name == 'workflow_dispatch' &&
github.event.inputs.board != '' &&
matrix.arduino-platform != github.event.inputs.board
run: |
echo "don't build this one!"; exit 1
- uses: actions/setup-python@v5
with:
python-version: "3.x"
- uses: actions/checkout@v4
- name: Get WipperSnapper version
run: |
git remote add adafruit https://github.com/adafruit/Adafruit_Wippersnapper_Arduino.git || true
git fetch --prune --unshallow --all --tags
if git describe --dirty --tags >/dev/null 2>&1; then
git fetch --prune --unshallow --tags
git describe --dirty --tags
echo >>$GITHUB_ENV WS_VERSION=$(git describe --dirty --tags)
else
# Fallback for forks: 1.0.0-{owner}-{short-sha}
REPO_OWNER=$(echo $GITHUB_REPOSITORY | cut -d'/' -f1)
SHORT_SHA=$(git rev-parse --short HEAD)
echo >>$GITHUB_ENV WS_VERSION="1.0.0-${REPO_OWNER}-${SHORT_SHA}"
fi
echo "WS_VERSION: $WS_VERSION"
- uses: actions/checkout@v4
with:
repository: adafruit/ci-arduino
@ -972,7 +844,7 @@ jobs:
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
run: |
git clone --quiet --branch v4.0.3 https://github.com/milesburton/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
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
- name: Download stable Nanopb
id: download-nanopb
@ -1045,14 +917,14 @@ jobs:
echo $content
echo EOF
} >> "$GITHUB_OUTPUT"
- name: Create combined binary using Esptool merge-bin
- name: Create combined binary using Esptool merge_bin
run: |
echo ${{ steps.get_board_json.outputs.boardJson }}
echo ${{ fromJson(steps.get_board_json.outputs.boardJson) }}
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge-bin \
--flash-mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \
--flash-freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \
--flash-size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge_bin \
--flash_mode ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} \
--flash_freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq}} \
--flash_size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize}} \
-o wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.combined.bin \
${{ matrix.offset }} wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.bootloader.bin \
0x8000 wippersnapper.${{ matrix.arduino-platform }}.littlefs.${{ env.WS_VERSION }}.partitions.bin \
@ -1071,7 +943,7 @@ jobs:
merge-job-build-files:
name: Merge Artifacts for build-files
runs-on: ubuntu-latest
needs: [build-esp32sx-esptool, build-esp32sx, build-esp32, build-esp8266, build-samd, build-rp2040]
needs: [build-esp32sx-esptool, build-esp32sx, build-esp32, build-esp8266, build-samd, build-rp2040, build-samd-non-fs]
steps:
- name: Merge Artifacts from Builds
@ -1103,6 +975,7 @@ jobs:
build-esp32,
build-esp32sx,
build-esp8266,
build-samd-non-fs,
build-rp2040,
]
steps:

View file

@ -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
@ -12,16 +12,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download build artifacts from build-platform steps
uses: actions/download-artifact@v4
uses: actions/download-artifact@v2
with:
path: .
name: build-files
- name: List Files
run: ls
- name: Upload Assets to the GitHub Release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
build-files/wippersnapper.*.uf2
build-files/wippersnapper.*.bin
build-files/wippersnapper.*.zip
wippersnapper.*.uf2
wippersnapper.*.bin
wippersnapper.*.zip

View file

@ -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
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

287
.github/workflows/release-offline.yml vendored Normal file
View file

@ -0,0 +1,287 @@
# 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-*
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
- 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

23
.gitignore vendored
View file

@ -39,17 +39,28 @@ 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
# 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/
# Misc. Data
tests/
venv/
# Test results
report.xml
# VSCode settings
.vscode/settings.json

22
.vscode/settings.json vendored
View file

@ -1,11 +1,23 @@
{
"files.associations": {
"limits": "c",
"type_traits": "c"
"type_traits": "c",
"vector": "cpp",
"array": "cpp",
"deque": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"string_view": "cpp",
"initializer_list": "cpp",
"span": "cpp",
"*.tcc": "cpp",
"list": "cpp",
"unordered_set": "cpp",
"format": "cpp",
"text_encoding": "cpp",
"regex": "cpp"
},
"C_Cpp.dimInactiveRegions": true,
"C_Cpp.dimInactiveRegions": false,
"dotnet.defaultSolution": "disable",
"cmake.configureOnOpen": false,
"C_Cpp.clang_format_fallbackStyle": "Google",
"C_Cpp.clang_format_style": "file"
"cmake.configureOnOpen": false
}

751
Doxyfile

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2020-2021 Adafruit Industries
Copyright (c) 2020-2024 Adafruit Industries
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View file

@ -5,25 +5,26 @@
# Adafruit WipperSnapper
![Build CI](https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/actions/workflows/build-clang-doxy.yml/badge.svg)[![Documentation](https://github.com/adafruit/ci-arduino/blob/master/assets/doxygen_badge.svg)](http://adafruit.github.io/Adafruit_Wippersnapper_Arduino/html/index.html)
Adafruit.io WipperSnapper is a firmware designed to turn any Wi-Fi-capable board into an Internet-of-Things (IoT) device. No programming is required!
Adafruit.io WipperSnapper is a firmware designed to turn any Wi-Fi capable board into an Internet-of-Things (IoT) device. No code required!
WipperSnapper works with multiple microcontroller architectures such as ESP8266, ESP32, ESP32-Sx, ESP32-Cx, RP2040, RP2350, and ATSAMD51.
WipperSnapper works with [multiple microcontroller architectures](https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/?tab=readme-ov-file#supported-platforms) and development boards. It is designed to be easily extensible to support new sensors, inputs, and outputs.
You will need a **free** [Adafruit IO](https://io.adafruit.com) account to use WipperSnapper.
**NOTE: WipperSnapper firmware is in beta** and is actively being developed. Please [report bugs via the issues page on this repository](https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=).
A **free** [Adafruit IO](https://io.adafruit.com) account is required to use WipperSnapper.
# Get Started
[Learn how to install and use WipperSnapper by following this guide on the Adafruit Learning System - QuickStart: Adafruit IO WipperSnapper](https://learn.adafruit.com/quickstart-adafruit-io-wippersnapper).
## Get WipperSnapper
Pre-compiled binaries and UF2 files for supported hardware are provided on the [releases page](https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/releases) of this repository.
## Supported Platforms
|Platform| MCU(s) |
|--|--|
|[ESP32-x](https://github.com/espressif/arduino-esp32)| ESP32, ESP32-Sx, ESP32-C3 |
|[ESP32-x](https://github.com/espressif/arduino-esp32)| ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6 |
|[ESP8266](https://github.com/esp8266/Arduino)| ESP8266 |
|[RP2040](https://github.com/earlephilhower/arduino-pico)| RP2040 MCU w/WiFi (i.e: Pico W) |
|[RP2350](https://github.com/earlephilhower/arduino-pico)| RP2350 MCU w/WiFi (i.e: Pico 2W) |
|[ATSAMD](https://github.com/adafruit/ArduinoCore-samd/)| SAMD51 MCU w/separate WiFi Co-Processor (i.e: Adafruit "AirLift")|
## Contributing to Adafruit.io and WipperSnapper

1
config.json Executable file
View file

@ -0,0 +1 @@
{"exportVersion": "1.0.0", "exportedBy": "tester", "exportedAt": "2024-10-28T18:58:23.976Z", "exportedFromDevice": {"board": "metroesp32s3", "firmwareVersion": "1.0.0-beta.93", "referenceVoltage": 2.6, "totalGPIOPins": 11, "totalAnalogPins": 6, "rtc": "DS3231", "statusLEDBrightness": 0.1}, "components": [{"componentAPI": "analogio", "name": "Analog Pin", "pinName": "A0", "type": "analog_pin", "mode": "ANALOG", "direction": "INPUT", "sampleMode": "TIMER", "analogReadMode": "PIN_VALUE", "period": 30}, {"componentAPI": "ds18x20", "name": "DS18B20: Temperature Sensor (\u00b0F)", "sensorTypeCount": 2, "sensorType1": "object-temp-fahrenheit", "sensorType2": "object-temp", "pinName": "D4", "sensorResolution": 12, "period": 30}], "checksum": 236}

1
data.json Normal file
View file

@ -0,0 +1 @@
{"exportVersion": "1.0.0", "exportedBy": "wokwi", "exportedAt": "2024-10-28T18:58:23.976Z", "exportedFromDevice": {"board": "metroesp32s3", "firmwareVersion": "1.0.0-beta.93", "referenceVoltage": 2.6, "totalGPIOPins": 11, "totalAnalogPins": 6}, "components": [{"componentAPI": "digitalio", "name": "Button (D4)", "pinName": "D4", "type": "push_button", "mode": "DIGITAL", "sampleMode": "TIMER", "direction": "INPUT", "period": 5, "pull": "UP", "isPin": true}]}

BIN
examples/Wippersnapper_NoFS/.DS_Store vendored Normal file

Binary file not shown.

View file

@ -0,0 +1,2 @@

View file

@ -0,0 +1,2 @@

View file

@ -0,0 +1,2 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,2 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1,45 @@
// Adafruit IO WipperSnapper Beta
//
//
// NOTE: This software is a BETA release and in active development.
// Please report bugs or errors to
// https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues
//
// This sketch is for devices which lack USB-MSD or LittleFS support such
// as the Arduino MKR WiFi 1010, Arduino Nano 33 IoT.
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Brent Rubell for Adafruit Industries, 2021
//
// All text above must be included in any redistribution.
#include "Wippersnapper_Networking.h"
/************************ Adafruit IO Config *******************************/
// Visit io.adafruit.com if you need to create an account,
// or if you need your Adafruit IO key.
#define IO_USERNAME "YOUR_AIO_USERNAME"
#define IO_KEY "YOUR_AIO_KEY"
/**************************** WiFi Config ***********************************/
#define WIFI_SSID "YOUR_WIFI_SSID"
#define WIFI_PASS "YOUR_WIFI_PASSWORD"
#include "Wippersnapper_Networking.h"
ws_adapter_wifi wipper(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
void setup() {
// Provisioning must occur prior to serial init.
wipper.provision();
Serial.begin(115200);
// while (!Serial) delay(10);
wipper.connect();
}
void loop() { wipper.run(); }

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -0,0 +1 @@

View file

@ -1,33 +1,22 @@
// Adafruit IO WipperSnapper Beta
//
//
// NOTE: This software is a BETA release and in active development.
// Please report bugs or errors to https://github.com/adafruit/Adafruit_Wippersnapper_Arduino/issues
//
// Adafruit IO WipperSnapper
//
// Adafruit invests time and resources providing this open source code.
// Please support Adafruit and open source hardware by purchasing
// products from Adafruit!
//
// Brent Rubell for Adafruit Industries, 2021-2022
// Brent Rubell for Adafruit Industries, 2020-2025
//
// All text above must be included in any redistribution.
#include "Wippersnapper_Networking.h"
Wippersnapper_WiFi wipper;
#include "ws_adapters.h"
ws_adapter_wifi wipper;
// Enable debug output for beta builds
#define WS_DEBUG
#define WS_DEBUG // Enable debug output!
void setup() {
// Provisioning must occur prior to serial init.
wipper.provision();
Serial.begin(115200);
//while (!Serial) delay(10);
wipper.provision();
wipper.connect();
}
void loop() {

Some files were not shown because too many files have changed in this diff Show more