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 */
public:
// Default Constructor
RtosQueue();
/**
* @param handle CMSIS RTOS2 queue handle
*/
RtosQueue(osMessageQueueId_t * handle);
RtosQueue(osMessageQueueId_t handle);
/**
* @brief Place message in queue.
@ -56,7 +59,7 @@ namespace sta
uint32_t available() const;
private:
osMessageQueueId_t * handle_; /**< CMSIS RTOS2 queue handle */
osMessageQueueId_t handle_; /**< CMSIS RTOS2 queue handle */
};
} // namespace sta

View File

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