freertos_rust/
shim.rs

1#![allow(non_snake_case)]
2
3use crate::base::*;
4
5extern {
6    pub fn freertos_rs_invoke_configASSERT();
7    pub fn freertos_rs_vTaskStartScheduler() -> !;
8    pub fn freertos_rs_pvPortMalloc(xWantedSize: FreeRtosUBaseType) -> FreeRtosVoidPtr;
9    pub fn freertos_rs_vPortFree(pv: FreeRtosVoidPtr);
10
11    pub fn freertos_rs_sizeof(_type: u8) -> u8;
12
13    pub fn freertos_rs_vTaskDelayUntil(pxPreviousWakeTime: *mut FreeRtosTickType, xTimeIncrement: FreeRtosTickType);
14    pub fn freertos_rs_vTaskDelay(xTicksToDelay: FreeRtosTickType);
15    pub fn freertos_rs_get_portTICK_PERIOD_MS() -> FreeRtosTickType;
16
17    pub fn freertos_rs_get_number_of_tasks() -> FreeRtosUBaseType;
18
19    pub fn freertos_rs_xTaskGetTickCount() -> FreeRtosTickType;
20
21    pub fn freertos_rs_create_recursive_mutex() -> FreeRtosQueueHandle;
22    pub fn freertos_rs_create_mutex() -> FreeRtosQueueHandle;
23
24    pub fn freertos_rs_take_recursive_mutex(mutex: FreeRtosQueueHandle, max: FreeRtosTickType) -> FreeRtosBaseType;
25    pub fn freertos_rs_take_mutex(mutex: FreeRtosQueueHandle, max: FreeRtosTickType) -> FreeRtosBaseType;
26    pub fn freertos_rs_give_mutex(mutex: FreeRtosQueueHandle) -> FreeRtosBaseType;
27    pub fn freertos_rs_give_recursive_mutex(mutex: FreeRtosQueueHandle) -> FreeRtosBaseType;
28
29    pub fn freertos_rs_delete_semaphore(mutex: FreeRtosQueueHandle);
30
31    pub fn freertos_rs_create_binary_semaphore() -> FreeRtosQueueHandle;
32    pub fn freertos_rs_create_counting_semaphore(max: FreeRtosUBaseType, initial: FreeRtosUBaseType) -> FreeRtosQueueHandle;
33
34    pub fn freertos_rs_queue_create(length: FreeRtosUBaseType, item_size: FreeRtosUBaseType) -> FreeRtosQueueHandle;
35    pub fn freertos_rs_queue_delete(queue: FreeRtosQueueHandle);
36    pub fn freertos_rs_queue_send(queue: FreeRtosQueueHandle, item: FreeRtosVoidPtr, max_wait: FreeRtosTickType) -> FreeRtosUBaseType;
37    pub fn freertos_rs_queue_receive(queue: FreeRtosQueueHandle, item: FreeRtosMutVoidPtr, max_wait: FreeRtosTickType) -> FreeRtosUBaseType;
38
39    pub fn freertos_rs_queue_send_isr(queue: FreeRtosQueueHandle, item: FreeRtosVoidPtr, xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr) -> FreeRtosUBaseType;
40    pub fn freertos_rs_isr_yield();
41
42    pub fn freertos_rs_task_notify_take(clear_count: u8, wait: FreeRtosTickType) -> u32;
43    pub fn freertos_rs_task_notify_wait(ulBitsToClearOnEntry: u32, ulBitsToClearOnExit: u32, pulNotificationValue: *mut u32, xTicksToWait: FreeRtosTickType) -> FreeRtosBaseType;
44
45    pub fn freertos_rs_task_notify(task: FreeRtosTaskHandle, value: u32, action: u8) -> FreeRtosBaseType;
46    pub fn freertos_rs_task_notify_isr(task: FreeRtosTaskHandle, value: u32, action: u8, xHigherPriorityTaskWoken: FreeRtosBaseTypeMutPtr) -> FreeRtosBaseType;
47
48    pub fn freertos_rs_spawn_task(f: extern fn(FreeRtosMutVoidPtr) -> FreeRtosMutVoidPtr, value: FreeRtosMutVoidPtr, name: FreeRtosCharPtr, name_len: u8, stack_size: u16, priority: FreeRtosUBaseType, task_handle: FreeRtosMutTaskHandle) -> FreeRtosUBaseType;
49    pub fn freertos_rs_delete_task(task: FreeRtosTaskHandle);
50    pub fn freertos_rs_task_get_name(task: FreeRtosTaskHandle) -> FreeRtosCharPtr;
51    pub fn freertos_rs_get_stack_high_water_mark(task: FreeRtosTaskHandle) -> FreeRtosBaseType;
52
53    pub fn freertos_rs_get_current_task() -> FreeRtosTaskHandle;
54    pub fn freertos_rs_get_system_state(tasks: *mut FreeRtosTaskStatusFfi, tasks_len: FreeRtosUBaseType, total_run_time: *mut u32) -> FreeRtosUBaseType;
55
56    pub fn freertos_rs_max_wait() -> FreeRtosTickType;
57
58    pub fn freertos_rs_timer_create(name: FreeRtosCharPtr, name_len: u8, period: FreeRtosTickType, auto_reload: u8, timer_id: FreeRtosVoidPtr, callback: extern fn(FreeRtosTimerHandle) -> ()) -> FreeRtosTimerHandle;
59    pub fn freertos_rs_timer_start(timer: FreeRtosTimerHandle, block_time: FreeRtosTickType) -> FreeRtosBaseType;
60    pub fn freertos_rs_timer_stop(timer: FreeRtosTimerHandle, block_time: FreeRtosTickType) -> FreeRtosBaseType;
61    pub fn freertos_rs_timer_delete(timer: FreeRtosTimerHandle, block_time: FreeRtosTickType) -> FreeRtosBaseType;
62    pub fn freertos_rs_timer_change_period(timer: FreeRtosTimerHandle, block_time: FreeRtosTickType, new_period: FreeRtosTickType) -> FreeRtosBaseType;
63    pub fn freertos_rs_timer_get_id(timer: FreeRtosTimerHandle) -> FreeRtosVoidPtr;
64
65    pub fn freertos_rs_enter_critical();
66    pub fn freertos_rs_exit_critical();
67}