Repository navigation
2.3.0 - #295
2.3.0#295TobiasRoeddiger wants to merge 100 commits into
Conversation
Co-authored-by: o-bagge <47336932+o-bagge@users.noreply.github.com>
✅ Unit tests passed5 passed, 0 failed/error, 0 skipped — view workflow run
Download the |
Compiler warningsThe extended-warning build completed successfully. Application compiler warningsShow warnings |
CodeChecker static analysis✅ No non-style issues found. |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
|
Build output available: |
Wait 300 ms after the last SD configuration write, then open one file with the selected rates before starting the new recording. Keep the previous recording active during the wait and drain it before rotation. Preserve BLE-only changes, reject failed initial SD starts without altering the working configuration, and cancel pending work on shutdown. Revises the original microphone-header fix from PR #251.
|
Build output available: |
|
Build output available: |
Release 2.3.0 with the following changes:
PPG: Select integration time and optical channels for the requested sample rate, with red and infrared at 2,048 Hz and infrared at 4,096 Hz. Verify the sensor settings and preserve samples split across FIFO reads.
IMU: Use the Bosch BMI160/BMM150 drivers to read BMX160 samples in FIFO batches. Return errors when FIFO-length or calibration-register reads fail.
Bone conduction: Expand the BMA580 FIFO to 1,024 bytes, keep it collecting samples when full, and read it once per buffered batch. Enable both sensor power rails during operation.
Sensor control and timing: Process all queued configuration requests, skip pending sensor work after a stop, and delay the first poll until data can accumulate. Send low-rate samples individually when their spacing exceeds the packet interval field's range.
Audio: Receive the complete encoder queue item to fix a four-byte buffer overflow. Validate the frame length before encoding. Keep cold-start PCM muted until synchronization settles, then fade it in (fix(audio): mute cold-start audio until synchronization settles #316). Let audio preempt sensor configuration by using a lower-priority sensor worker and yielding during sensor startup (fix(sensors): prevent sensor startup from blocking audio #315).
SDK and toolchain: Upgrade to nRF Connect SDK/toolchain 3.4.1 and Nordic Zephyr 4.4.2, use Zephyr SDK 1.0.1 in CI, and update setup documentation (ncs 3.4.1 upgrade #318).
Audio startup: Preserve 20 ms of settling time, restore 40 ms of playback margin, and wait for stable codec clocks before unmuting (fix(audio): restore startup playback headroom on SDK 3.4.1 #319, fix(audio): wait for stable codec clocks before unmuting #321).
Right-ear audio: Route decoded right-channel music to the physical speaker output (ncs 3.4.1 upgrade #318).
Audio timestamps: Reconstruct missing timestamps from a recent valid reference and drop frames without a usable reference (fix(audio): reconstruct missing unicast ISO timestamps #320).
Audio resynchronization: Detect persistent playback timing errors and buffer underruns, then recheck alignment and safely correct the playback buffer (fix(audio): recheck playback alignment after timing slips #322).
Audio lifecycle: Preserve shared microphone/playback access, clean up queued frames on stop, and protect encoding during codec shutdown (ncs 3.4.1 upgrade #318).
SDK compatibility: Correct the bootloader layout, preserve audio memory reserves, restore SD logger startup, and retain pair-specific Bluetooth names (ncs 3.4.1 upgrade #318).
FOTA: Keep the Bluetooth update service available in FOTA builds so the app detects firmware-update support. Standard builds keep FOTA disabled.
BLE throughput: Batch consecutive sensor samples into MTU-sized packets and keep queued readings fresh under load.
BLE scheduling: Reserve a 2000 us ACL connection event to improve sensor throughput while leaving scheduling headroom for CIS audio (perf(ble): reserve ACL airtime while preserving CIS audio headroom #309).
Power: Set the fuel gauge's sleep measurement intervals to 60 seconds. Leave P0.6 in high impedance to prevent back-powering the switched sensor supply.
Firmware version: Set
VERSIONto 2.3.0 with the compact BLE PPG update, use it as the base for generated version strings, and return the exact version text over BLE.CI: Retry failed Zephyr toolchain installations in the static-analysis workflow.
Compact BLE transport: Pack PPG from 16 to 10 bytes (Pack BLE PPG samples losslessly for firmware 2.3.0 #355) and IMU from 36 to 24 bytes (Reduce IMU BLE payloads in firmware 2.3.0 #357). Firmware 2.3.x selects the new layouts; the library restores the same values and units. SD/
.oeformats remain unchanged.LED state: Read and notify the configured RGB color and indication mode (Read and notify LED color and indication mode #356).
Validation: combined FOTA and standard builds pass. Transport tests cover all 65,536 signed IMU readings and PPG boundaries. Real-app release validation with app 1.6.0 and firmware 2.3.0/2.2.9 is in progress. Older feature PRs #311, #276 and #267 are excluded.