freertos_next/
shim.rs

1#![allow(non_snake_case)]
2
3use crate::base::*;
4
5unsafe extern "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    pub fn freertos_rs_xTaskGetTickCountFromISR() -> FreeRtosTickType;
27
28    pub fn freertos_rs_create_recursive_mutex() -> FreeRtosSemaphoreHandle;
29    pub fn freertos_rs_create_mutex() -> FreeRtosSemaphoreHandle;
30
31    pub fn freertos_rs_take_recursive_semaphore(
32        semaphore: FreeRtosSemaphoreHandle,
33        max: FreeRtosTickType,
34    ) -> FreeRtosBaseType;
35    pub fn freertos_rs_take_semaphore(
36        semaphore: FreeRtosSemaphoreHandle,
37        max: FreeRtosTickType,
38    ) -> FreeRtosBaseType;
39    pub fn freertos_rs_give_semaphore(semaphore: FreeRtosSemaphoreHandle) -> FreeRtosBaseType;
40    pub fn freertos_rs_give_recursive_semaphore(
41        semaphore: FreeRtosSemaphoreHandle,
42    ) -> FreeRtosBaseType;
43
44    pub fn freertos_rs_take_semaphore_isr(
45        semaphore: FreeRtosSemaphoreHandle,
46        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
47    ) -> FreeRtosBaseType;
48    pub fn freertos_rs_give_semaphore_isr(
49        semaphore: FreeRtosSemaphoreHandle,
50        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
51    ) -> FreeRtosBaseType;
52
53    pub fn freertos_rs_delete_semaphore(semaphore: FreeRtosSemaphoreHandle);
54
55    pub fn freertos_rs_create_binary_semaphore() -> FreeRtosSemaphoreHandle;
56    pub fn freertos_rs_create_counting_semaphore(
57        max: FreeRtosUBaseType,
58        initial: FreeRtosUBaseType,
59    ) -> FreeRtosSemaphoreHandle;
60
61    pub fn freertos_rs_queue_create(
62        length: FreeRtosUBaseType,
63        item_size: FreeRtosUBaseType,
64    ) -> FreeRtosQueueHandle;
65    pub fn freertos_rs_queue_delete(queue: FreeRtosQueueHandle);
66    pub fn freertos_rs_queue_send(
67        queue: FreeRtosQueueHandle,
68        item: FreeRtosVoidPtr,
69        max_wait: FreeRtosTickType,
70    ) -> FreeRtosUBaseType;
71    pub fn freertos_rs_queue_receive(
72        queue: FreeRtosQueueHandle,
73        item: FreeRtosMutVoidPtr,
74        max_wait: FreeRtosTickType,
75    ) -> FreeRtosUBaseType;
76    pub fn freertos_rs_queue_messages_waiting(queue: FreeRtosQueueHandle) -> FreeRtosUBaseType;
77
78    pub fn freertos_rs_queue_send_isr(
79        queue: FreeRtosQueueHandle,
80        item: FreeRtosVoidPtr,
81        xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr,
82    ) -> FreeRtosUBaseType;
83    pub fn freertos_rs_isr_yield(xHigherPriorityTaskWoken: FreeRtosBaseType);
84
85    pub fn freertos_rs_task_yield();
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_is_in_isr() -> FreeRtosBaseType;
170    pub fn freertos_rs_enter_critical();
171    pub fn freertos_rs_exit_critical();
172    pub fn freertos_rs_enter_critical_from_isr() -> u32;
173    pub fn freertos_rs_exit_critical_from_isr(x: u32);
174
175    pub fn freertos_rs_event_group_create() -> FreeRtosEventGroupHandle;
176    pub fn freertos_rs_event_group_delete(event_group: FreeRtosEventGroupHandle);
177    pub fn freertos_rs_event_group_set_bits(
178        event_group: FreeRtosEventGroupHandle,
179        bits_to_set: FreeRtosEventBitsType,
180    ) -> FreeRtosEventBitsType;
181    pub fn freertos_rs_event_group_get_bits(
182        event_group: FreeRtosEventGroupHandle,
183    ) -> FreeRtosEventBitsType;
184    pub fn freertos_rs_event_group_clear_bits(
185        event_group: FreeRtosEventGroupHandle,
186        bits_to_clear: FreeRtosEventBitsType,
187    ) -> FreeRtosEventBitsType;
188    pub fn freertos_rs_event_group_wait_bits(
189        event_group: FreeRtosEventGroupHandle,
190        bits_to_wait_for: FreeRtosEventBitsType,
191        clear_on_exit: FreeRtosBaseType,
192        wait_for_all_bits: FreeRtosBaseType,
193        ticks_to_wait: FreeRtosTickType,
194    ) -> FreeRtosEventBitsType;
195    pub fn freertos_rs_event_group_sync(
196        event_group: FreeRtosEventGroupHandle,
197        bits_to_set: FreeRtosEventBitsType,
198        bits_to_wait_for: FreeRtosEventBitsType,
199        ticks_to_wait: FreeRtosTickType,
200    ) -> FreeRtosEventBitsType;
201
202    pub fn freertos_rs_get_free_heap_size() -> usize;
203    pub fn freertos_rs_get_minimum_free_heap_size() -> usize;
204    pub fn freertos_rs_reset_minimum_free_heap_size();
205}