Skip to content

Releases: Abasz/ESPRowingMonitor

v7.1.0 Version

08 Apr 19:53

Choose a tag to compare

ESP Rowing Monitor v7.1.0 Release

This minor release focuses on internal architecture, build optimizations, and general code health. It replaces the FastLED dependency with the IDF-native led_strip component, significantly reducing compilation times and memory usage. It also brings a refactored CMake build structure, several code quality improvements, updated kayak rower profiles, and platform and dependency updates.

Improvements

LED Library Replacement

  • FastLED Removed: Replaced FastLED with the led_strip component from idf-extra-components. This massively improves compilation times and reduces memory usage.
  • LED Wrapper: Added a dedicated LED wrapper around led_strip to simplify LED handling and testing.
  • Controller Integration: Moved LED handling into the controller and power-management flow.
  • Test Coverage: Added targeted tests for the new LED handling implementation.

CMake Build System Improvements

  • Multilevel Structure: Refactored the CMake configuration to follow the project directory hierarchy with a proper multilevel structure.
  • Modular Components: Components are now expressed as INTERFACE libraries for improved modularity.
  • Validation Script: Added a CMake test script to validate the configuration and generated build scripts.
  • Tooling: Added cmake-lint and cmake-format configuration files and fixed existing lint errors in CMake build scripts.
  • IWYU Support: Added optional include-what-you-use integration to the clang-tidy target to improve include quality.

Code Quality Improvements

  • Include Hygiene: Refactored source files to follow proper include-header-first guidelines, removed unused headers, and added missing ones as per IWYU analysis.
  • BLE Enum Reorganization: Moved BLE-related enums from the general utils/enums.h into the bluetooth folder, improving encapsulation and reducing clutter in the shared enums header.
  • Const Correctness: Applied const to service pointers in BLE service setup methods.

Profile and Documentation Updates

  • Kayak Profiles: Updated kayakFirst and kayakFirstBlue rower profiles based on real-world testing with elite athletes.
  • FAQ: Added additional clarity to the inertia measurement methods section.

Platform and Dependency Updates

  • Updated to the latest ESP-IDF and ESP-Arduino Core versions.
  • Updated Catch2 to its latest version.

Bug Fixes

  • README: Fixed broken table of contents links caused by special characters (emojis) in headings.
  • CI/CD: Fixed word splitting in the CI/CD build workflow shell command.

Full Changelog: 7.0.2...7.1.0

v7.0.2 Version

02 Mar 11:11

Choose a tag to compare

ESP Rowing Monitor v7.0.2 Release

