diff --git a/CMakeLists.txt b/CMakeLists.txt index 344e014..0e8ea6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,16 @@ set(headers - include/binary_semaphore.h - include/counting_semaphore.h - include/esprandom.h - include/event_group.h - include/http_client.h include/lockhelper.h include/lockingqueue.h - include/mutex_semaphore.h include/recursivelockhelper.h - include/recursive_mutex_semaphore.h - include/websocket_client.h + include/esprandom.h + include/wrappers/binary_semaphore.h + include/wrappers/counting_semaphore.h + include/wrappers/event_group.h + include/wrappers/http_client.h + include/wrappers/mutex_semaphore.h + include/wrappers/queue.h + include/wrappers/recursive_mutex_semaphore.h + include/wrappers/websocket_client.h ) idf_component_register(INCLUDE_DIRS include SRCS ${headers} REQUIRES freertos esp_system esp_http_client esp_websocket_client cpputils) diff --git a/include/lockingqueue.h b/include/lockingqueue.h index 35b4c75..d9855ed 100644 --- a/include/lockingqueue.h +++ b/include/lockingqueue.h @@ -10,7 +10,7 @@ // local includes #include "delayedconstruction.h" -#include "recursive_mutex_semaphore.h" +#include "wrappers/recursive_mutex_semaphore.h" #include "recursivelockhelper.h" namespace espcpputils { diff --git a/include/binary_semaphore.h b/include/wrappers/binary_semaphore.h similarity index 100% rename from include/binary_semaphore.h rename to include/wrappers/binary_semaphore.h diff --git a/include/counting_semaphore.h b/include/wrappers/counting_semaphore.h similarity index 100% rename from include/counting_semaphore.h rename to include/wrappers/counting_semaphore.h diff --git a/include/event_group.h b/include/wrappers/event_group.h similarity index 100% rename from include/event_group.h rename to include/wrappers/event_group.h diff --git a/include/http_client.h b/include/wrappers/http_client.h similarity index 100% rename from include/http_client.h rename to include/wrappers/http_client.h diff --git a/include/mutex_semaphore.h b/include/wrappers/mutex_semaphore.h similarity index 100% rename from include/mutex_semaphore.h rename to include/wrappers/mutex_semaphore.h diff --git a/include/wrappers/queue.h b/include/wrappers/queue.h new file mode 100644 index 0000000..e3c2234 --- /dev/null +++ b/include/wrappers/queue.h @@ -0,0 +1,48 @@ +#pragma once + +// espressif includes +#include +#include + +// local includes +#include "cppmacros.h" + +namespace espcpputils { +class queue +{ + CPP_DISABLE_COPY_MOVE(queue) + +public: + queue(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize) : + handle{xQueueCreate(uxQueueLength, uxItemSize)} + {} + + ~queue() { if (handle) vQueueDelete(handle); } + + BaseType_t send(const void * pvItemToQueue, TickType_t xTicksToWait) { return xQueueSend(handle, pvItemToQueue, xTicksToWait); } + + BaseType_t sendToBack(const void * pvItemToQueue, TickType_t xTicksToWait) { return xQueueSendToBack(handle, pvItemToQueue, xTicksToWait); } + + BaseType_t sendToFront(const void * pvItemToQueue, TickType_t xTicksToWait) { return xQueueSendToFront(handle, pvItemToQueue, xTicksToWait); } + + BaseType_t receive(void *pvBuffer, TickType_t xTicksToWait) { return xQueueReceive(handle, pvBuffer, xTicksToWait); } + + UBaseType_t messagesWaiting() const { return uxQueueMessagesWaiting(handle); } + + UBaseType_t spacesAvailable() const { return SpacesAvailable(handle); } + + BaseType_t reset() { return xQueueReset(handle); } + + BaseType_t overwrite(const void * pvItemToQueue) { return xQueueOverwrite(handle, pvItemToQueue); } + + BaseType_t peek(void *pvBuffer, TickType_t xTicksToWait) const { return xQueuePeek(handle, pvBuffer, xTicksToWait); } + + void addToRegistry(char *pcQueueName) { return vQueueAddToRegistry(handle, pcQueueName); } + + void unregisterQueue() { return vQueueUnregisterQueue(handle); } + + const char *getName() const { return pcQueueGetName(handle); } + + const QueueHandle_t handle; +}; +} // namespace espcpputils diff --git a/include/recursive_mutex_semaphore.h b/include/wrappers/recursive_mutex_semaphore.h similarity index 100% rename from include/recursive_mutex_semaphore.h rename to include/wrappers/recursive_mutex_semaphore.h diff --git a/include/websocket_client.h b/include/wrappers/websocket_client.h similarity index 100% rename from include/websocket_client.h rename to include/wrappers/websocket_client.h