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}