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}