| .. | ||
| lib/startup_sd | ||
| src | ||
| platformio.ini | ||
| README.md | ||
Exercise 07: SD Startup Watcher
This exercise is derived from Exercise 05 and keeps that original exercise intact.
The focus here is isolating reusable SD startup and hot-insert watcher logic into a library-style structure.
This exercise now has two parts:
- A reusable SD startup/watcher library in
lib/startup_sd. - A harness app in
src/main.cppthat demonstrates how to use that library.
Watcher behavior:
- Initializes PMU and enables SD power rail (AXP2101 BLDO1).
- Polls for card changes with debounced state transitions.
- Emits events only on change:
EVENT: card inserted/mountedEVENT: card removed/unavailableEVENT: no card detected
- On mount event, emits callback status (
SdEvent) and runs SD write workflow. - Every 15 seconds while mounted, runs a periodic write/permission check.
- Uses fast preferred probe (
HSPI @ 400k) and occasional full fallback scan.
Status callback usage:
SdEvent::NO_CARD-> show "Missing SD card / Please insert card to proceed"SdEvent::CARD_MOUNTED-> card readySdEvent::CARD_REMOVED-> card removed, wait for insert
Files used in this exercise:
/Exercise_07_test.txt/test/testsub1/testsubsub1/Exercise_07_test.txt
Build
source /home/jlpoole/rnsenv/bin/activate
pio run -e node_a
Upload
source /home/jlpoole/rnsenv/bin/activate
pio run -e node_a -t upload --upload-port /dev/ttyACM0
Monitor
screen /dev/ttyACM0 115200