Skip to main content

r_d_inclita_sofware/
main.rs

1#![no_std]
2#![no_main]
3#![warn(unused_crate_dependencies)]
4mod hardware_cfg;
5mod sensors;
6mod storage;
7mod telemetry;
8use crate::hardware_cfg::Board;
9use cortex_m as _;
10use defmt::*; // to use debuger shit
11use embassy_executor::Spawner;
12use embassy_stm32::gpio::Output;
13use embassy_time::Timer;
14use {defmt_rtt as _, panic_probe as _};
15
16#[embassy_executor::main]
17async fn main(spawner: Spawner) {
18    let config = Board::set_clock();
19    let p = embassy_stm32::init(config);
20
21    info!("Hello from STM32 :) ");
22
23    let board = Board::new(p);
24    //Spawning tasks
25    spawner
26        .spawn(another_blinker(board.led_other_function))
27        .unwrap();
28
29    spawner
30        .spawn(storage::sd_card::sd_logger_task(board.sd_spi, board.sd_cs))
31        .unwrap();
32    #[cfg(not(feature = "mock-sensors"))]
33    {
34        info!("Compiling in FLIGHT MODE");
35        spawner
36            .spawn(sensors::bno055::bno055_logger_task(board.imu))
37            .unwrap();
38        spawner
39            .spawn(sensors::ms5611::ms5611_task(
40                board.altimeter,
41                board.altimeter_cs,
42            ))
43            .unwrap();
44        spawner
45            .spawn(sensors::adxl345::adxl343_task(board.accel))
46            .unwrap();
47        //spawner
48        //  .spawn(telemetry::lora::lora_task(
49        //    board.lora_spi,
50        //  board.lora_cs,
51        //board.lora_reset,
52        //))
53        // .unwrap();
54        spawner
55            .spawn(sensors::gps::gps_task(board.gps_uart))
56            .unwrap();
57    }
58
59    // --- TEST MODE: Mock Sensors ---
60    #[cfg(feature = "mock-sensors")]
61    {
62        info!("Compiling in TEST MODE");
63        spawner.spawn(sensors::mock::mock_imu_task()).unwrap();
64        spawner.spawn(sensors::mock::mock_baro_task()).unwrap();
65    }
66}
67#[embassy_executor::task]
68async fn another_blinker(mut led: Output<'static>) {
69    loop {
70        led.set_high();
71        Timer::after_millis(1000).await;
72        led.set_low();
73        Timer::after_millis(1000).await;
74    }
75}