Gears are expressed as an offset to the commanded gradient, leaving the physics on the route's true gradient so shifting changes effort, not speed. Neutral gear commands exactly the route gradient, so an un-shifted ride is unchanged. Cadence is not in FTMS on this trainer but is on its Zwift channel, decoded against captured frames. The undeclared FTMS trailing bytes were ruled out: wheel RPM restated at a fixed 73.8x speed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
21 lines
699 B
Rust
21 lines
699 B
Rust
//! Pure ride logic: physics, profiles, GPX import and session state.
|
|
//!
|
|
//! This crate has no I/O and no platform dependencies (NFR-5). Everything here
|
|
//! is unit-testable with synthetic telemetry, and it must stay that way — BLE
|
|
//! lives in `bikecontrol-ble`, file writing in `bikecontrol-fit`.
|
|
|
|
pub mod energy;
|
|
pub mod gearing;
|
|
pub mod gpx;
|
|
pub mod physics;
|
|
pub mod profile;
|
|
pub mod session;
|
|
pub mod types;
|
|
|
|
pub use profile::{Block, Channel, Extent, Profile, Segment, Waveform};
|
|
pub use gearing::{Gearing, VirtualCassette};
|
|
pub use session::{RideSession, SessionEvent};
|
|
pub use types::{
|
|
ConnectionState, ControlMode, ControlTarget, RideSnapshot, RiderConfig, SafetyLimits, Telemetry,
|
|
};
|