feat: track trainer targets in state for reconnect

pull/3/head
lambda 1 week ago
parent c7e1b3d9fb
commit f99b79feab
No known key found for this signature in database
GPG Key ID: CF45A8EE158BBCB6

@ -16,7 +16,7 @@ use crate::ble::{BleSource, MockSource, SensorSource};
use crate::commands::Command;
use crate::device::Device;
use crate::device_repo::{repo_from_devices, Repo};
use crate::state::State;
use crate::state::{State, TrainerTargets};
use crate::telemetry::Telemetry;
use btleplug::api::Manager as ApiManager;
use btleplug::platform::Manager as BleManager;
@ -227,6 +227,7 @@ pub fn run() {
devices: RwLock::new(Vec::new()),
trainer: Mutex::new(None),
streams: Mutex::new(std::collections::HashMap::new()),
trainer_targets: Mutex::new(TrainerTargets::default()),
});
Ok::<(), Box<dyn std::error::Error>>(())
})

@ -6,6 +6,13 @@ use tauri::async_runtime::JoinHandle;
use crate::ble::SensorSource;
use crate::device::Device;
/// Last trainer targets, reapplied after reconnect.
#[derive(Default)]
pub struct TrainerTargets {
pub power: Option<i16>, // watts
pub cadence: Option<u16>, // rpm (raw, as entered by user)
}
pub struct State {
pub source: Arc<dyn SensorSource>,
/// Все найденные при скане устройства (для поиска по id при подключении).
@ -14,4 +21,6 @@ pub struct State {
pub trainer: Mutex<Option<String>>,
/// Потоки телеметрии по категориям ("hr"/"cadence"/"trainer")
pub streams: Mutex<HashMap<String, JoinHandle<()>>>,
/// Last trainer targets, reapplied after reconnect.
pub trainer_targets: Mutex<TrainerTargets>,
}

Loading…
Cancel
Save