This release

  • fixes crashes of the GUIs on non-windows platforms (Fixes #33)
  • fixes deepwiki not updating to the latest commit

Full Changelog: 7.0.1...7.0.2

v7.0.1 Version

16 Jan 07:43

Choose a tag to compare

ESP Rowing Monitor v7.0.1 Release

This major release introduces an advanced cyclic error filtering system for improved metric accuracy, a new calibration helper GUI tool, significant performance improvements, and includes breaking changes to the BLE API that require updated clients.

The cyclic error filtering feature allows cleaner force curves and potentially reduces the required IMPULSE_DATA_ARRAY_LENGTH while yielding more accurate metrics. Combined with additional performance optimizations (approx. 13-15% improvement), the overall accuracy and responsiveness of ESP Rowing Monitor has been significantly enhanced.

⚠️ Breaking Changes

Stroke Detection Settings BLE Characteristic

The minimumRecoverySlopeMargin setting has been removed from the firmware as it was made obsolete by the driveHandleForcesMaxCapacity setting:

  • Stroke Detection Settings Characteristic payload size changed from 15 bytes to 11 bytes
  • Old GUI clients sending the 15-byte payload will receive an InvalidParameter BLE error
  • Firmware will not accept or parse old-format payloads
  • Required action: Use the latest version of the WebGUI

See Custom BLE Services for the updated byte layout.

Extended Metrics BLE Characteristic

The dragFactor field in the Extended Metrics characteristic has been changed from 8-bit (1 byte) to 16-bit (2 bytes, unsigned short, Little Endian):

  • Extended Metrics (UUID: 808a0d51-efae-4f0c-b2e0-48bc180d65c3) now reports dragFactor as a 16-bit unsigned value rather than 8-bit
  • This change fixes issue #21 where machines with higher drag factors (e.g., magnetic and water rowers exceeding 255) couldn't be properly represented
  • Old clients that read a single byte will misinterpret values or parse the payload incorrectly if the actual value is above 255 (if below, backward compatibility is maintained)

New Features

Cyclic Error Filtering

  • Advanced Sensor Data Filtering: Introduced a cyclic error filtering system (CyclicErrorFilter and ExponentialWeightedAverage class) that mitigates cyclic errors in sensor data, improving the accuracy of stroke detection.
  • Cleaner Force Curves: The filter produces cleaner handle force curves by correcting impulse timing variations caused by mechanical imperfections in the flywheel magnet placement.
  • Reduced Data Requirements: The cyclic error correction potentially allows using a smaller IMPULSE_DATA_ARRAY_LENGTH while maintaining or improving metric accuracy.

Configurable BLE Update Interval

  • Per-Profile BLE Update Control: Added MIN_BLE_UPDATE_INTERVAL setting that allows configuring the minimum BLE update interval on a per-profile basis (aims to address issue #24 to some extent) while keeping the default behaviour unchanged (i.e. 4 seconds).

Calibration Helper Desktop GUI (cross-platform)

  • New Calibration Tool: A ready-to-use desktop GUI for analyzing and visualizing calibration data is now provided for Windows, Linux, and macOS.
  • Delta Time Analysis: Visualize raw vs. cleaned delta times from the cyclic error filter to understand sensor data quality.
  • Handle Force Visualization: Iterate over handle force curves for each stroke with navigation controls.
  • Stroke Detection Analysis: Identify missed or duplicate strokes using Theil-Sen regression analysis.
  • Distributed with releases: Platform-specific assets are attached to releases:
    • Windows: standalone executable (.exe)
    • Linux: standalone executable
    • macOS: .app bundle packaged as a .tar.gz

Support for Kettler Stroker

  • Add rower profile to support Kettler Stroke (thanks @Double-A-92)

Updates and Improvements

Performance Optimizations

  • Algorithm Efficiency: Refactored series calculations to use std::ranges, emplace_back, and bit manipulation instead of modulo operator for improved performance and readability.
  • Memory Management Fix: Fixed a bug in manual vector memory allocation management that was causing unnecessary overhead.
  • Overall Improvement: Combined optimizations result in approximately 13-15% performance improvement in the main calculation loop.

Deep Sleep Power Consumption

  • Improved Deep Sleep: Added gpio_deep_sleep_hold_en to the sensor on/off switch pin to reduce power consumption during deep sleep mode.

Documentation Improvements

  • Community FAQ: Added comprehensive FAQ documentation derived from GitHub discussions, providing community-validated solutions, hardware-specific guidance, and troubleshooting workflows for common setup and calibration questions.
  • DeepWiki Integration: Created DeepWiki configuration (.devin/wiki.json) enabling AI-assisted documentation generation focused on helping new users with setup, calibration, and troubleshooting. Interactive documentation is available generated by DeepWiki.
  • Enhanced Settings Documentation: Added extensive cross-references between settings.md and FAQ entries for improved discoverability of calibration guidance and hardware setup information and updated links.

Code Quality Improvements

  • Modern C++ Adoption: Refactored codebase to use C++ ranges library (std::ranges) for improved readability and performance.
  • Type Safety: Added [[nodiscard]] attributes to various methods to prevent accidental ignoring of return values.
  • Enum Improvements: Refactored typedefs to using declarations and improved enum class usage.
  • Standard Library Qualification: Qualified certain math functions with std:: for proper namespace usage.
  • Null Pointer Safety: Replaced NULL with nullptr throughout the codebase.
  • Linting Cleanup: Fixed various linting errors and updated NOLINT comments.

Build System and Testing

  • CMake Improvements: Refactored CMake scripts for improved structure and better support for custom environment targets in e2e tests.
  • Extended Series Functionality: Enhanced series classes with extended functionality and improved test coverage.
  • Testing Library Updates: Updated FakeIt mocking library and Catch2 to their latest version.

Bug Fixes

  • Drag Factor Size Bug: Fixed issue #21 where drag factor was limited to 255 due to 8-bit storage, now supports 16-bit values for machines with higher drag factors.
  • Zero Division in FTMS: Fix zero division in the calculation of stroke rate and pace for FTMS causing undefined behaviour. (Thanks @Double-A-92)
  • Handle Force Curves Alignment: Fixed handle force curves being shifted by one data point by adding torqueBeforeFlank tracking in StrokeService.
  • Control Point Write Flag: Added WRITE_NR (Write Without Response) flag to BLE control points for improved compatibility.
  • Instant Sleep Bug: Fixed instant sleep bug in runtime test scenarios.
  • CI/CD Fixes: Fixed test CI workflow and improved compilation time.

Code Refactoring and Maintenance

  • Drag Coefficient Calculation: Refactored drag coefficient calculation for improved clarity and maintainability.
  • HandleForces and DeltaTimes Task: Refactored background tasks for better organization.
  • Settings Deprecation: Removed minimumRecoverySlopeMargin from all rower profiles and settings models as it became redundant with the driveHandleForcesMaxCapacity setting.

Notes

  • BLE Client Updates Required: Due to the breaking changes in BLE characteristics, all clients (including the WebGUI) must be updated to the latest version to work with this release.
  • Drag Factor Compatibility: The drag factor change from 8-bit to 16-bit maintains backward compatibility for values below 256, but clients parsing the extended metrics characteristic should be updated to read 2 bytes for the drag factor field.
  • Calibration Helper: The new calibration helper GUI tool is distributed alongside the ESPTool GUI and can be used independently for analyzing recorded session data.

Full Changelog: 6.2.1...7.0.0

ESP Rowing Monitor v6.2.0 Release

13 Oct 18:30

Choose a tag to compare

Version 6.2.0

This release introduces runtime-configurable settings over BLE, expands the Settings Service, adds new ergometer profiles, improves tooling and adds CI, and includes multiple fixes and refinements.

The runtime-configurable settings capability (that allows dynamic configuration changes without requiring firmware recompilation) significantly enhances the flexibility and usability of the program while maintains backward compatibility for users who prefer compile-time settings. The improvements in BLE functionality and hardware support make the system more accessible and easier to configure for a wider range of users and hardware setups.

New Features

Runtime Settings Framework

  • Dynamic Configuration Management: Introduced a comprehensive runtime settings system that allows users to modify rower profile configuration parameters via BLE without requiring firmware recompilation (please see details below).
  • NVS Storage Integration: Settings are now persisted in Non-Volatile Storage (NVS) and automatically loaded on startup when runtime settings are enabled.
  • Opt-in Architecture: Runtime settings use a "pay for what you use" approach via compiler flags, ensuring minimal overhead when not needed.

Enhanced BLE Configuration Capabilities

  • Stroke Detection Settings Control: Added new BLE characteristic and Control Point OpCode to dynamically adjust stroke detection parameters including impulse data array length and stroke detection algorithms.
  • Drag Factor Configuration: Implemented BLE endpoints for runtime adjustment of drag factor calculation parameters.
  • Sensor Signal Filter Settings: Added capability to configure sensor signal filtering parameters through BLE.
  • Machine Settings Management: Exposed machine-specific settings (flywheel inertia, sprocket radius, etc.) via BLE for runtime modification.
  • Device Restart Control: Added Control Point OpCode to allow remote device restart via BLE.
  • Enhanced Validation: Added centralized validation logic including cross-validation for settings to ensure compatibility and prevent invalid configurations.

ESPTool Desktop GUI (cross‑platform)

  • A ready‑to‑use desktop GUI for flashing firmware is now provided for Windows, Linux, and macOS.
  • Distributed with each release as platform‑specific assets:
    • Windows: standalone single executable (.exe).
    • Linux: standalone executable.
    • macOS: .app bundle packaged as a .tar.gz.
  • The GUI embeds the required tooling (esptool, pyserial) so users don’t need - It allows selecting and flashing the supported Rowers and Boards based on the latest release.
  • The selected precompiled binary is downloaded automatically and flashed to the detected board with the correct memory mapping.

New Optional Debounce Filter

  • Compile-time Debounce Filter: Added an optional compile-time debounce filter (ENABLE_DEBOUNCE_FILTER) that can be enabled (default is off). This lightweight filter helps reduce false impulses from noisy mechanical sensors (e.g. reed switches) by rejecting impulses that are inconsistent with the previous inter-impulse interval. See docs/settings.md for details and recommendations.

Improved Device Identification

  • Auto-Generated Serial Numbers: Serial numbers can now automatically generated from the device MAC address when not explicitly provided.
  • Flexible Device Naming: Added options to include/exclude serial numbers and BLE service flags in the device name.
  • Device Name Length Validation: Implemented compiler checks to ensure device names don't exceed 18 characters for better compatibility with devices like Garmin watches.
  • Hardware Revision String: Exposed the Bluetooth Device Information "Hardware Revision String" characteristic (UUID 0x2A27). The value is derived at compile time from the selected board profile (first token of the BOARD_PROFILE macro) with a default of "Custom". It can be explicitly overridden using the HARDWARE_REVISION build define. See docs/settings.md for details and examples of build flags.

Experimental Hardware Support

  • OldDanube Kayak Ergs: Added initial experimental support for OldDanube Kayak Ergs with 6-magnet configuration (settings subject to change as hardware development continues).

Updates and Improvements

BLE and Connectivity Enhancements

  • Garmin Pairing Fix: Resolved pairing issues with newer Garmin firmware by enabling appropriate security layers for Open/Secure Connection compatibility.
  • Connection Tracking Management: Improved connection tracking and management for better performance and reliability.

Performance Optimizations

  • Series Class Refactoring: Optimized series classes for improved performance during data processing.
  • Memory Management: Improved memory usage patterns and reduced overhead in critical code paths.

Hardware and Board Support

  • Wake-up Pin Reliability: Fixed wake-up issues on ESP32-S3 boards by ensuring RTC pin pullup is maintained during deep sleep.
  • Generic Board Profile: Updated LED pin definition to use GPIO_NUM_NC for boards without built-in LEDs.
  • Board Configuration Matrix: Restructured platformio configuration to support a matrix of board and profile combinations.
  • More Supported Boards: Support more boards out of the box

Development and Build System Improvements

  • CMake Migration: Moved from single-header test frameworks to CMake-based compilation for faster build times.
  • CI/CD Integration: Added GitHub Actions workflows for automated building and testing including the automatic attaching of the precompiled downloadable firmware for different boards and rowers to the latest release including a dynamic rower profile with runtime-configurable settings enabled.
  • Desktop GUI Packaging in CI: The ESPTool Desktop GUI is built automatically for Windows/Linux/macOS and attached to releases as ready‑to‑run artifacts (Windows executable, Linux executable, macOS .app tarball).
  • Environment Management: Created comprehensive build matrix supporting multiple board and profile combinations.
  • Installation Scripts: Added installer and auto-compiler scripts for simplified setup and configuration (works only under Linux).

Bug Fixes

  • Sprocket Radius Setting: Fixed implicit conversion bug that caused incorrect float-to-int conversion in macro definitions.
  • Drag Coefficient Calculation: Relaxed requirements for drag factor calculation to improve initial detection and recovery from resets.
  • Compiler Warnings: Resolved various linting errors and compiler warnings related to SdFat, LittleFS, and macro redefinitions.

Code Refactoring and Maintenance

  • Settings Model Separation: Separated settings models into dedicated headers for improved code organization by extracting the rower profile configurations class.
  • Callback Renaming: Renamed callback classes to better reflect their functions (e.g., ConnectionManagerCallbacks to SubscriptionManagerCallbacks).
  • Logging Library Update: Switched to a fork of ArduinoLog that supports class enums to eliminate compilation warnings.

Notes

  • Runtime Settings: When runtime settings are enabled, some configuration parameters are now loaded from NVS instead of compile-time constants, which may require reconfiguration for existing setups.
  • BLE Device Names: Device naming conventions have changed with new options for serial number and service flag inclusion, which may affect device recognition by previously paired clients (defaults are set so previous behavior is kept).

Full Changelog: 6.0.1...6.2.0

Small updates and bug fixes

31 Jan 08:31

Choose a tag to compare

This minor release fixes a few bugs and updates some packages to their latest as well as includes the refactoring necessary to meet some API changes of the packages updates.

6.0.0

20 Dec 20:16

Choose a tag to compare

Version 6.0.0

This major release introduces new BLE functionality, adds experimental support for the FTMS Bluetooth profile, improves modularity through significant refactoring of the bluetooth core, and resolves several bugs. It also updates the Arduino framework to version 3.x and introduces compatibility with modern C++ standards for enhanced performance and maintainability.

Please note that this release completely removes any WebSocket or WebServer related feature from the codebase.

New Features

Experimental FTMS BLE Service

  • FTMS Compatibility: Introduced the FTMS bluetooth profile to enable compatibility with various rowing apps (currently experimental).

Over-the-Air Firmware Updates

  • BLE-Based OTA Updates: Users can now update firmware directly over Bluetooth, eliminating the need for physical connections.

Improved Stroke Detection

  • Enhanced the stroke detection algorithm by switching to the Theil-Sen Linear Regression model for increased resilience to outliers.
  • While this introduces a 5-10% execution time overhead, it provides significant accuracy improvements for stroke detection that is actually compensated by other improvements.

Updates and Improvements

  • Improved Execution Time and Support for Higher IMPULSE_DATA_ARRAY_LENGTH:

    • As part of the version 6 update, significant work has been done to improve the execution time of the main loop and better support higher values of IMPULSE_DATA_ARRAY_LENGTH.
    • Through various algorithmic optimizations, coupled with moving to Arduino Core 3., ESP-IDF 5., and a modern compiler/toolchain, there has been an approximate 6-10% improvement in execution time across all IMPULSE_DATA_ARRAY_LENGTH compared to version 5.
    • For example using double type: 3.3ms for a 15 data point set (v5: 3.4ms).
    • The most significant gains are seen in maximum execution times due to proper offloading of peripheral calculations to the second core of the ESP32.
  • Updated Framework: Upgraded to Arduino Core v3 and ESP-IDF v5.1, utilizing modern features such as the std::span and the xtensa toolchain v12.

  • Improved BLE Data Flow: Refactored BLE state management and data flow into separate structures for enhanced clarity and performance.

  • Generic Ergometer Profile Updates: Fine-tuned moment of inertia values and drag coefficients for improved calibration and detection accuracy.

Bug Fixes

  • Compile Date String: Fixed formatting issues for single-digit days in the compile date.
  • Failsafe Mechanisms: Added safeguards for torque-based stroke detection to handle edge cases with drive phases.

Code Refactoring and Maintenance

  • Restructured Codebase:

    • Grouped related files (e.g., SdCardService, utility classes) into dedicated folders for cleaner organization.
    • Restructured the test folder for better clarity between unit and end-to-end tests.
  • Enhanced Dependency Injection for BLE Services: Refactored the architecture of core BLE services (e.g., OtaBleService, BatteryBleService, SettingsBleService) to utilize dependency injection. This improves modularity and simplifies testing.

  • Optimized MTU Calculation: Centralized MTU logic for more efficient characteristic management.

  • BLE Controller Enhancements: Elevated BluetoothService to a controller managing sub-services, improving extensibility.

  • Constexpr Improvements: Adopted constexpr for constructors in various Series classes for better adherence to modern C++ practices.

  • Move to CMake and improve testing workflow: Improve both unit testing and calibration workflows by using CMake to generate a build system instead of using a traditional makefile.

Full Changelog: 5.2.0...6.0.0

Add new Extended BLE Metrics and deprecate WebSocket API

10 Jul 12:47

Choose a tag to compare

Version 5.2.0

This release focuses on expanding hardware support, enhancing BLE functionality, refining rower profiles, and improving code quality. Additionally, various bug fixes and optimizations are included to enhance overall performance and stability.

Note: This release deprecates the WebSocket API as well as serving up the WebGUI locally from the MCU in favor of the extended BLE metrics API and a progressive web app. However, the option to compile with the WebSocket API will be kept until that feature is stable.

New Features

Addition of New BLE Services

Creates proper services for extended metrics as well as settings and groups the related characteristics within the appropriate service. These enhancements enable the deprecation of the WebSocket server as all data can be accessed via Bluetooth.

  • Extended BLE Metrics API: Created a custom BLE profile to expose metrics via BLE that were originally available via WebSocket.
  • BLE Handle Forces: Exposes stroke handle force data via BLE.
  • Delta Time Logging via BLE: Added functionality to allow sending delta time data via Bluetooth for logging, debugging, and row data analysis purposes.
  • Settings BLE Service: Added functionality to allow sending settings data via Bluetooth, making potential future expansion of changeable settings more flexible. This includes enabling/disabling SD Card logging, improving flexibility and ease of use.

Support for Newer ESP32 Chips

  • ESP32-S3 Support: Added support for CDC-enabled ESP32 chips such as the S3.

Updates and Improvements

  • RGB LED Configuration: Introduced a setting option for EOrder to support different types of RGB LEDs with varying color orders (e.g., GBR).
  • Refine Current Rower Profiles: Updated inertia values for Generic Air rower and KayakFirst Blue rower profiles based on testing, which showed previously set values were too low. Necessary recalibration was performed.
  • Flash Usage Reduction: Reduced flash usage by disabling unused NimBle library functions.

Bug Fixes

  • SD Card Logging Bugs: Fixed issues where SD Card logging could not be reenabled after being disabled and where logging did not switch off when other delta time logging was active.
  • Weighted Average Calculation: Corrected a bug in the weighted average calculation that incorrectly summed values.
  • Float Precision Bug: Fixed a fatal float precision issue in ISR calculations causing crashes due to the lack of FPU in ESP32 interrupts. Updated configuration variables and tests accordingly.

Code Refactoring and Maintenance

  • Const Correctness: Improved const correctness by using constant iterators where possible.
  • Clean Up Includes: Cleaned up using and include statements to streamline code.
  • OpCode Enum Variable: Renamed OpCode enum variable for clarity.
  • Peripheral Service Refactoring: Refactored the Bluetooth service class functions into separate files for better maintainability and updated service setup.
  • Refactored Configurations Class: Removed the class name from static access within the Configurations class and added more defaults (e.g., default DEFAULT_BLE_SERVICE in line with the deprecation of the WebSocket API).

Full Changelog: 5.2.0...5.2.0

5.0.0

25 Feb 09:50

Choose a tag to compare

Version 5.0.0

This release introduce significant improvements to both functionality and performance. The update focuses on enhancing user experience, optimizing resource utilization, and introducing new features to elevate the overall capabilities of the system.

ESP Rowing Monitor now able to handle multiple boards and ergometers better via profiles as well as improved memory management (to avoid crashes) and regression algorithm (special thanks to the ORM project).

However this release includes breaking changes to the stroke detection algorithm (specificalyl the torque based) that may require re-calibration or slight adjustment of the used rowing profile if torque based stroke detection is used as well as to the WebSocket API.

Performance Optimizations

Improve algorithm

Achieved notable performance enhancements, reducing execution time for processing every new data point (saved approximately 21% for IMPULSE_DATA_ARRAY_LENGTH of 18) by the following changes:

  • Enhanced the accuracy of the Theil-Sen Quadratic regression algorithm by removing the median calculation (and use full set of data) for the TS Quadratic Regression calculation.
  • Implemented weighted average for angular velocity and acceleration calculation, enhancing torque-based stroke detection and smoothing force curves.
  • Appropriately reserved memory for all vectors.
  • Utilized swap (O(1)) instead of clear (O(N)) when resetting series.
  • Employed partial_sort_copy in the Series class to reduce the amount of copy.
  • Utilized a combination of nth_element and max_element to calculate the median.

Notes:

  • While swap was beneficial for resetting the driveHandleForces, it was found to result in regression compared to using clear for some scenarios, hence the decision to retain the existing approach in certain cases was made.
  • Benchmarking indicated that nth_element + max_element was less performant for the Series class, suggesting that the overhead of copying outweighs the benefits of O(n) complexity for small arrays.

Take proper advantage of dual core CPUs

  • Implemented RTOS xTask to offload data string creation (for SD and WebSocket) and broadcast to WebSocket clients to core 0.
  • Offload the writing to SD Card to core 0.

Memory Management Improvements

  • Optimized memory usage in the Series class for better performance during long recovery periods to save free heap (as well as free heap quicker).

Other improvements

  • Use binary data for WebSocket data transfer for metrics.
  • Enhanced performance by separating settings and rowing data in data broadcasts and do not send settings object on every broadcast (reducing broadcast size).
  • Simplify WebSocket metrics data API to reduce the amount bytes to be transferred.
  • Introduced BleSignalStrength setting for adjusting BLE TX_power to balance power consumption and dBm strength.

New Features

Reworked Structure of Settings

Completely restructured the settings framework to facilitate more flexible handling of different boards and rowing machines.

  • Split settings between board and machine-specific files, allowing for easier inclusion and combination, providing enhanced flexibility and extensibility.
  • Resolved bugs related to settings usage, improving overall code efficiency.
  • Added a profile for Blue KayakFirst ergo.
  • Added a profile for Orange KayakFirst ergo.
  • Added a profile for Generic ergo.
  • Added a profile for Generic ESP board.
  • Added a profile for FireBeetle board.

Delta Time Logging Feature

Added the option to log delta times to the SD card (settable via WebSocket) and/or through the WebSocket (settable via WebSocket) to eliminate the need for Serial connection during calibration logging.

Simulation from File

Enabled simulation of rowing sessions from files uploaded to the MCU file system, offering longer session simulations and better benchmarking of memory usage.

Improve and simplify calibration run logging

Added a calibration logging setting to enable/disable extra calibration data on specific runs to output standard data that can be parsed.

General Updates and Fixes

Improve linting and refactoring

  • Fixed minor linting errors and updated linting rules.
  • Removed dead code and added missing consts.
  • Added sanity check to baud rate setting.
  • Utilized analogReadMilliVolts native function for battery measurements.
  • Reversed the if statement logic to follow code convention of using guard clauses.

Bug Fixes

  • Corrected time stamp usage for power management, addressing issues related to idle state detection.
  • Ensured consistency in the return type of the OLSLinearSeries size by using size_t.
  • Resolved a bug causing a crash when BLE service is disabled, ensuring proper initialization.
  • Removed a naive WiFi reconnect implementation, utilizing the built-in reconnect feature for better reliability.

Miscellaneous

  • Altered log levels for frequent messages to save on execution time.

Full Changelog: 4.2.0...5.0.0

Bug fixes and fine tuning

02 Sep 14:13

Choose a tag to compare

This is a minor release that contains some small fixes as well as cosmetic patches and fine tuning:

  • Enables WiFi reconnect on connection loss that bypasses the need to restart the device
  • Makes #4 issue clearer as well as squashes a bug regarding WebSocket OpCode processing
  • Improves the torque based stroke detection on machines that produces fewer number impulses during recovery (e.g. on Kayak ergos)
  • Other cosmetic improvements (e.g. settable hostname, update BLE services data, option to disable WebGUI, etc.)

Add static serving of Web GUI and other improvements - Version 1.1.0 (4.1.0)

14 May 08:07

Choose a tag to compare

This release adds certain improvements in terms of performance and control over the application as well as implements the static serving of the Web GUI.

Improvements

  • Add floating point precision settings options (to reduce main loop execution time)
  • Add settings to disable webserver and BLE service
  • Various performance improvements (including the time required for the data processing loop)
  • Fix bug on missing input pin setup (causing input pin to be floating and not detecting impulses properly)

Additions

  • Make stroke detection algorithm (slope, torque, both) selectable
  • Add static web serving capabilities of the Web GUI