fixes + defualt constructor

This commit is contained in:
CarlWachter 2023-09-22 16:54:20 +02:00
parent a38f678d41
commit 327005a4b6
2 changed files with 16 additions and 8 deletions

View File

@ -26,10 +26,13 @@ namespace sta
using Message = T; /**< Queue message type */ using Message = T; /**< Queue message type */
public: public:
// Default Constructor
RtosQueue();
/** /**
* @param handle CMSIS RTOS2 queue handle * @param handle CMSIS RTOS2 queue handle
*/ */
RtosQueue(osMessageQueueId_t * handle); RtosQueue(osMessageQueueId_t handle);
/** /**
* @brief Place message in queue. * @brief Place message in queue.
@ -56,7 +59,7 @@ namespace sta
uint32_t available() const; uint32_t available() const;
private: private:
osMessageQueueId_t * handle_; /**< CMSIS RTOS2 queue handle */ osMessageQueueId_t handle_; /**< CMSIS RTOS2 queue handle */
}; };
} // namespace sta } // namespace sta

View File

@ -5,13 +5,18 @@
# error "Internal header. Use <sta/rtos/queue.hpp> instead." # error "Internal header. Use <sta/rtos/queue.hpp> instead."
#endif // !STA_RTOS_QUEUE_HPP #endif // !STA_RTOS_QUEUE_HPP
#include <sta/assert.hpp> #include <sta/debug/assert.hpp>
namespace sta namespace sta
{ {
template <typename T> template <typename T>
RtosQueue<T>::RtosQueue(osMessageQueueId_t * handle) RtosQueue<T>::RtosQueue()
{
}
template <typename T>
RtosQueue<T>::RtosQueue(osMessageQueueId_t handle)
: handle_{handle} : handle_{handle}
{ {
STA_ASSERT(handle != nullptr); STA_ASSERT(handle != nullptr);
@ -20,20 +25,20 @@ namespace sta
template <typename T> template <typename T>
bool RtosQueue<T>::put(const Message & msg, uint32_t timeout /* = osWaitForever */) bool RtosQueue<T>::put(const Message & msg, uint32_t timeout /* = osWaitForever */)
{ {
return (osOK == osMessageQueuePut(*handle_, &msg, 0, timeout)); return (osOK == osMessageQueuePut(handle_, &msg, 0, timeout));
} }
template <typename T> template <typename T>
bool RtosQueue<T>::get(Message * outMsg, uint32_t timeout /* = osWaitForever */) bool RtosQueue<T>::get(Message * outMsg, uint32_t timeout /* = osWaitForever */)
{ {
uint8_t prio; uint8_t prio;
return (osOK == osMessageQueueGet(*handle_, outMsg, &prio, timeout)); return (osOK == osMessageQueueGet(handle_, outMsg, &prio, timeout));
} }
template <typename T> template <typename T>
uint32 RtosQueue<T>::available() const uint32_t RtosQueue<T>::available() const
{ {
return osMessageQueueGetCount(*handle_); return osMessageQueueGetCount(handle_);
} }
} // namespace sta } // namespace sta