8 #ifndef RTOS_MSG_BOX_HPP_
9 #define RTOS_MSG_BOX_HPP_
11 #include "RtosSyncObject.hpp"
18 template<
class T,
int N>
38 template<
class T,
int N>
48 template<
class T,
int N>
59 template<
class T,
int N>
61 bool result = internalGive(tick, 1);
64 mIdxIn = (mIdxIn + 1) % N;
65 internalWakeUpWaitingToTake();
76 template<
class T,
int N>
78 if (mCurrentCount < mMaxCount) {
81 mIdxIn = (mIdxIn + 1) % N;
82 internalWakeUpWaitingToTake();
94 template<
class T,
int N>
96 bool result = internalTake(tick, 1);
98 msg = mArray[mIdxOut];
99 mIdxOut = (mIdxOut + 1) % N;
100 internalWakeUpWaitingToGive();
111 template<
class T,
int N>
113 if (mCurrentCount >= 0) {
115 msg = mArray[mIdxOut];
116 mIdxOut = (mIdxOut + 1) % N;
117 internalWakeUpWaitingToGive();