printhor_hwi_native/
lib.rs1#![cfg_attr(feature="niglty", feature(trait_alias))]
2#![cfg_attr(feature="niglty", feature(type_alias_impl_trait))]
3#![allow(stable_features)]
4
5mod board;
6
7pub use log::{trace,debug,info,warn,error};
8
9pub use board::device;
10pub use board::consts;
11pub use board::IODevices;
12pub use board::Controllers;
13pub use board::MotionDevices;
14pub use board::PwmDevices;
15
16pub use board::init;
17pub use board::setup;
18pub use board::heap_current_size;
19pub use board::heap_current_usage_percentage;
20pub use board::stack_reservation_current_size;
21pub use board::MACHINE_BOARD;
22pub use board::MACHINE_TYPE;
23pub use board::MACHINE_PROCESSOR;
24pub use board::HEAP_SIZE_BYTES;
25pub use board::MAX_STATIC_MEMORY;
26pub use board::VREF_SAMPLE;
27#[cfg(feature = "with-sdcard")]
28pub use board::SDCARD_PARTITION;
29#[cfg(feature = "with-usbserial")]
30const USBSERIAL_BUFFER_SIZE: usize = 32;
31#[cfg(feature = "with-uart-port-1")]
32const UART_PORT1_BUFFER_SIZE: usize = 32;
33
34static EXECUTOR_HIGH: printhor_hwa_common::TrackedStaticCell<embassy_executor::Executor> = printhor_hwa_common::TrackedStaticCell::new();
35
36struct TokenHolder<S> {
37 token: embassy_executor::SpawnToken<S>
38}
39
40unsafe impl<S> Sync for TokenHolder<S> {}
41unsafe impl<S> Send for TokenHolder<S> {}
42
43#[inline]
44pub fn launch_high_priotity<S: 'static>(token: embassy_executor::SpawnToken<S>) -> Result<(),()> {
45 use thread_priority::*;
46
47 let r = Box::new(TokenHolder {token});
48 let builder = std::thread::Builder::new()
49 .name("isr-high-prio".to_owned());
50 let _ = builder.spawn_with_priority(ThreadPriority::Max,|_| {
51 let executor: &'static mut embassy_executor::Executor = EXECUTOR_HIGH.init("StepperExecutor", embassy_executor::Executor::new());
52 executor.run(move |spawner| {
53 spawner.spawn(
54 r.token
55 ).unwrap();
56 });
57 });
58 Ok(())
59}
60
61#[inline]
62pub fn init_logger() {
63 env_logger::init();
64}
65
66#[inline]
67pub fn sys_reset() {
68 std::process::exit(0);
69}
70
71
72