Skip to main content

r_d_inclita_sofware/sensors/
mock.rs

1use crate::telemetry::data::{AltimeterData, DATA_CHANNEL, ImuData, LogEvent};
2use defmt::info;
3use embassy_time::{Duration, Instant, Ticker};
4
5#[embassy_executor::task]
6pub async fn mock_imu_task() {
7    info!("Starting MOCK IMU Task (100Hz)...");
8    let mut ticker = Ticker::every(Duration::from_millis(10));
9
10    loop {
11        ticker.next().await;
12
13        let data = ImuData {
14            yaw: 0.0,
15            pitch: 0.0,
16            roll: 0.0,
17            mag_x: 0.0,
18            mag_y: 0.0,
19            mag_z: 0.0,
20            gyro_x: 0.0,
21            gyro_y: 0.0,
22            gyro_z: 0.0,
23            lin_accel_n: 0.0,
24            lin_accel_e: 0.0,
25            lin_accel_d: 0.0,
26            timestamp_ms: Instant::now().as_millis() as u32,
27        };
28
29        DATA_CHANNEL.send(LogEvent::Imu(data)).await;
30    }
31}
32
33#[embassy_executor::task]
34pub async fn mock_baro_task() {
35    info!("Starting MOCK Altimeter Task (50Hz)...");
36    let mut ticker = Ticker::every(Duration::from_millis(20));
37    let pressure = 1013.25;
38
39    loop {
40        ticker.next().await;
41
42        let data = AltimeterData {
43            pressure,
44            altitude: 100.0,
45            temperature: 22.5,
46            timestamp_ms: Instant::now().as_millis() as u32,
47        };
48
49        DATA_CHANNEL.send(LogEvent::Baro(data)).await;
50    }
51}