Skip to content

Offline mode new boards+components. #788

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

Merged
Merged
Show file tree
Hide file tree
Changes from 33 commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
f4c149b
Library updates
tyeth Aug 8, 2025
28661b6
Online build changes - esptool/web-native-usb targets
tyeth Aug 8, 2025
0e7a9db
Offline build task - web-native-usb + boards ref
tyeth Aug 8, 2025
68c597a
New board targets (S3 XIAO/Espressif DevkitC)
tyeth Aug 8, 2025
d6d0f7f
Wokwi build defines for platformIO sketch
tyeth Aug 8, 2025
5546bd0
Add .clang-format file
tyeth Aug 8, 2025
33b202e
Add OMRON D6T-1A
tyeth Aug 11, 2025
393e70a
remove commented out milesburton library for v2
tyeth Aug 11, 2025
a9ae906
Add global skip option for auto config [exportedFromDevice.autoConfig]
tyeth Aug 12, 2025
bf1498f
Add PCF8563 RTC for XIAO expansion board
tyeth Aug 12, 2025
544b78c
WIP: autoConfig getting written as null to config.json
tyeth Aug 12, 2025
fe43d5a
fix(autoconfig): stop writing config if global auto off.
tyeth Aug 12, 2025
871ce8e
fix(autoconfig): don't run against 0x51 (PCF8563)
tyeth Aug 12, 2025
cae5157
chore(gitignore): cleanup cpp sketch asset
tyeth Aug 12, 2025
4b70a62
fix(clang): add clang format file to root, and run against PR
tyeth Aug 12, 2025
00adc77
clang format
tyeth Aug 12, 2025
0c34fe5
Refactor INA260 and add INA237/238
tyeth Aug 13, 2025
38af67b
Add INA228, set INA2xx shunt/avg/conv.times
tyeth Aug 13, 2025
9615ffb
clang-format
tyeth Aug 13, 2025
ed15084
clang-format
tyeth Aug 13, 2025
8fdba69
fix(INA260): millivolts returned by readBusVoltage
tyeth Aug 13, 2025
f735ef0
clang format
tyeth Aug 13, 2025
8cd03e5
Merge pull request #6 from tyeth/offline-mode-INA-refactor-from-flat0808
tyeth Aug 13, 2025
940d6c6
fix(rp2): include <functional> in i2c drvBase.h
tyeth Aug 13, 2025
5ddf1e2
Add esp32s3 devkitc-1 N8, and XIAO S3 sense to build targets
tyeth Aug 13, 2025
4e15adb
Stop failing if no esptool section for board
tyeth Aug 13, 2025
626e6f9
Add defaults for remaining fromJson esptool bits
tyeth Aug 13, 2025
50e8153
Test Skip and Generate files for Xiao + Espressif Devkit S3
tyeth Aug 13, 2025
890a87b
Support no default CS pin for espressif S3 devkit
tyeth Aug 13, 2025
b04f17c
fix(hdc302x): Add strcmp for hdc302x + header
tyeth Aug 14, 2025
355a444
Swap boards to offline-mode branch
tyeth Aug 14, 2025
3090f58
Drop arch specific SD CS pins
tyeth Aug 14, 2025
e12df19
Merge branch 'offline-mode-flattened-new-2025-08-08' of https://githu…
tyeth Aug 14, 2025
346c4c0
Address PR feedback from @brentru
tyeth Aug 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 79 additions & 25 deletions .github/workflows/build-clang-doxy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,32 @@ jobs:
strategy:
fail-fast: false
matrix:
arduino-platform: ["funhouse_noota"]
include:
- offset: "0x1000"
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",
]

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"
Expand All @@ -48,6 +70,7 @@ jobs:
- name: Install extra Arduino libraries
run: |
git clone --quiet https://github.com/pstolarz/Arduino-Temperature-Control-Library.git /home/runner/Arduino/libraries/Arduino-Temperature-Control-Library
git clone --quiet --branch 2.2.54 https://github.com/adafruit/SdFat.git /home/runner/Arduino/libraries/SdFat
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
Expand Down Expand Up @@ -106,6 +129,7 @@ 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
Expand All @@ -121,6 +145,52 @@ jobs:
echo $content
echo EOF
} >> "$GITHUB_OUTPUT"
- name: fetch tinyuf2 combined.bin
run: |
BOARD_NAME="${{fromJson(steps.get_board_json.outputs.boardJson).bootloaderBoardName}}"
for attempt in 1 2; 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 2 ]; then exit 1; else sleep 2; 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')
if [ -z "$DOWNLOAD_URL" ]; then
echo "Attempt $attempt: No matching tinyuf2 zip found for board $BOARD_NAME."
if [ "$attempt" -eq 2 ]; then exit 1; else sleep 2; continue; fi
fi
echo "Attempt $attempt: Downloading $DOWNLOAD_URL"
wget "$DOWNLOAD_URL" -O tinyuf2.zip
if [ $? -eq 0 ]; then
unzip -o tinyuf2.zip -d .
break
else
echo "Attempt $attempt: wget failed to download $DOWNLOAD_URL"
if [ "$attempt" -eq 2 ]; then exit 1; else sleep 2; fi
fi
done
- 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
Expand All @@ -136,23 +206,17 @@ 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: mv /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.boot_app0.bin
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
- name: boot_app0 file from esp32 source bsp
if: steps.check_files.outputs.files_exists == 'false'
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: 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: |
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}} \
-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
python3 -m esptool --chip ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.chip}} merge-bin @new_flash_args
- name: Zip build artifacts
run: |
zip -r wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.fatfs.${{ env.WS_VERSION }}.*
Expand Down Expand Up @@ -180,19 +244,9 @@ 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:
- uses: actions/setup-python@v5
Expand Down
142 changes: 140 additions & 2 deletions .github/workflows/release-offline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ jobs:
"qtpy_esp32s2",
"feather_esp32s3_reverse_tft",
"qtpy_esp32s3_n4r2",
"esp32s3_devkitc_1_n8",
"xiao_esp32s3",
]
steps:
- uses: actions/setup-python@v5
Expand All @@ -112,6 +114,12 @@ jobs:
repository: adafruit/ci-arduino
ref: ci-wippersnapper
path: ci
- name: Checkout Board Definitions
uses: actions/checkout@v4
with:
repository: adafruit/Wippersnapper_Boards
path: ws-boards
ref: offline-mode
- name: Install CI-Arduino
run: bash ci/actions_install.sh
- name: Install extra Arduino libraries
Expand Down Expand Up @@ -161,23 +169,153 @@ jobs:
- 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: Install Dependencies (esptool)
run: |
pip3 install esptool
- name: Build for ESP32-SX
run: |
python3 ci/build_platform.py ${{ matrix.arduino-platform }} --build_timeout 48000
- name: list files (tree)
run: |
tree
tree -L 7 -h
- 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
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.elf wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.elf
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.map wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.map
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.bootloader.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.bootloader.bin
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.merged.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.merged_auto.bin
mv examples/*/build/*/Wippersnapper_demo_offline_netiface.ino.partitions.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.partitions.bin
- name: Get Board Flash Parameters
id: get_board_json
run: |
board_name=${{ matrix.arduino-platform }}
# Remove '_noota' suffix if present
board_name=${board_name%_noota}
# Remove 'wippersnapper_' prefix if present
board_name=${board_name#wippersnapper_}
# check folder name exists, otherwise do replace of underscore with dash, or blank
if [ ! -d "ws-boards/boards/${board_name}" ]; then
echo "Board definition folder ws-boards/boards/${board_name} does not exist, checking for alternative names."
if [ -d "ws-boards/boards/${board_name//_/-}" ]; then
board_name=${board_name//_/-}
echo "Found alternative board definition folder ws-boards/boards/${board_name//_/-}."
# Remove all underscores if still not found
elif [ -d "ws-boards/boards/${board_name//_}" ]; then
board_name=${board_name//_}
echo "Found alternative board definition folder ws-boards/boards/${board_name//_}."
else
echo "Error: Board definition folder ws-boards/boards/${board_name} does not exist."
exit 1
fi
fi
content=$(cat ws-boards/boards/${board_name}/definition.json)
{
echo 'boardJson<<EOF'
echo $content
echo EOF
} >> "$GITHUB_OUTPUT"
- name: fetch tinyuf2 combined.bin
id: get_tinyuf2
continue-on-error: true
run: |
# check ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}} is not empty
if [ -z "${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashMode}}" ]; then
echo "Error: esptool.flashMode is not set in board definition, using KEEP for all settings."
fi
BOARD_NAME="${{fromJson(steps.get_board_json.outputs.boardJson).bootloaderBoardName || matrix.arduino-platform}}"
for attempt in 1 2; 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 2 ]; then exit 1; else sleep 2; 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')
if [ -z "$DOWNLOAD_URL" ]; then
echo "Attempt $attempt: No matching tinyuf2 zip found for board $BOARD_NAME."
if [ "$attempt" -eq 2 ]; then exit 1; else sleep 2; continue; fi
fi
echo "Attempt $attempt: Downloading $DOWNLOAD_URL"
wget "$DOWNLOAD_URL" -O tinyuf2.zip
if [ $? -eq 0 ]; then
unzip -o tinyuf2.zip -d .
break
else
echo "Attempt $attempt: wget failed to download $DOWNLOAD_URL"
if [ "$attempt" -eq 2 ]; then exit 1; else sleep 2; fi
fi
done
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
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

- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
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 || 'keep'}}" > new_flash_args
echo "--flash-freq ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashFreq || 'keep'}}" >> new_flash_args
echo "--flash-size ${{fromJson(steps.get_board_json.outputs.boardJson).esptool.flashSize || 'keep'}}" >> new_flash_args
echo "-o wippersnapper.${{ matrix.arduino-platform }}.${{ 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 }}.${{ env.WS_VERSION }}.bin" >> new_flash_args
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
name: Check boot_app0 file existence (esp32sx built from core, not-source)
id: check_files
uses: andstor/file-existence-action@v3
with:
files: "/home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin"
- if: ${{ steps.get_tinyuf2.outcome == 'success' && steps.check_files.outputs.files_exists == 'true' }}
name: list arduino esp32 core files
run: |
ls /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions
- if: ${{ steps.get_tinyuf2.outcome == 'success' && steps.check_files.outputs.files_exists == 'false' }}
name: list arduino esp32 bsp core files
run: |
ls /home/runner/Arduino/hardware/espressif/esp32/tools/partitions
- if: ${{ steps.get_tinyuf2.outcome == 'success' && steps.check_files.outputs.files_exists == 'true' }}
name: boot_app0 file from arduino-cli core
run: cp /home/runner/.arduino15/packages/esp32/hardware/esp32/*/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.boot_app0.bin
- if: ${{ steps.get_tinyuf2.outcome == 'success' && steps.check_files.outputs.files_exists == 'false' }}
name: boot_app0 file from esp32 source bsp
run: cp /home/runner/Arduino/hardware/espressif/esp32/tools/partitions/boot_app0.bin wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.boot_app0.bin
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
name: Copy boot_app0 file to ota_data_initial.bin (overwrite tinyuf2 boot preference)
run: cp wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.boot_app0.bin ota_data_initial.bin
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
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 || fromJson(steps.get_board_json.outputs.boardJson).mcuName}} merge-bin @new_flash_args
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
name: Zip build artifacts
run: |
zip -r wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.zip wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.*
- if: ${{ steps.get_tinyuf2.outcome == 'success' }}
name: Upload build artifacts zip
uses: actions/upload-artifact@v4
with:
name: build-files-${{ matrix.arduino-platform }}-zip
path: |
wippersnapper.${{ matrix.arduino-platform }}.${{ env.WS_VERSION }}.zip
- 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
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ html/*
src/.vscode/settings.json
.DS_STORE
examples/Wippersnapper_demo/build/
src/Wippersnapper_demo.ino.cpp
build_output_*.txt

# Virtual environment directories
.venv/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions examples/Wippersnapper_NoFS/.xiao_esp32s3.test.skip
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions examples/Wippersnapper_demo/.esp32s3_devkitc_1_n8.generate
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions examples/Wippersnapper_demo/.xiao_esp32s3.generate
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

1 change: 1 addition & 0 deletions examples/wippersnapper_debug/.xiao_esp32s3.test.skip
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Loading
Loading