Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4b10055

Browse files
committed
feat: complete vendor repos, add edge intelligence and WASM modules
- Add 154 missing vendor files (gitignore was filtering them) - vendor/midstream: 564 files (was 561) - vendor/sublinear-time-solver: 1190 files (was 1039) - Add ESP32 edge processing (ADR-039): presence, vitals, fall detection - Add WASM programmable sensing (ADR-040/041) with wasm3 runtime - Add firmware CI workflow (.github/workflows/firmware-ci.yml) - Add wifi-densepose-wasm-edge crate for edge WASM modules - Update sensing server, provision.py, UI components Co-Authored-By: claude-flow <[email protected]>
1 parent 407b46b commit 4b10055

196 files changed

Lines changed: 52608 additions & 1025 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/firmware-ci.yml

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
name: Firmware CI
2+
3+
on:
4+
push:
5+
paths:
6+
- 'firmware/**'
7+
- '.github/workflows/firmware-ci.yml'
8+
pull_request:
9+
paths:
10+
- 'firmware/**'
11+
- '.github/workflows/firmware-ci.yml'
12+
13+
jobs:
14+
build:
15+
name: Build ESP32-S3 Firmware
16+
runs-on: ubuntu-latest
17+
container:
18+
image: espressif/idf:v5.4
19+
20+
steps:
21+
- uses: actions/checkout@v4
22+
23+
- name: Build firmware
24+
working-directory: firmware/esp32-csi-node
25+
run: |
26+
idf.py set-target esp32s3
27+
idf.py build
28+
29+
- name: Verify binary size (< 950 KB gate)
30+
working-directory: firmware/esp32-csi-node
31+
run: |
32+
BIN=build/esp32-csi-node.bin
33+
SIZE=$(stat -c%s "$BIN")
34+
MAX=$((950 * 1024))
35+
echo "Binary size: $SIZE bytes ($(( SIZE / 1024 )) KB)"
36+
echo "Size limit: $MAX bytes (950 KB — includes Tier 3 WASM runtime)"
37+
if [ "$SIZE" -gt "$MAX" ]; then
38+
echo "::error::Firmware binary exceeds 950 KB size gate ($SIZE > $MAX)"
39+
exit 1
40+
fi
41+
echo "Binary size OK: $SIZE <= $MAX"
42+
43+
- name: Verify flash image integrity
44+
working-directory: firmware/esp32-csi-node
45+
run: |
46+
ERRORS=0
47+
BIN=build/esp32-csi-node.bin
48+
49+
# Check binary exists and is non-empty.
50+
if [ ! -s "$BIN" ]; then
51+
echo "::error::Binary not found or empty"
52+
exit 1
53+
fi
54+
55+
# Check partition table magic (0xAA50 at offset 0).
56+
PT=build/partition_table/partition-table.bin
57+
if [ -f "$PT" ]; then
58+
MAGIC=$(xxd -l2 -p "$PT")
59+
if [ "$MAGIC" != "aa50" ]; then
60+
echo "::warning::Partition table magic mismatch: $MAGIC (expected aa50)"
61+
ERRORS=$((ERRORS + 1))
62+
fi
63+
fi
64+
65+
# Check bootloader exists.
66+
BL=build/bootloader/bootloader.bin
67+
if [ ! -s "$BL" ]; then
68+
echo "::warning::Bootloader binary missing or empty"
69+
ERRORS=$((ERRORS + 1))
70+
fi
71+
72+
# Verify non-zero data in binary (not all 0xFF padding).
73+
NONZERO=$(xxd -l 1024 -p "$BIN" | tr -d 'f' | wc -c)
74+
if [ "$NONZERO" -lt 100 ]; then
75+
echo "::error::Binary appears to be mostly padding (non-zero chars: $NONZERO)"
76+
ERRORS=$((ERRORS + 1))
77+
fi
78+
79+
if [ "$ERRORS" -gt 0 ]; then
80+
echo "::warning::Flash image verification completed with $ERRORS warning(s)"
81+
else
82+
echo "Flash image integrity verified"
83+
fi
84+
85+
- name: Check QEMU ESP32-S3 support status
86+
run: |
87+
echo "::notice::ESP32-S3 QEMU support is experimental in ESP-IDF v5.4. "
88+
echo "Full smoke testing requires QEMU 8.2+ with xtensa-esp32s3 target."
89+
echo "See: https://github.com/espressif/qemu/wiki"
90+
91+
- name: Upload firmware artifact
92+
uses: actions/upload-artifact@v4
93+
with:
94+
name: esp32-csi-node-firmware
95+
path: |
96+
firmware/esp32-csi-node/build/esp32-csi-node.bin
97+
firmware/esp32-csi-node/build/bootloader/bootloader.bin
98+
firmware/esp32-csi-node/build/partition_table/partition-table.bin
99+
retention-days: 30

.gitignore

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
# Local machine configuration (not shared)
2-
CLAUDE.local.md
3-
41
# ESP32 firmware build artifacts and local config (contains WiFi credentials)
52
firmware/esp32-csi-node/build/
63
firmware/esp32-csi-node/sdkconfig
74
firmware/esp32-csi-node/sdkconfig.defaults
85
firmware/esp32-csi-node/sdkconfig.old
6+
# Downloaded WASM3 source (fetched at configure time)
7+
firmware/esp32-csi-node/components/wasm3/wasm3-src/
8+
9+
# NVS partition images and CSVs (contain WiFi credentials)
10+
nvs.bin
11+
nvs_config.csv
912

1013
# Byte-compiled / optimized / DLL files
1114
__pycache__/

0 commit comments

Comments
 (0)