r_d_inclita_sofware/sensors/
mock.rs1use 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}