forked from ROMEO/obsw
adding mutexes, cleaning up types
This commit is contained in:
@ -10,7 +10,8 @@ void stop_it() { taskENTER_CRITICAL(); }
|
||||
|
||||
// TODO return some error code?
|
||||
void *create_task(TaskFunction_t taskFunction, void *parameter,
|
||||
size_t stack_size) {
|
||||
uint32_t stack_size) {
|
||||
//TODO verify uint32_t vs configSTACK_DEPTH_TYPE
|
||||
TaskHandle_t newTask;
|
||||
BaseType_t result =
|
||||
xTaskCreate(taskFunction, "rust", stack_size, parameter, 4, &newTask);
|
||||
@ -22,6 +23,7 @@ void *create_task(TaskFunction_t taskFunction, void *parameter,
|
||||
}
|
||||
|
||||
void task_delay(uint32_t milliseconds) {
|
||||
//TODO verify uint32_t vs TickType_t
|
||||
vTaskDelay(pdMS_TO_TICKS(milliseconds));
|
||||
}
|
||||
|
||||
@ -29,7 +31,8 @@ void delete_task(void * task){
|
||||
vTaskSuspend(task); //we can not use vDeleteTask as it would free the allocated memory which is forbidden using heap1 (which we use)
|
||||
}
|
||||
|
||||
void *create_queue(size_t length, size_t element_size) {
|
||||
void *create_queue(uint32_t length, uint32_t element_size) {
|
||||
//TODO verify uint32_t vs UBaseType_t
|
||||
QueueHandle_t newQueue = xQueueCreate(length, element_size);
|
||||
return newQueue;
|
||||
}
|
||||
@ -48,4 +51,28 @@ uint8_t queue_send(void *queue, void *message) {
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void *create_mutex() {
|
||||
return xSemaphoreCreateRecursiveMutex();
|
||||
}
|
||||
|
||||
uint8_t take_mutex(void * handle) {
|
||||
// TODO check if global semaphore is free (ie, we are doing multitasking)
|
||||
// if not, pointers are invalid, bail out
|
||||
if (xSemaphoreTakeRecursive(handle, portMAX_DELAY) == pdPASS) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t give_mutex(void * handle) {
|
||||
// TODO check if global semaphore is free (ie, we are doing multitasking)
|
||||
// if not, pointers are invalid, bail out
|
||||
if (xSemaphoreGiveRecursive(handle) == pdPASS) {
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user