freertos_rust/
base.rs

1use core::ffi::c_void;
2
3/// Basic error type for the library.
4#[derive(Copy, Clone, Debug, Eq, PartialEq)]
5pub enum FreeRtosError {
6    OutOfMemory,
7    QueueSendTimeout,
8    QueueReceiveTimeout,
9    MutexTimeout,
10    Timeout,
11    QueueFull,
12    StringConversionError,
13    TaskNotFound,
14    InvalidQueueSize,
15    ProcessorHasShutDown,
16}
17
18pub type FreeRtosVoidPtr = *const c_void;
19pub type FreeRtosMutVoidPtr = *mut c_void;
20pub type FreeRtosCharPtr = *const u8;
21pub type FreeRtosChar = u8;
22
23pub type FreeRtosBaseType = i32;
24pub type FreeRtosUBaseType = u32;
25pub type FreeRtosTickType = u32;
26pub type FreeRtosEventBitsType = u32;
27pub type FreeRtosBaseTypeMutPtr = *mut FreeRtosBaseType;
28
29pub type FreeRtosTaskHandle = *const c_void;
30pub type FreeRtosQueueHandle = *const c_void;
31pub type FreeRtosSemaphoreHandle = *const c_void;
32pub type FreeRtosEventGroupHandle = *const c_void;
33pub type FreeRtosTaskFunction = *const c_void;
34pub type FreeRtosTimerHandle = *const c_void;
35pub type FreeRtosTimerCallback = *const c_void;
36#[allow(dead_code)]
37pub type FreeRtosStackType = *const c_void;
38
39pub type FreeRtosUnsignedLong = u32;
40pub type FreeRtosUnsignedShort = u16;
41
42#[derive(Copy, Clone, Debug)]
43#[repr(C)]
44pub struct FreeRtosTaskStatusFfi {
45    pub handle: FreeRtosTaskHandle,
46    pub task_name: FreeRtosCharPtr,
47    pub task_number: FreeRtosUBaseType,
48    pub task_state: FreeRtosTaskState,
49    pub current_priority: FreeRtosUBaseType,
50    pub base_priority: FreeRtosUBaseType,
51    pub run_time_counter: FreeRtosUnsignedLong,
52    pub stack_base: FreeRtosCharPtr,
53    pub stack_high_water_mark: FreeRtosUnsignedShort,
54}
55
56#[derive(Copy, Clone, Debug)]
57#[repr(u8)]
58pub enum FreeRtosTaskState {
59    /// A task is querying the state of itself, so must be running.
60    Running = 0,
61    /// The task being queried is in a read or pending ready list.
62    Ready = 1,
63    /// The task being queried is in the Blocked state.
64    Blocked = 2,
65    /// The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out.
66    Suspended = 3,
67    /// The task being queried has been deleted, but its TCB has not yet been freed.
68    Deleted = 4,
69}