Files

41 lines
897 B
C

#include "ygg_lock.h"
#include <freertos/semphr.h>
static SemaphoreHandle_t s_i2c_mutex = NULL;
static SemaphoreHandle_t s_lvgl_mutex = NULL;
void ygg_lock_init(void) {
if (s_i2c_mutex == NULL) {
s_i2c_mutex = xSemaphoreCreateMutex();
}
if (s_lvgl_mutex == NULL) {
s_lvgl_mutex = xSemaphoreCreateMutex();
}
}
bool ygg_i2c_lock_take(TickType_t timeout) {
if (s_i2c_mutex == NULL) {
return false;
}
return xSemaphoreTake(s_i2c_mutex, timeout) == pdTRUE;
}
void ygg_i2c_lock_give(void) {
if (s_i2c_mutex != NULL) {
xSemaphoreGive(s_i2c_mutex);
}
}
bool ygg_lvgl_lock_take(TickType_t timeout) {
if (s_lvgl_mutex == NULL) {
return false;
}
return xSemaphoreTake(s_lvgl_mutex, timeout) == pdTRUE;
}
void ygg_lvgl_lock_give(void) {
if (s_lvgl_mutex != NULL) {
xSemaphoreGive(s_lvgl_mutex);
}
}