* Try to make WiFi printout more standard
* Handle ESP8266 WiFi encryption type
ESP8266 WiFi encryption type is according to 802.11, while ESP32 seems to report based on whatever... It would also be oh so convenient if we just report the name, so here it is
* Use tabs with quotes for WiFi scan
It was mentioned this would be easier for parsing, so I'll just leave it the same but with quotes, as it's still just as readable now
* Reformat with clang-format
* Designate all initializer clauses to fix compiler errors with newer
compilers
* ESP32C6 support
* fshelper: fixed ESP8266 regression caused by abstracting FS access #321 (#328)
* fshelper: fixed ESP8266 regression caused by abstracting FS access #321
* Removing not needed ifdef
l0ud spotted that this is not need.
Co-Authored-By: Przemyslaw Romaniak <przemyslaw.romaniak@intel.com>
---------
Co-authored-by: Przemyslaw Romaniak <przemyslaw.romaniak@intel.com>
* Fix enabling motion bias estimation (#325)
* fix pre-processor warning
* add macro for calculating radians (#317)
* feat: add macro for calculating radians
* style: silence unused variable warning
* remove unnecessary float cast in macro
* SoftFusion sensor framework with BMI, ICM, LSM6, MPU sensor implementations (#322)
* Update readme to mention BMI270 support.
* Soft fusion sensor initial code, wip
* Soft fusion ICM-42688-P lazy WIP implementation.
* sfusion: Cleanup, implemented sensor frequency calibration
* icm42688: add more comments, basic driver (no hw filtering) should be working
* sfustion: compilation fix
* sfusion: start calibration when upside down
* cleanup: remove confusing had data flag
* sensor manager: use unique_ptr instead of raw pointers
* sfusion: big refactoring wip
* sfusion: make aux work, at least sfusion sensors should now be functional
* sfusion: lightweight implementation of BMI270 sensor, no sensitivity cal yet
* sfusion: BMI270: added CRT and gyro zx factor. should be functionally equivalent to the old driver
* Added lsm6dsv
* Trying to work around esp32c3 compilation problem, not liking that solution
* sfusion: fix problems found after rebase
* Update README.md
* Bump Arduino core to 3.0 to match GCC12
* Remove fast pin swapping that is no longer compatible with arduino core v3
* Bring back fast pin swapping
* Update platformio-tools.ini
* Fix accel timescale (calibration no longer takes forever)
* Fix non-sfusion sensors
* Added LSM6DSO and DSR support and refactored DSV support
* Removed template float param from the implementation
* sfusion: port MPU6050 driver wip, not expecting to be functional yet
* sfusion: add headers specifying main code owners
* connection: fix warning
* update README.md
* fshelper: fixed ESP8266 regression caused by abstracting FS access
* sfusion: fix error on merge
* bno080: differentiate bno080, bno085, bno086 again
* sfusion: final touches
* restore hadData functionality, implementing it in every sensor, made configured flag bno-only
* fix address supplement in non-sfusion sensors, do i2c bus reset for all sensors
* sfusion: make MPU6050 driver use normal MPU6050 ImuID, change eatSamplesAndReturn function to take ms instead of seconds
* sfusion: hotfix, don't apply sensorOffset, it's applied in sensor base
* Log FIFO overruns on LSMs
* Reset the soft watchdog while eating or collecting calibration samples
Resolves an issue where the soft watchdog would trigger.
* Fix missing word in comment, switch to constexpr
* Update esp32/esp8266
---------
Co-authored-by: Gorbit99 <gorbitgames@gmail.com>
Co-authored-by: nekomona <nekomona@nekomona.com>
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: unlogisch04 <98281608+unlogisch04@users.noreply.github.com>
Co-authored-by: kounocom <meia@kouno.xyz>
Co-authored-by: Kubuxu <oss@kubuxu.com>
* Add Haritora to consts (#333)
Add haritora consts, fix misspelling
* dont double scan i2c address on bus for ESP32C6
* add custom portmap for ESP32C6
* update to latest tasmota tools for ESP32C6
* serial over USB
* remove change that does nothing
* remove 2s wait in main.cpp it´s not required
* make it change neutral
* more change neutrality
---------
Co-authored-by: unlogisch04 <98281608+unlogisch04@users.noreply.github.com>
Co-authored-by: Przemyslaw Romaniak <przemyslaw.romaniak@intel.com>
Co-authored-by: Meia Kouno <71262281+kounocom@users.noreply.github.com>
Co-authored-by: Fredrik Hatletvedt <32248439+Pespiri@users.noreply.github.com>
Co-authored-by: Przemyslaw Romaniak <loudpl@gmail.com>
Co-authored-by: Gorbit99 <gorbitgames@gmail.com>
Co-authored-by: nekomona <nekomona@nekomona.com>
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: kounocom <meia@kouno.xyz>
Co-authored-by: Kubuxu <oss@kubuxu.com>
Co-authored-by: JovannMC <jovannmc@femboyfurry.net>
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
On a normal reset, we set the CRT (motionless) registers at startup, and then apply the calibrated gryo offset to every gyro sample.
Previously, we performed gyro offset calibration before CRT calibration. This means that we are actually calculating the gyro offset based on a CRT of 0, instead of the actual CRT.
This change performs CRT calibration before gyro calibration, so that the gryo offset is based on the actual CRT.
* [BMI270] Fix bug in data frame size calculation
Previously, required_length was always 0 because we shifting by a huge number, rather than the bit position. So the check for incomplete frames would never trigger. The final data frame in a FIFO read is sometimes an incomplete frame, and therefore we would read garbage for the data frame. There are often incomplete frames when we call LEDManager to blink the LED, because the FIFO overruns.
1. During gyroscope calibration, we often read random gyroscope samples, which throws off the calibration results.
2. During 6-sided calibration, we often read random acceleration samples which causes rest detection to move on to collecting the next side, even if we don't move the tracker.
3. During normal operation, we will rarely read random gyroscope and accelerometer samples. These are usually one-offs and probably don't affect tracking.
This change fixes the bounds check so that we correctly identify incomplete frames and discard them.
* Simplify check
Both i and bytes_to_read are size_t, which are unsigned long. `i - bytes_to_read` should have been `bytes_to_read - i` for how many bytes are left in the buffer. But since we're dealing with unsigned values, it's safer to only do additions and comparisons.
* Enforce clang-format on the repo
* improve CI config
* fix build error
* undo src format
* apply format by hand
* fix last one
* fix build error
* wat
* Untested magnetometer toggle feature for BNO08X and overal packet structure for setting flags from the server
* Some build fixes
* refactor(configuration): rename `CalibrationConfig` to `SensorConfig`
* fix network package order
* typo found
* ignore clion files
* finish feature
* remove ota config that i used
* C skill issue on defines
* i have personal issues with C
* do a reset before
* reinit sensor
* Fix remaining merge errors
* remove BNO_USE_MAGNETOMETER_CORRECTION
* Update src/sensors/sensor.h
Co-authored-by: Lena <25586367+Vyolex@users.noreply.github.com>
* who loves tabs
* send sensorconfig instead of magdata on sensorinfo
* Bump protocol and firmware version
---------
Co-authored-by: Eiren Rain <eirenliel@users.noreply.github.com>
Co-authored-by: DevMiner <devminer@devminer.xyz>
Co-authored-by: Lena <25586367+Vyolex@users.noreply.github.com>
* Update readme to mention BMI270 support.
* Soft fusion sensor initial code, wip
* Soft fusion ICM-42688-P lazy WIP implementation.
* sfusion: Cleanup, implemented sensor frequency calibration
* icm42688: add more comments, basic driver (no hw filtering) should be working
* sfustion: compilation fix
* sfusion: start calibration when upside down
* cleanup: remove confusing had data flag
* sensor manager: use unique_ptr instead of raw pointers
* sfusion: big refactoring wip
* sfusion: make aux work, at least sfusion sensors should now be functional
* sfusion: lightweight implementation of BMI270 sensor, no sensitivity cal yet
* sfusion: BMI270: added CRT and gyro zx factor. should be functionally equivalent to the old driver
* Added lsm6dsv
* Trying to work around esp32c3 compilation problem, not liking that solution
* sfusion: fix problems found after rebase
* Update README.md
* Bump Arduino core to 3.0 to match GCC12
* Remove fast pin swapping that is no longer compatible with arduino core v3
* Bring back fast pin swapping
* Update platformio-tools.ini
* Fix accel timescale (calibration no longer takes forever)
* Fix non-sfusion sensors
* Added LSM6DSO and DSR support and refactored DSV support
* Removed template float param from the implementation
* sfusion: port MPU6050 driver wip, not expecting to be functional yet
* sfusion: add headers specifying main code owners
* connection: fix warning
* update README.md
* fshelper: fixed ESP8266 regression caused by abstracting FS access
* sfusion: fix error on merge
* bno080: differentiate bno080, bno085, bno086 again
* sfusion: final touches
* restore hadData functionality, implementing it in every sensor, made configured flag bno-only
* fix address supplement in non-sfusion sensors, do i2c bus reset for all sensors
* sfusion: make MPU6050 driver use normal MPU6050 ImuID, change eatSamplesAndReturn function to take ms instead of seconds
* sfusion: hotfix, don't apply sensorOffset, it's applied in sensor base
* Log FIFO overruns on LSMs
* Reset the soft watchdog while eating or collecting calibration samples
Resolves an issue where the soft watchdog would trigger.
* Fix missing word in comment, switch to constexpr
* Update esp32/esp8266
---------
Co-authored-by: Gorbit99 <gorbitgames@gmail.com>
Co-authored-by: nekomona <nekomona@nekomona.com>
Co-authored-by: nekomona <nekomona@163.com>
Co-authored-by: unlogisch04 <98281608+unlogisch04@users.noreply.github.com>
Co-authored-by: kounocom <meia@kouno.xyz>
Co-authored-by: Kubuxu <oss@kubuxu.com>
Sensor fusion expects the time to be in seconds while rest detection expects it to be in microseconds. This makes is so when the update sensor fusion is called the rest detection now gets the time in micros
Co-authored-by: Eiren Rain <Eirenliel@users.noreply.github.com>
The delay in sendData() makes at somepoint that the packetbundling does not work correctly. The ICM works without delay on ESP8266, ESP32-C3, ESP32-S2
Also added the LastData Flag for get info