freertos_rust/
shim.rs

1#![allow(non_snake_case)]
2
3use crate::base::*;
4
5extern "C" {
6    pub fn freertos_rs_invoke_configASSERT();
7    pub fn freertos_rs_vTaskStartScheduler() -> !;
8    pub fn freertos_rt_xTaskGetSchedulerState() -> FreeRtosBaseType;
9    pub fn freertos_rs_pvPortMalloc(xWantedSize: FreeRtosUBaseType) -> FreeRtosVoidPtr;
10    pub fn freertos_rs_vPortFree(pv: FreeRtosVoidPtr);
11
12    pub fn freertos_rs_sizeof(_type: u8) -> u8;
13
14    pub fn freertos_rs_vTaskDelayUntil(
15        pxPreviousWakeTime: *mut FreeRtosTickType,
16        xTimeIncrement: FreeRtosTickType,
17    );
18    pub fn freertos_rs_vTaskDelay(xTicksToDelay: FreeRtosTickType);
19    #[cfg(feature = "cpu_clock")]
20    pub fn freertos_rs_get_configCPU_CLOCK_HZ() -> FreeRtosUnsignedLong;
21    pub fn freertos_rs_get_portTICK_PERIOD_MS() -> FreeRtosTickType;
22
23    pub fn freertos_rs_get_number_of_tasks() -> FreeRtosUBaseType;
24
25    pub fn freertos_rs_xTaskGetTickCount() -> FreeRtosTickType;
26
27    pub fn freertos_rs_create_recursive_mutex() -> FreeRtosSemaphoreHandle;
28    pub fn freertos_rs_create_mutex() -> FreeRtosSemaphoreHandle;
29
30    pub fn freertos_rs_take_recursive_semaphore(
31        semaphore: FreeRtosSemaphoreHandle,
32        max: FreeRtosTickType,
33    ) -> FreeRtosBaseType;
34    pub fn freertos_rs_take_semaphore(
35        semaphore: FreeRtosSemaphoreHandle,
36        max: FreeRtosTickType,
37    ) -> FreeRtosBaseType;
38    pub fn freertos_rs_give_semaphore(semaphore: FreeRtosSemaphoreHandle) -> FreeRtosBaseType;
39    pub fn freertos_rs_give_recursive_semaphore(
40        semaphore: FreeRtosSemaphoreHandle,
41    ) -> FreeRtosBaseType;
42
43    pub fn freertos_rs_take_semaphore_isr(
44        semaphore: FreeRtosSemaphoreHandle,
45        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
46    ) -> FreeRtosBaseType;
47    pub fn freertos_rs_give_semaphore_isr(
48        semaphore: FreeRtosSemaphoreHandle,
49        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
50    ) -> FreeRtosBaseType;
51
52    pub fn freertos_rs_delete_semaphore(semaphore: FreeRtosSemaphoreHandle);
53
54    pub fn freertos_rs_create_binary_semaphore() -> FreeRtosSemaphoreHandle;
55    pub fn freertos_rs_create_counting_semaphore(
56        max: FreeRtosUBaseType,
57        initial: FreeRtosUBaseType,
58    ) -> FreeRtosSemaphoreHandle;
59
60    pub fn freertos_rs_queue_create(
61        length: FreeRtosUBaseType,
62        item_size: FreeRtosUBaseType,
63    ) -> FreeRtosQueueHandle;
64    pub fn freertos_rs_queue_delete(queue: FreeRtosQueueHandle);
65    pub fn freertos_rs_queue_send(
66        queue: FreeRtosQueueHandle,
67        item: FreeRtosVoidPtr,
68        max_wait: FreeRtosTickType,
69    ) -> FreeRtosUBaseType;
70    pub fn freertos_rs_queue_receive(
71        queue: FreeRtosQueueHandle,
72        item: FreeRtosMutVoidPtr,
73        max_wait: FreeRtosTickType,
74    ) -> FreeRtosUBaseType;
75    pub fn freertos_rs_queue_messages_waiting(
76        queue: FreeRtosQueueHandle,
77    ) -> FreeRtosUBaseType;
78
79    pub fn freertos_rs_queue_send_isr(
80        queue: FreeRtosQueueHandle,
81        item: FreeRtosVoidPtr,
82        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
83    ) -> FreeRtosUBaseType;
84    pub fn freertos_rs_isr_yield(xHigherPriorityTaskWoken: FreeRtosBaseType);
85
86    pub fn freertos_rs_task_notify_take(clear_count: u8, wait: FreeRtosTickType) -> u32;
87    pub fn freertos_rs_task_notify_wait(
88        ulBitsToClearOnEntry: u32,
89        ulBitsToClearOnExit: u32,
90        pulNotificationValue: *mut u32,
91        xTicksToWait: FreeRtosTickType,
92    ) -> FreeRtosBaseType;
93
94    pub fn freertos_rs_task_notify(
95        task: FreeRtosTaskHandle,
96        value: u32,
97        action: u8,
98    ) -> FreeRtosBaseType;
99    pub fn freertos_rs_task_notify_isr(
100        task: FreeRtosTaskHandle,
101        value: u32,
102        action: u8,
103        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
104    ) -> FreeRtosBaseType;
105
106    pub fn freertos_rs_spawn_task(
107        f: extern "C" fn(FreeRtosMutVoidPtr) -> FreeRtosMutVoidPtr,
108        value: FreeRtosMutVoidPtr,
109        name: FreeRtosCharPtr,
110        name_len: u8,
111        stack_size: u16,
112        priority: FreeRtosUBaseType,
113        task_handle: *mut FreeRtosTaskHandle,
114    ) -> FreeRtosUBaseType;
115    pub fn freertos_rs_delete_task(task: FreeRtosTaskHandle);
116    pub fn freertos_rs_suspend_task(task: FreeRtosTaskHandle);
117    pub fn freertos_rs_vTaskSuspendAll();
118    pub fn freertos_rs_xTaskResumeAll() -> FreeRtosBaseType;
119
120    pub fn freertos_rs_uxTaskGetTaskNumber(task_handle: FreeRtosTaskHandle) -> FreeRtosBaseType;
121    pub fn freertos_rs_vTaskSetTaskNumber(
122        task_handle: FreeRtosTaskHandle,
123        value: FreeRtosUBaseType,
124    );
125
126    pub fn freertos_rs_task_get_name(task: FreeRtosTaskHandle) -> FreeRtosCharPtr;
127    pub fn freertos_rs_get_stack_high_water_mark(task: FreeRtosTaskHandle) -> FreeRtosBaseType;
128
129    pub fn freertos_rs_get_current_task() -> FreeRtosTaskHandle;
130    pub fn freertos_rs_get_system_state(
131        tasks: *mut FreeRtosTaskStatusFfi,
132        tasks_len: FreeRtosUBaseType,
133        total_run_time: *mut u32,
134    ) -> FreeRtosUBaseType;
135
136    pub fn freertos_rs_max_wait() -> FreeRtosTickType;
137
138    pub fn freertos_rs_timer_create(
139        name: FreeRtosCharPtr,
140        name_len: u8,
141        period: FreeRtosTickType,
142        auto_reload: u8,
143        timer_id: FreeRtosVoidPtr,
144        callback: extern "C" fn(FreeRtosTimerHandle) -> (),
145    ) -> FreeRtosTimerHandle;
146    pub fn freertos_rs_timer_start(
147        timer: FreeRtosTimerHandle,
148        block_time: FreeRtosTickType,
149    ) -> FreeRtosBaseType;
150    pub fn freertos_rs_timer_start_from_isr(
151        timer: FreeRtosTimerHandle,
152        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
153    ) -> FreeRtosBaseType;
154    pub fn freertos_rs_timer_stop(
155        timer: FreeRtosTimerHandle,
156        block_time: FreeRtosTickType,
157    ) -> FreeRtosBaseType;
158    pub fn freertos_rs_timer_delete(
159        timer: FreeRtosTimerHandle,
160        block_time: FreeRtosTickType,
161    ) -> FreeRtosBaseType;
162    pub fn freertos_rs_timer_change_period(
163        timer: FreeRtosTimerHandle,
164        block_time: FreeRtosTickType,
165        new_period: FreeRtosTickType,
166    ) -> FreeRtosBaseType;
167    pub fn freertos_rs_timer_get_id(timer: FreeRtosTimerHandle) -> FreeRtosVoidPtr;
168
169    pub fn freertos_rs_enter_critical();
170    pub fn freertos_rs_exit_critical();
171
172    pub fn freertos_rs_event_group_create() -> FreeRtosEventGroupHandle;
173    pub fn freertos_rs_event_group_delete(event_group: FreeRtosEventGroupHandle);
174    pub fn freertos_rs_event_group_set_bits(event_group: FreeRtosEventGroupHandle, bits_to_set: FreeRtosEventBitsType) -> FreeRtosEventBitsType;
175    pub fn freertos_rs_event_group_get_bits(event_group: FreeRtosEventGroupHandle) -> FreeRtosEventBitsType;
176    pub fn freertos_rs_event_group_clear_bits(event_group: FreeRtosEventGroupHandle, bits_to_clear: FreeRtosEventBitsType) -> FreeRtosEventBitsType;
177    pub fn freertos_rs_event_group_wait_bits(event_group: FreeRtosEventGroupHandle, bits_to_wait_for: FreeRtosEventBitsType, clear_on_exit: FreeRtosBaseType, wait_for_all_bits: FreeRtosBaseType, ticks_to_wait: FreeRtosTickType) -> FreeRtosEventBitsType;
178    pub fn freertos_rs_event_group_sync(event_group: FreeRtosEventGroupHandle, bits_to_set: FreeRtosEventBitsType, bits_to_wait_for: FreeRtosEventBitsType, ticks_to_wait: FreeRtosTickType) -> FreeRtosEventBitsType;
179}