51 lines
917 B
C++
51 lines
917 B
C++
/*
|
|
* threads_actor_thread.hpp
|
|
*
|
|
* Created on: Nov 13, 2021
|
|
* Author: erki
|
|
*/
|
|
|
|
#ifndef SKULLC_THREADS_ACTOR_THREAD_HPP_
|
|
#define SKULLC_THREADS_ACTOR_THREAD_HPP_
|
|
|
|
#include <array>
|
|
#include <cstdint>
|
|
|
|
#include <freertos_os2.h>
|
|
#include <queue.h>
|
|
|
|
#include <threads_thread.hpp>
|
|
|
|
namespace Threads
|
|
{
|
|
|
|
class IActor;
|
|
|
|
class ActorThread : public Thread<ActorThread>
|
|
{
|
|
public:
|
|
ActorThread(const std::size_t queue_length, const char* name, const osPriority_t priority, const std::uint32_t stack_size);
|
|
|
|
void operator()();
|
|
|
|
private:
|
|
void init_();
|
|
void doMessageLoop_();
|
|
|
|
friend class IActor;
|
|
std::size_t acceptActor_(IActor* actor);
|
|
|
|
std::size_t queue_length_;
|
|
std::size_t queue_item_length_ = 0;
|
|
|
|
QueueHandle_t queue_ = nullptr;
|
|
char* rx_buffer_ = nullptr;
|
|
char* tx_buffer_ = nullptr;
|
|
std::array<IActor*, 32> actors_;
|
|
};
|
|
|
|
}// namespace Threads
|
|
|
|
|
|
#endif /* SKULLC_THREADS_ACTOR_THREAD_HPP_ */
|