16 void operator()(osMessageQueueId_t queue_id) {
17 osMessageQueueDelete(queue_id);
22 std::unique_ptr<std::remove_pointer_t<osMessageQueueId_t>, Deleter>;
26 osMessageQueueAttr_t attr{};
27 attr.attr_bits = attr_bits;
28 queue_id_ = QueueId{osMessageQueueNew(
capacity,
sizeof(T), &attr)};
31 bool push(
const T &value, uint32_t timeout) {
32 return osMessageQueuePut(queue_id_.get(), &value, 0, timeout) == osOK;
35 bool pop(T &value, uint32_t timeout) {
36 return osMessageQueueGet(queue_id_.get(), &value,
nullptr, timeout) == osOK;
39 void clear() { osMessageQueueReset(queue_id_.get()); }
41 size_t size() {
return osMessageQueueGetCount(queue_id_.get()); }
43 size_t capacity() {
return osMessageQueueGetCapacity(queue_id_.get()); }