QueueManager & Master: Base for queues.
This commit is contained in:
32
source/shoh/src/threads/common/QueueManager.cpp
Normal file
32
source/shoh/src/threads/common/QueueManager.cpp
Normal file
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* QueueManager.cpp
|
||||
*
|
||||
* Created on: 24 Apr 2023
|
||||
* Author: tylen
|
||||
*/
|
||||
|
||||
#include "ThreadCommon.h"
|
||||
|
||||
ThreadCommon::QueueManager::QueueManager() {}
|
||||
|
||||
bool ThreadCommon::QueueManager::createQueue(size_t queue_length, size_t item_size, Queue_id qid)
|
||||
{
|
||||
QueueHandle_t queue_to_create;
|
||||
if ((queue_to_create = xQueueCreate(queue_length, item_size)))
|
||||
{
|
||||
queues.insert({qid, queue_to_create});
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QueueHandle_t ThreadCommon::QueueManager::getQueue(Queue_id qid)
|
||||
{
|
||||
const auto pos = queues.find(qid);
|
||||
if (pos == queues.end())
|
||||
return nullptr;
|
||||
|
||||
return pos->second;
|
||||
|
||||
//return queues.at(qid);
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "board.h"
|
||||
#include "FreeRTOS.h"
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include "queue.h"
|
||||
#include "task.h"
|
||||
#include <assert.h>
|
||||
@@ -19,6 +20,7 @@ namespace ThreadCommon
|
||||
{
|
||||
typedef enum EventType
|
||||
{
|
||||
Null,
|
||||
Rotary,
|
||||
Temperature,
|
||||
Manager
|
||||
@@ -61,12 +63,31 @@ namespace ThreadCommon
|
||||
private:
|
||||
};
|
||||
|
||||
class QueueManager
|
||||
{
|
||||
public:
|
||||
enum Queue_id {
|
||||
master_event_all,
|
||||
relay_event_master,
|
||||
manager_event_master,
|
||||
ui_event_manager
|
||||
};
|
||||
QueueManager();
|
||||
~QueueManager() = default;
|
||||
bool createQueue(size_t queue_length, size_t item_size, Queue_id qid);
|
||||
QueueHandle_t getQueue(Queue_id qid);
|
||||
private:
|
||||
std::map <Queue_id, QueueHandle_t> queues;
|
||||
};
|
||||
|
||||
/* global variables */
|
||||
/* 'receiver'_'what'_'sender'_q */
|
||||
/*
|
||||
extern QueueHandle_t master_event_all_q;
|
||||
extern QueueHandle_t relay_event_master_q;
|
||||
extern QueueHandle_t manager_event_master_q;
|
||||
extern QueueHandle_t ui_event_manager_q;
|
||||
*/
|
||||
}
|
||||
|
||||
#endif /*__THREAD_COMMON_H_*/
|
||||
|
||||
Reference in New Issue
Block a user