Added queue wrapper

This commit is contained in:
2021-02-04 11:56:26 +01:00
parent dc67f5661b
commit 14d015052d
10 changed files with 58 additions and 9 deletions

View File

@ -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)

View File

@ -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 {

48
include/wrappers/queue.h Normal file
View File

@ -0,0 +1,48 @@
#pragma once
// espressif includes
#include <freertos/FreeRTOS.h>
#include <freertos/queue.h>
// 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