From 062413725e43d367fd1c4c658a5ab756ae496063 Mon Sep 17 00:00:00 2001 From: Darren Rahnemoon Date: Mon, 10 Nov 2025 14:21:59 -0500 Subject: [PATCH 1/2] fix: delay adc configuration until ADC is ready LED Indicator service --- boards/argus/Makefile.toml | 3 ++ boards/argus/src/led_indicator/mod.rs | 1 + boards/argus/src/led_indicator/service.rs | 33 +++++++++++++++++++ boards/argus/src/lib.rs | 1 + boards/argus/src/main.rs | 16 +++++++-- boards/argus/src/pressure/service.rs | 7 ++-- .../src/pressure/tasks/log_measurements.rs | 2 +- .../tasks/measure_pressure_sensors.rs | 5 +++ boards/argus/src/sd/task.rs | 8 ++++- boards/argus/src/session/service.rs | 3 ++ boards/argus/src/state_machine/service.rs | 5 ++- boards/argus/src/strain/service.rs | 5 ++- .../argus/src/strain/tasks/measure_strain.rs | 5 +++ boards/argus/src/temperature/service.rs | 5 ++- .../tasks/measure_thermocouples.rs | 5 +++ 15 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 boards/argus/Makefile.toml create mode 100644 boards/argus/src/led_indicator/mod.rs create mode 100644 boards/argus/src/led_indicator/service.rs diff --git a/boards/argus/Makefile.toml b/boards/argus/Makefile.toml new file mode 100644 index 0000000..24ab611 --- /dev/null +++ b/boards/argus/Makefile.toml @@ -0,0 +1,3 @@ +[tasks.attach] +command = "probe-rs" +args = ["attach", "--chip", "STM32H733VGTx", "--protocol", "swd", "../../target/thumbv7em-none-eabihf/debug/argus"] \ No newline at end of file diff --git a/boards/argus/src/led_indicator/mod.rs b/boards/argus/src/led_indicator/mod.rs new file mode 100644 index 0000000..1f278a4 --- /dev/null +++ b/boards/argus/src/led_indicator/mod.rs @@ -0,0 +1 @@ +pub mod service; diff --git a/boards/argus/src/led_indicator/service.rs b/boards/argus/src/led_indicator/service.rs new file mode 100644 index 0000000..ac7dd34 --- /dev/null +++ b/boards/argus/src/led_indicator/service.rs @@ -0,0 +1,33 @@ +use defmt::warn; +use embassy_stm32::gpio::{Level, Output, Pin, Speed}; +use embassy_stm32::Peripheral; +use embassy_time::Timer; + +pub struct LedIndicatorService { + pub pins: [Output<'static>; COUNT], +} + +impl LedIndicatorService { + pub fn new(peripherals: [impl Peripheral

+ 'static; COUNT]) -> Self { + let pins: [Output<'static>; COUNT] = peripherals.map(|pin| { + let mut output = Output::new(pin, Level::Low, Speed::Low); + output.set_low(); + output + }); + Self { pins } + } + + pub async fn blink( + &mut self, + index: usize, + ) { + if index >= COUNT { + warn!("LED at an invalid index requested to blink: {}", index); + return; + } + + self.pins[index].set_high(); + Timer::after_millis(30).await; + self.pins[index].set_low(); + } +} diff --git a/boards/argus/src/lib.rs b/boards/argus/src/lib.rs index b7b3724..6f9b5ef 100644 --- a/boards/argus/src/lib.rs +++ b/boards/argus/src/lib.rs @@ -3,6 +3,7 @@ #![no_main] pub mod adc; +pub mod led_indicator; pub mod linear_transformation; pub mod node; pub mod sd; diff --git a/boards/argus/src/main.rs b/boards/argus/src/main.rs index 8bd1ea2..da4d5cc 100644 --- a/boards/argus/src/main.rs +++ b/boards/argus/src/main.rs @@ -7,6 +7,7 @@ compile_error!("You must enable exactly one of the features: 'pressure', 'temper use argus::adc::service::{AdcConfig, AdcService}; use argus::adc::types::AdcDevice; +use argus::led_indicator::service::LedIndicatorService; use argus::sd::service::SDCardService; use argus::sd::task::sd_card_task; use argus::serial::service::SerialService; @@ -35,6 +36,7 @@ static SD_CARD_SERVICE: StaticCell> = StaticCell::new( static ADC_SERVICE: StaticCell>> = StaticCell::new(); static SERIAL_SERVICE: StaticCell> = StaticCell::new(); static SESSION_SERVICE: StaticCell> = StaticCell::new(); +static LED_INDICATOR_SERVICE: StaticCell>> = StaticCell::new(); static STATE_MACHINE_ORCHESTRATOR: StaticCell> = StaticCell::new(); #[cfg(feature = "temperature")] @@ -58,6 +60,10 @@ async fn main(spawner: Spawner) { peripherals.PC4, ))); let session_service = SESSION_SERVICE.init(AsyncMutex::new(SessionService::new(sd_card_service))); + let led_indicator_service = LED_INDICATOR_SERVICE.init(AsyncMutex::new(LedIndicatorService::new([ + peripherals.PA3.degrade(), + peripherals.PA2.degrade(), + ]))); let adc_service = ADC_SERVICE.init(AsyncMutex::new(AdcService::new( peripherals.SPI4, peripherals.PE2, @@ -96,7 +102,7 @@ async fn main(spawner: Spawner) { let state_machine_orchestrator = STATE_MACHINE_ORCHESTRATOR.init(AsyncMutex::new(StateMachineOrchestrator::new())); // General tasks that must run regardless of board type - spawner.must_spawn(sd_card_task(sd_card_service)); + spawner.must_spawn(sd_card_task(sd_card_service, led_indicator_service)); // Spawn tasks needed for temperature board #[cfg(feature = "temperature")] @@ -122,6 +128,7 @@ async fn main(spawner: Spawner) { spawner.must_spawn(tasks::measure_thermocouples( StateMachineWorker::new(state_machine_orchestrator), temperature_service, + led_indicator_service, )); spawner.must_spawn(tasks::log_measurements( StateMachineWorker::new(state_machine_orchestrator), @@ -155,6 +162,7 @@ async fn main(spawner: Spawner) { spawner.must_spawn(tasks::measure_pressure_sensors( StateMachineWorker::new(state_machine_orchestrator), pressure_service, + led_indicator_service, )); spawner.must_spawn(tasks::measure_manifold_temperature( StateMachineWorker::new(state_machine_orchestrator), @@ -189,7 +197,11 @@ async fn main(spawner: Spawner) { // Setup the strain service before starting the tasks strain_service.lock().await.setup().await.unwrap(); - spawner.must_spawn(tasks::measure_strain(StateMachineWorker::new(state_machine_orchestrator), strain_service)); + spawner.must_spawn(tasks::measure_strain( + StateMachineWorker::new(state_machine_orchestrator), + strain_service, + led_indicator_service, + )); spawner.must_spawn(tasks::log_measurements( StateMachineWorker::new(state_machine_orchestrator), serial_service, diff --git a/boards/argus/src/pressure/service.rs b/boards/argus/src/pressure/service.rs index bb85c93..288e448 100644 --- a/boards/argus/src/pressure/service.rs +++ b/boards/argus/src/pressure/service.rs @@ -1,5 +1,5 @@ -use defmt::error; -use embassy_time::Instant; +use defmt::{error, info}; +use embassy_time::{Instant, Timer}; use strum::EnumCount; use crate::adc::driver::types::{DataRate, Filter, Gain, ReferenceRange}; @@ -44,6 +44,9 @@ impl PressureService { } pub async fn setup(&mut self) -> Result<(), PressureServiceError> { + // Delay for 100ms to ensure ADCs are powered up + Timer::after_millis(100).await; + for driver in self.adc_service.lock().await.drivers.iter_mut() { driver.reference_range = ReferenceRange::Avdd; driver.data_rate = DataRate::Sps100; diff --git a/boards/argus/src/pressure/tasks/log_measurements.rs b/boards/argus/src/pressure/tasks/log_measurements.rs index d7de373..3c1a8cb 100644 --- a/boards/argus/src/pressure/tasks/log_measurements.rs +++ b/boards/argus/src/pressure/tasks/log_measurements.rs @@ -73,5 +73,5 @@ fn get_path_from_adc_and_channel( adc_index: usize, channel: usize, ) -> FileName { - format!("T_{}_{}.csv", adc_index, channel).unwrap() as FileName + format!("P_{}_{}.csv", adc_index, channel).unwrap() as FileName } diff --git a/boards/argus/src/pressure/tasks/measure_pressure_sensors.rs b/boards/argus/src/pressure/tasks/measure_pressure_sensors.rs index 49ceed7..eb204ea 100644 --- a/boards/argus/src/pressure/tasks/measure_pressure_sensors.rs +++ b/boards/argus/src/pressure/tasks/measure_pressure_sensors.rs @@ -4,6 +4,7 @@ use embassy_futures::yield_now; use strum::EnumCount; use crate::adc::types::AdcDevice; +use crate::led_indicator::service::LedIndicatorService; use crate::pressure::service::{PressureService, PRESSURE_READING_QUEUE}; use crate::pressure::types::PressureChannel; use crate::state_machine::service::StateMachineWorker; @@ -15,6 +16,7 @@ use crate::utils::types::AsyncMutex; pub async fn measure_pressure_sensors( mut worker: StateMachineWorker, pressure_service_mutex: &'static AsyncMutex>, + led_indicator_service_mutex: &'static AsyncMutex>, ) { worker .run_while(&[States::Recording], async |_| -> Result<(), ()> { @@ -36,6 +38,9 @@ pub async fn measure_pressure_sensors( } } + // Blink LED to indicate measurement cycle complete + led_indicator_service_mutex.lock().await.blink(1).await; + // Yield to allow other tasks to run, especially the NTC measurement task yield_now().await; Ok(()) diff --git a/boards/argus/src/sd/task.rs b/boards/argus/src/sd/task.rs index 46eb944..cab2563 100644 --- a/boards/argus/src/sd/task.rs +++ b/boards/argus/src/sd/task.rs @@ -1,16 +1,22 @@ use defmt::{debug, error}; +use crate::led_indicator::service::LedIndicatorService; use crate::sd::service::{SDCardService, SD_CARD_WRITE_QUEUE}; use crate::utils::types::AsyncMutex; #[embassy_executor::task] -pub async fn sd_card_task(sd_card_service_mutex: &'static AsyncMutex) { +pub async fn sd_card_task( + sd_card_service_mutex: &'static AsyncMutex, + led_indicator_service_mutex: &'static AsyncMutex>, +) { debug!("Starting SD card write loop."); loop { let (scope, path, line) = SD_CARD_WRITE_QUEUE.receiver().receive().await; if let Err(error) = sd_card_service_mutex.lock().await.write(scope, path, line) { error!("Could not write to SD card: {}", error); continue; + } else { + led_indicator_service_mutex.lock().await.blink(0).await; } } } diff --git a/boards/argus/src/session/service.rs b/boards/argus/src/session/service.rs index 7d4e050..c84aa7b 100644 --- a/boards/argus/src/session/service.rs +++ b/boards/argus/src/session/service.rs @@ -7,6 +7,9 @@ use crate::sd::service::SDCardService; use crate::sd::types::{FileName, Line, OperationScope, SdCardError}; use crate::utils::types::AsyncMutex; +/// Handles session management for data logging. +/// It reads the last session number from a session.txt file on the SD card, increments it, +/// and writes it back for the next boot. It also keeps track of the current session in memory. pub struct SessionService { pub current_session: Option, sd_card_service: &'static AsyncMutex, diff --git a/boards/argus/src/state_machine/service.rs b/boards/argus/src/state_machine/service.rs index 80a922e..7f00a1c 100644 --- a/boards/argus/src/state_machine/service.rs +++ b/boards/argus/src/state_machine/service.rs @@ -68,7 +68,10 @@ impl StateMachineWorker { where Act: FnMut(&'static AsyncMutex) -> Fut, Fut: Future>, { - self.current_state.changed_and(|state| desired_states.contains(state)).await; + // Wait until we're in one of the desired states + if !desired_states.contains(&self.current_state.get().await) { + self.current_state.changed_and(|state| desired_states.contains(state)).await; + } action(self.orchestrator).await } diff --git a/boards/argus/src/strain/service.rs b/boards/argus/src/strain/service.rs index 83d7692..d5323a1 100644 --- a/boards/argus/src/strain/service.rs +++ b/boards/argus/src/strain/service.rs @@ -1,5 +1,5 @@ use defmt::error; -use embassy_time::Instant; +use embassy_time::{Instant, Timer}; use strum::EnumCount; use crate::adc::driver::types::{DataRate, Filter, Gain, ReferenceRange}; @@ -44,6 +44,9 @@ impl StrainService { } pub async fn setup(&mut self) -> Result<(), StrainServiceError> { + // Delay for 100ms to ensure ADCs are powered up + Timer::after_millis(100).await; + for driver in self.adc_service.lock().await.drivers.iter_mut() { driver.reference_range = ReferenceRange::Avdd; driver.data_rate = DataRate::Sps100; diff --git a/boards/argus/src/strain/tasks/measure_strain.rs b/boards/argus/src/strain/tasks/measure_strain.rs index 8af1270..977edfa 100644 --- a/boards/argus/src/strain/tasks/measure_strain.rs +++ b/boards/argus/src/strain/tasks/measure_strain.rs @@ -4,6 +4,7 @@ use embassy_futures::yield_now; use strum::EnumCount; use crate::adc::types::AdcDevice; +use crate::led_indicator::service::LedIndicatorService; use crate::state_machine::service::StateMachineWorker; use crate::state_machine::types::States; use crate::strain::service::{StrainService, STRAIN_READING_QUEUE}; @@ -15,6 +16,7 @@ use crate::utils::types::AsyncMutex; pub async fn measure_strain( mut worker: StateMachineWorker, strain_service_mutex: &'static AsyncMutex>, + led_indicator_service_mutex: &'static AsyncMutex>, ) { worker .run_while(&[States::Recording], async |_| -> Result<(), ()> { @@ -36,6 +38,9 @@ pub async fn measure_strain( } } + // Blink LED to indicate measurement cycle complete + led_indicator_service_mutex.lock().await.blink(1).await; + // Yield to allow other tasks to run, especially the NTC measurement task yield_now().await; Ok(()) diff --git a/boards/argus/src/temperature/service.rs b/boards/argus/src/temperature/service.rs index b5ff416..4ba15c2 100644 --- a/boards/argus/src/temperature/service.rs +++ b/boards/argus/src/temperature/service.rs @@ -1,5 +1,5 @@ use defmt::{error, info}; -use embassy_time::Instant; +use embassy_time::{Instant, Timer}; use strum::EnumCount; use crate::adc::driver::types::{AnalogChannel, DataRate, Filter, Gain, ReferenceRange}; @@ -52,6 +52,9 @@ impl TemperatureService { } pub async fn setup(&mut self) -> Result<(), TemperatureServiceError> { + // Delay for 100ms to ensure ADCs are powered up + Timer::after_millis(100).await; + for driver in self.adc_service.lock().await.drivers.iter_mut() { driver.reference_range = ReferenceRange::Avdd; driver.data_rate = DataRate::Sps100; diff --git a/boards/argus/src/temperature/tasks/measure_thermocouples.rs b/boards/argus/src/temperature/tasks/measure_thermocouples.rs index 13d38bf..fe749ad 100644 --- a/boards/argus/src/temperature/tasks/measure_thermocouples.rs +++ b/boards/argus/src/temperature/tasks/measure_thermocouples.rs @@ -4,6 +4,7 @@ use embassy_futures::yield_now; use strum::EnumCount; use crate::adc::types::AdcDevice; +use crate::led_indicator::service::LedIndicatorService; use crate::state_machine::service::StateMachineWorker; use crate::state_machine::types::States; use crate::temperature::service::{TemperatureService, THERMOCOUPLE_READING_QUEUE}; @@ -15,6 +16,7 @@ use crate::utils::types::AsyncMutex; pub async fn measure_thermocouples( mut worker: StateMachineWorker, temperature_service_mutex: &'static AsyncMutex>, + led_indicator_service_mutex: &'static AsyncMutex>, ) { worker .run_while(&[States::Recording], async |_| -> Result<(), ()> { @@ -36,6 +38,9 @@ pub async fn measure_thermocouples( } } + // Blink LED to indicate measurement cycle complete + led_indicator_service_mutex.lock().await.blink(1).await; + // Yield to allow other tasks to run, especially the RTD measurement task yield_now().await; Ok(()) From a6420da27a6e63c75e198e163b765551090d20bf Mon Sep 17 00:00:00 2001 From: Darren Rahnemoon Date: Mon, 10 Nov 2025 15:28:59 -0500 Subject: [PATCH 2/2] fix: remove mono --- boards/argus/mono.txt | 242 ------------------------------------------ 1 file changed, 242 deletions(-) delete mode 100644 boards/argus/mono.txt diff --git a/boards/argus/mono.txt b/boards/argus/mono.txt deleted file mode 100644 index 0b39ea7..0000000 --- a/boards/argus/mono.txt +++ /dev/null @@ -1,242 +0,0 @@ -MONO_ITEM fn <[core::mem::MaybeUninit; 2] as core::array::iter::iter_inner::PartialDrop>::partial_drop @@ argus.50d060a3841ac835-cgu.1[External] -MONO_ITEM fn <[core::mem::MaybeUninit] as core::array::iter::iter_inner::PartialDrop>::partial_drop @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn , embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>> as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ; 2]> as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::_format_data @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::_format_tag @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::lock::{closure#0}}> as core::future::Future>::poll @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::lock::{closure#0}}> as core::future::IntoFuture>::into_future @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn , embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>; 2]> as core::ops::FromResidual>::from_residual @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn , embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>; 2]> as core::ops::Try>::from_output @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn , embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>> as core::ops::Try>::branch @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::drop @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::_format_data @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::_format_tag @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::_pin @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::_port @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::block @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::set_high @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::set_low @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::Drop>::drop::{closure#0} @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as embedded_hal::digital::OutputPin>::set_high @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::number @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::enable @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::degrade @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn >::into @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::clone_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::into_ref::<'_> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::pin_port @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::set_as_af @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::info @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::info @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::info @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::state @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::fmt @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::fmt @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as embassy_stm32::interrupt::typelevel::Handler<::Interrupt>>::on_interrupt @@ argus.50d060a3841ac835-cgu.0[External] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn ::lock::<(), {closure@embassy_sync::blocking_mutex::Mutex>::lock<(), {closure@ as core::ops::Drop>::drop::{closure#0}}>::{closure#0}}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn ::lock::>::lock::lock::{closure#0}::{closure#0}}>::{closure#0}}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::DerefMut>::deref_mut @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::Drop>::drop @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn as core::ops::Drop>::drop::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn UART7 @@ argus.50d060a3841ac835-cgu.1[External] -MONO_ITEM fn ____embassy_main_task::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn __cortex_m_rt_main @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn __cortex_m_rt_main::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn __cortex_m_rt_main_trampoline @@ argus.50d060a3841ac835-cgu.1[External] -MONO_ITEM fn __embassy_main @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn __embassy_main::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn argus::adc::service::AdcService::<2>::new:: @@ argus.50d060a3841ac835-cgu.0[External] -MONO_ITEM fn argus::adc::service::AdcService::<2>::new::::{closure#0} @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn argus::sd::service::SDCardService::new:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn argus::serial::service::SerialService::new:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn argus::state_machine::service::StateMachineOrchestrator::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::array::Guard::<'_, argus::adc::driver::Ads1262, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>::push_unchecked @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::array::iter::iter_inner::PolymorphicIter::<[core::mem::MaybeUninit]>::next @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::array::try_from_fn::, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>, 2, {closure@core::ops::try_trait::NeverShortCircuit, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>::wrap_mut_1::new::{closure#0}}>::{closure#0}}> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::array::try_from_fn_erased::, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>, core::ops::try_trait::NeverShortCircuit, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>, {closure@core::ops::try_trait::NeverShortCircuit, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>::wrap_mut_1::new::{closure#0}}>::{closure#0}}> @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::num::::unchecked_add::precondition_check @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ops::try_trait::NeverShortCircuit::, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>::wrap_mut_1::::new::{closure#0}}>::{closure#0} @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::pin::Pin::<&mut core::future::PollFn<{closure@embassy_sync::mutex::Mutex::lock::{closure#0}}>>::new_unchecked @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>> - shim(Some(argus::adc::driver::Ads1262, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>> - shim(Some(core::array::Guard<'_, argus::adc::driver::Ads1262, embassy_stm32::gpio::Output<'_>>, embassy_stm32::gpio::Input<'_>, embassy_stm32::gpio::Output<'_>, embassy_stm32::gpio::Output<'_>>>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(core::array::IntoIter)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::; 2]>> - shim(Some(core::array::iter::iter_inner::PolymorphicIter<[core::mem::MaybeUninit; 2]>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(core::cell::BorrowRefMut<'_>)) @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(core::cell::RefMut<'_, embassy_sync::mutex::State>)) @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place:: - shim(Some(critical_section::with::Guard)) @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::, embassy_stm32::gpio::Output<'_>>> - shim(Some(embassy_embedded_hal::shared_bus::asynch::spi::SpiDevice<'_, embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex, embassy_stm32::spi::Spi<'_, embassy_stm32::mode::Async>, embassy_stm32::gpio::Output<'_>>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::gpio::Flex<'_>)) @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::gpio::Input<'_>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::gpio::Output<'_>)) @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::usart::Uart<'_, embassy_stm32::mode::Async>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::usart::UartRx<'_, embassy_stm32::mode::Async>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_stm32::usart::UartTx<'_, embassy_stm32::mode::Async>)) @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn core::ptr::drop_in_place::> - shim(Some(embassy_sync::mutex::MutexGuard<'_, embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex, argus::state_machine::service::StateMachineOrchestrator>)) @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::ptr::drop_in_place::<{async fn body of ____embassy_main_task()}> - shim(Some({async fn body of ____embassy_main_task()})) @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::result::Result::::unwrap @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::sync::atomic::atomic_compare_exchange:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::sync::atomic::atomic_compare_exchange:: @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn core::sync::atomic::atomic_store:: @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn critical_section::with::<(), {closure@ as core::ops::Drop>::drop::{closure#0}}> @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn defmt::export::fmt:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn defmt::export::fmt:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn defmt::export::make_istr @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::Executor::run::<{closure@boards/argus/src/main.rs:48:1: 48:26}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::Spawner::must_spawn::<{closure@argus::sd::task::sd_card_task::{closure#0}}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::Spawner::must_spawn::<{closure@boards/argus/src/main.rs:48:1: 48:26}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::AvailableTask::<{async fn body of ____embassy_main_task()}>::claim @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::AvailableTask::<{async fn body of ____embassy_main_task()}>::initialize_impl::<{closure@boards/argus/src/main.rs:48:1: 48:26}, {closure@boards/argus/src/main.rs:48:1: 48:26}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::TaskPool::<{async fn body of ____embassy_main_task()}, 1>::spawn_impl::<{closure@boards/argus/src/main.rs:48:1: 48:26}, {closure@boards/argus/src/main.rs:48:1: 48:26}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::TaskStorage::<{async fn body of ____embassy_main_task()}>::poll @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::poll_exited @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_executor::raw::util::UninitCell::<{async fn body of ____embassy_main_task()}>::write_in_place::<{closure@boards/argus/src/main.rs:48:1: 48:26}> @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::dma::AnyChannel>::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::dma::AnyChannel>::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::dma::AnyChannel>::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::dma::AnyChannel>::from @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PA6>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PE5>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PA7>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PE6>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::DMA1_CH1>::request @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PA5>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PE2>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::DMA1_CH0>::request @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::DMA1_CH3>::request @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PE7>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::DMA1_CH2>::request @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::_generated:: for embassy_stm32::peripherals::PE8>::af_num @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::gpio::Input::<'_>::new:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::gpio::Output::<'_>::new:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::gpio::Output::<'_>::new:: @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Async>::enable_and_init @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Async>::enable_and_init::{closure#1} @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Async>::new:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Async>::new_inner:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::blocking_write:: @@ argus.50d060a3841ac835-cgu.0[External] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::enable_and_init @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::enable_and_init::{closure#1} @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::new_blocking:: @@ argus.50d060a3841ac835-cgu.0[External] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::new_inner:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::Spi::<'_, embassy_stm32::mode::Blocking>::set_word_size @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::spi::write_word:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::usart::Uart::<'_, embassy_stm32::mode::Async>::enable_and_configure @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::usart::Uart::<'_, embassy_stm32::mode::Async>::enable_and_configure::{closure#0} @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_stm32::usart::Uart::<'_, embassy_stm32::mode::Async>::new:: @@ argus.50d060a3841ac835-cgu.0[External] -MONO_ITEM fn embassy_stm32::usart::Uart::<'_, embassy_stm32::mode::Async>::new_inner:: @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM fn embassy_sync::blocking_mutex::Mutex::>::lock::<(), {closure@ as core::ops::Drop>::drop::{closure#0}}>::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::blocking_mutex::Mutex::>::lock::::lock::{closure#0}::{closure#0}}>::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::>::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::lock @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::lock::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::lock::{closure#0}::{closure#0} @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embassy_sync::mutex::Mutex::::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn embedded_hal_bus::spi::refcell::RefCellDevice::<'_, embassy_stm32::spi::Spi<'_, embassy_stm32::mode::Blocking>, embassy_stm32::gpio::Output<'_>, embassy_time::delay::Delay>::new @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn portable_atomic::imp::core_atomic::AtomicU8::compare_exchange @@ argus.50d060a3841ac835-cgu.0[Internal] argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>>::init @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::init @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::init @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::init @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::init @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>::uninit @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM fn static_cell::StaticCell::>>::uninit @@ argus.50d060a3841ac835-cgu.0[Internal] -MONO_ITEM static ADC_SERVICE @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM static SD_CARD_SERVICE @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM static SERIAL_SERVICE @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM static SESSION_SERVICE @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM static STATE_MACHINE_ORCHESTRATOR @@ argus.50d060a3841ac835-cgu.1[Internal] -MONO_ITEM static ____embassy_main_task::{closure#0}::DEFMT_LOG_STATEMENT @@ argus.50d060a3841ac835-cgu.1[External] -MONO_ITEM static __embassy_main::POOL @@ argus.50d060a3841ac835-cgu.1[Internal]