adding mutexes, cleaning up types

This commit is contained in:
2023-12-11 22:44:06 +01:00
parent bae91a61d4
commit e585ecafcc
13 changed files with 165 additions and 70 deletions

View File

@ -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;
}
}