16 void operator()(osMessageQueueId_t queue_id) {
17 osMessageQueueDelete(queue_id);
22 std::unique_ptr<std::remove_pointer_t<osMessageQueueId_t>, Deleter>;
26 queue_id_ = QueueId{osMessageQueueNew(capacity,
sizeof(T),
nullptr)};
29 bool push(
const T &value, uint32_t timeout) {
30 return osMessageQueuePut(queue_id_.get(), &value, 0, timeout) == osOK;
33 bool pop(T &value, uint32_t timeout) {
34 return osMessageQueueGet(queue_id_.get(), &value,
nullptr, timeout) == osOK;
37 void clear() { osMessageQueueReset(queue_id_.get()); }
39 size_t size() {
return osMessageQueueGetCount(queue_id_.get()); }