Added queue wrapper
This commit is contained in:
@ -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)
|
||||
|
@ -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
48
include/wrappers/queue.h
Normal 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
|
Reference in New Issue
Block a user