distortos  v0.7.0
object-oriented C++ RTOS for microcontrollers
StaticMessageQueue.hpp
Go to the documentation of this file.
1 
12 #ifndef INCLUDE_DISTORTOS_STATICMESSAGEQUEUE_HPP_
13 #define INCLUDE_DISTORTOS_STATICMESSAGEQUEUE_HPP_
14 
15 #include "MessageQueue.hpp"
16 
18 
19 namespace distortos
20 {
21 
31 template<typename T, size_t QueueSize>
33 {
34 public:
35 
37  using typename MessageQueue<T>::EntryStorage;
38 
40  using typename MessageQueue<T>::ValueStorage;
41 
46  explicit StaticMessageQueue() :
47  MessageQueue<T>{{entryStorage_.data(), internal::dummyDeleter<EntryStorage>},
48  {valueStorage_.data(), internal::dummyDeleter<ValueStorage>}, valueStorage_.size()}
49  {
50 
51  }
52 
57  constexpr static size_t getCapacity()
58  {
59  return QueueSize;
60  }
61 
62 private:
63 
65  std::array<EntryStorage, QueueSize> entryStorage_;
66 
68  std::array<ValueStorage, QueueSize> valueStorage_;
69 };
70 
71 } // namespace distortos
72 
73 #endif // INCLUDE_DISTORTOS_STATICMESSAGEQUEUE_HPP_
MessageQueue class is a message queue for thread-thread, thread-interrupt or interrupt-interrupt comm...
Definition: MessageQueue.hpp:46
internal::MessageQueueBase::ValueStorage< T > ValueStorage
type of uninitialized storage for value
Definition: MessageQueue.hpp:54
MessageQueue class header.
Top-level namespace of distortos project.
Definition: buttons.hpp:33
internal::MessageQueueBase::EntryStorage EntryStorage
type of uninitialized storage for Entry with link
Definition: MessageQueue.hpp:51
StaticMessageQueue class is a variant of MessageQueue that has automatic storage for queue's contents...
Definition: StaticMessageQueue.hpp:32
std::array< EntryStorage, QueueSize > entryStorage_
storage for queue's entries
Definition: StaticMessageQueue.hpp:65
StaticMessageQueue()
StaticMessageQueue's constructor.
Definition: StaticMessageQueue.hpp:46
std::array< ValueStorage, QueueSize > valueStorage_
storage for queue's contents
Definition: StaticMessageQueue.hpp:68
static constexpr size_t getCapacity()
Definition: StaticMessageQueue.hpp:57
dummyDeleter() declaration