exercises: add Exercise 07 SD startup watcher with OLED status and hot-insert/removal handling
This commit is contained in:
parent
0217ece5e5
commit
2aec641fc2
7 changed files with 672 additions and 0 deletions
51
exercises/07_SD_Startup_Watcher/README.md
Normal file
51
exercises/07_SD_Startup_Watcher/README.md
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
## 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:
|
||||
|
||||
1. A reusable SD startup/watcher library in `lib/startup_sd`.
|
||||
2. A harness app in `src/main.cpp` that demonstrates how to use that library.
|
||||
|
||||
Watcher behavior:
|
||||
|
||||
1. Initializes PMU and enables SD power rail (AXP2101 BLDO1).
|
||||
2. Polls for card changes with debounced state transitions.
|
||||
3. Emits events only on change:
|
||||
- `EVENT: card inserted/mounted`
|
||||
- `EVENT: card removed/unavailable`
|
||||
- `EVENT: no card detected`
|
||||
4. On mount event, emits callback status (`SdEvent`) and runs SD write workflow.
|
||||
5. Every 15 seconds while mounted, runs a periodic write/permission check.
|
||||
6. 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 ready
|
||||
- `SdEvent::CARD_REMOVED` -> card removed, wait for insert
|
||||
|
||||
Files used in this exercise:
|
||||
- `/Exercise_07_test.txt`
|
||||
- `/test/testsub1/testsubsub1/Exercise_07_test.txt`
|
||||
|
||||
## Build
|
||||
|
||||
```bash
|
||||
source /home/jlpoole/rnsenv/bin/activate
|
||||
pio run -e node_a
|
||||
```
|
||||
|
||||
## Upload
|
||||
|
||||
```bash
|
||||
source /home/jlpoole/rnsenv/bin/activate
|
||||
pio run -e node_a -t upload --upload-port /dev/ttyACM0
|
||||
```
|
||||
|
||||
## Monitor
|
||||
|
||||
```bash
|
||||
screen /dev/ttyACM0 115200
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue