- Fix atan2 sign bug: atan2(-yHeading, xHeading) per Freescale AN4248 eq.22.
The previous atan2(yHeading, xHeading) produced counter-clockwise angles,
causing East/West to be swapped relative to compass convention.
- Add imuSetMagneticDeclination() (T:146, field "decl") to correct the
offset between magnetic north and true north (iPhone shows true north).
Value is persisted in imuConfig.json across reboots.
- Add imuSetHeadingOffset() (T:147, field "off") to compensate for sensor
mounting orientation on the rover. Also persisted.
- Persist decl and hOff in imuConfig.json (version 2, backwards compatible).
- Fix calibration feedback for web interface: T:126 now includes calDone=1
(success) or calDone=0 (fail) once after calibration completes, plus
decl and hOff fields. Calibration start message explains polling procedure.
- Remove duplicate #include <nvs_flash.h> and unused Adafruit ICM20948
includes that caused build failures when libraries were not installed.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>