MeshX 0.3
This repository provides an implementation for Bluetooth Low Energy (BLE) Mesh network nodes. The project allows you to create BLE mesh nodes that can communicate with each other, enabling the development of smart home solutions or other IoT-based applications.
Loading...
Searching...
No Matches
meshx_sem.c
Go to the documentation of this file.
1
12
14#include "freertos/FreeRTOS.h"
15#include "freertos/semphr.h"
16#include "esp_system.h"
17
28{
29 if (sem_handle == NULL)
30 {
31 return MESHX_INVALID_ARG;
32 }
33
34 sem_handle->__sem_handle = xSemaphoreCreateCounting(sem_handle->max_count, sem_handle->init_count);
35
36 if (sem_handle->__sem_handle == NULL)
37 {
38 return MESHX_FAIL;
39 }
40
41 return MESHX_SUCCESS;
42}
43
53{
54 if (sem_handle == NULL)
55 {
56 return MESHX_INVALID_ARG;
57 }
58
59 vSemaphoreDelete(sem_handle->__sem_handle);
60
61 return MESHX_SUCCESS;
62}
63
74meshx_err_t meshx_sem_take(meshx_sem_t *sem_handle, uint32_t delay_ms)
75{
76 if (sem_handle == NULL)
77 {
78 return MESHX_INVALID_ARG;
79 }
80
81 BaseType_t err = xPortInIsrContext() ? xSemaphoreTakeFromISR(sem_handle->__sem_handle, NULL) : xSemaphoreTake(sem_handle->__sem_handle, delay_ms);
82 if(err != pdPASS)
83 {
84 return MESHX_FAIL;
85 }
86
87 return MESHX_SUCCESS;
88}
89
100{
101 if (sem_handle == NULL)
102 {
103 return MESHX_INVALID_ARG;
104 }
105
106 if (xSemaphoreGive(sem_handle->__sem_handle) != pdTRUE)
107 {
108 return MESHX_FAIL;
109 }
110
111 return MESHX_SUCCESS;
112}
113
meshx_err_t
MeshX Error Codes.
Definition meshx_err.h:39
@ MESHX_SUCCESS
Definition meshx_err.h:40
@ MESHX_INVALID_ARG
Definition meshx_err.h:42
@ MESHX_FAIL
Definition meshx_err.h:41
meshx_err_t meshx_sem_create(meshx_sem_t *sem_handle)
Create a MeshX Semaphore.
Definition meshx_sem.c:27
meshx_err_t meshx_sem_delete(meshx_sem_t *sem_handle)
Delete a MeshX Semaphore.
Definition meshx_sem.c:52
meshx_err_t meshx_sem_take(meshx_sem_t *sem_handle, uint32_t delay_ms)
Take a MeshX Semaphore.
Definition meshx_sem.c:74
meshx_err_t meshx_sem_give(meshx_sem_t *sem_handle)
Give a MeshX Semaphore.
Definition meshx_sem.c:99
MeshX Semaphore Interface.
struct meshx_sem meshx_sem_t
MeshX Semaphore Structure.
int init_count
Definition meshx_sem.h:25
void * __sem_handle
Definition meshx_sem.h:27
int max_count
Definition meshx_sem.h:24