Commit 2dcc1db
committed
Fix legacy 40.2.2 handling in examples, drain FIFO everywhere
Audit of the examples against the dual-firmware goal: the library must keep
working for users still on the original 40.2.2 MSBL, not just 40.6.0.
Two examples presented 40.5.0-only data as if the legacy firmware provided it:
- 03.HeartRateSpO2 printed spo2Confidence unconditionally. That field only
exists in the 29-byte sample; on the 23-byte legacy sample the driver zeroes
it, so 40.2.2 users saw "conf: 0 %" presented as a real reading. Now "n/a".
- 09.HeartRateVariability derives HRV entirely from the hub's inter-beat
interval, which does not exist before 40.5.0. It warned once at startup and
then looped forever accumulating nothing, with no output and no error. It
now stops with an explanation and points at 03.HeartRateSpO2.
Added PulseExpressCaps::extendedSampleFields (true from 40.5.0) so the IBI,
SpO2-confidence and report-flag fields are gated on a named capability rather
than open-coded sampleBytes comparisons, per the convention in CLAUDE.md.
parseSample() uses it too.
Examples 01, 03, 05, 06, 07 and 09 now drain the hub FIFO to empty each pass
instead of taking a single capped read per loop. An overflowed output FIFO
rejects every subsequent read until it is emptied, which stops streaming for
good -- the failure seen on the 40.6.0 board in 10.DeviceInfoAndDiagnostics.
Examples 04, 05, 06, 07, 08 and 10 already branched on caps() correctly; 01,
02 and 11 are firmware-agnostic. All 11 compile for Uno R4 Minima.
Note: raw PPG on 40.2.2 is still unresolved. Both 40.2.2 boards fail every
command that needs the hub's secondary I2C bus to the optical AFE (0x41 03 FF
and 0x44 03 01 both return 0xFF) while the 40.6.0 board reads PART_ID 0x15 and
streams. The sensor-index sweep added to 10.DeviceInfoAndDiagnostics has not
yet been run on a 40.2.2 board; if the AFE answers at a different index there,
the fix is a caps field for it rather than a firmware reflash.1 parent 9e462fc commit 2dcc1db
10 files changed
Lines changed: 140 additions & 62 deletions
File tree
- examples
- 01.RawPPGStreamPlotter
- 03.HeartRateSpO2
- 05.BPTEstimation
- 06.BPTCalibrateAndEstimate
- 07.SaveLoadCalibrationEEPROM
- 09.HeartRateVariability
- src
Binary file not shown.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
51 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
52 | 67 | | |
53 | 68 | | |
54 | 69 | | |
| |||
Lines changed: 9 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
63 | 67 | | |
64 | 68 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
| 69 | + | |
69 | 70 | | |
70 | | - | |
71 | | - | |
72 | | - | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
73 | 75 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
41 | 41 | | |
42 | 42 | | |
43 | 43 | | |
| 44 | + | |
| 45 | + | |
44 | 46 | | |
45 | 47 | | |
46 | 48 | | |
| |||
59 | 61 | | |
60 | 62 | | |
61 | 63 | | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
62 | 68 | | |
63 | 69 | | |
64 | 70 | | |
| |||
68 | 74 | | |
69 | 75 | | |
70 | 76 | | |
| 77 | + | |
| 78 | + | |
71 | 79 | | |
72 | 80 | | |
73 | | - | |
74 | | - | |
75 | | - | |
| 81 | + | |
76 | 82 | | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
83 | 100 | | |
84 | 101 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
85 | 85 | | |
86 | 86 | | |
87 | 87 | | |
88 | | - | |
89 | | - | |
90 | | - | |
| 88 | + | |
| 89 | + | |
91 | 90 | | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
99 | 104 | | |
100 | 105 | | |
Lines changed: 16 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
170 | 170 | | |
171 | 171 | | |
172 | 172 | | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
| 173 | + | |
| 174 | + | |
177 | 175 | | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
185 | 190 | | |
186 | 191 | | |
Lines changed: 12 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
168 | 168 | | |
169 | 169 | | |
170 | 170 | | |
171 | | - | |
172 | | - | |
| 171 | + | |
| 172 | + | |
173 | 173 | | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
179 | 184 | | |
180 | 185 | | |
181 | 186 | | |
| |||
Lines changed: 35 additions & 14 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
76 | 76 | | |
77 | 77 | | |
78 | 78 | | |
79 | | - | |
80 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
81 | 97 | | |
82 | 98 | | |
83 | 99 | | |
| |||
88 | 104 | | |
89 | 105 | | |
90 | 106 | | |
| 107 | + | |
91 | 108 | | |
92 | 109 | | |
93 | | - | |
94 | | - | |
95 | | - | |
| 110 | + | |
96 | 111 | | |
97 | | - | |
98 | | - | |
99 | | - | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
100 | 116 | | |
101 | | - | |
102 | | - | |
103 | | - | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
104 | 120 | | |
105 | | - | |
106 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
107 | 128 | | |
108 | 129 | | |
109 | | - | |
| 130 | + | |
110 | 131 | | |
111 | 132 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
242 | 242 | | |
243 | 243 | | |
244 | 244 | | |
| 245 | + | |
245 | 246 | | |
246 | 247 | | |
247 | 248 | | |
| |||
781 | 782 | | |
782 | 783 | | |
783 | 784 | | |
784 | | - | |
785 | | - | |
786 | | - | |
787 | | - | |
| 785 | + | |
| 786 | + | |
| 787 | + | |
| 788 | + | |
| 789 | + | |
788 | 790 | | |
789 | 791 | | |
790 | 792 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
129 | 129 | | |
130 | 130 | | |
131 | 131 | | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
132 | 138 | | |
133 | 139 | | |
134 | 140 | | |
| |||
0 commit comments