|
5 | 5 |
|
6 | 6 | QueueHandle_t xQueueCreate(const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize) |
7 | 7 | { |
8 | | - QueueHandle_t xQueue; |
| 8 | + Queue_t *xQueue = new Queue_t; |
9 | 9 | if (uxItemSize != 1) { |
10 | 10 | throw std::runtime_error("uxItemSize must be 1"); |
11 | 11 | } |
12 | | - xQueue.queue.reserve(uxQueueLength); |
| 12 | + xQueue->queue.reserve(uxQueueLength); |
13 | 13 | return xQueue; |
14 | 14 | } |
15 | 15 |
|
16 | | -BaseType_t xQueueSend(QueueHandle_t &xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait) |
| 16 | +BaseType_t xQueueSend(QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait) |
17 | 17 | { |
18 | | - std::lock_guard<std::mutex> guard(xQueue.mutex); |
19 | | - xQueue.queue.push_back(*reinterpret_cast<const uint8_t *const>(pvItemToQueue)); |
| 18 | + Queue_t* pxQueue = ( Queue_t * ) xQueue; |
| 19 | + std::lock_guard<std::mutex> guard(pxQueue->mutex); |
| 20 | + pxQueue->queue.push_back(*reinterpret_cast<const uint8_t *const>(pvItemToQueue)); |
20 | 21 | return true; |
21 | 22 | } |
22 | 23 |
|
23 | | -BaseType_t xQueueSendFromISR(QueueHandle_t &xQueue, const void * const pvItemToQueue, BaseType_t *xHigherPriorityTaskWoken) |
| 24 | +BaseType_t xQueueSendFromISR(QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t *xHigherPriorityTaskWoken) |
24 | 25 | { |
25 | 26 | TickType_t xTicksToWait = 0; |
26 | 27 | *xHigherPriorityTaskWoken = pdFALSE; |
27 | 28 | return xQueueSend(xQueue, pvItemToQueue, 0.0); |
28 | 29 | } |
29 | 30 |
|
30 | | -BaseType_t xQueueReceive(QueueHandle_t &xQueue, void * const pvBuffer, TickType_t xTicksToWait) |
| 31 | +BaseType_t xQueueReceive(QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait) |
31 | 32 | { |
32 | | - while (xQueue.queue.empty()) { |
| 33 | + Queue_t* pxQueue = ( Queue_t * ) xQueue; |
| 34 | + while (pxQueue->queue.empty()) { |
33 | 35 | if (xTicksToWait <= 25) { |
34 | 36 | return false; |
35 | 37 | } |
36 | 38 | SDL_Delay(25); |
37 | 39 | xTicksToWait -= 25; |
38 | 40 | } |
39 | | - if (xQueue.queue.empty()) { |
| 41 | + if (pxQueue->queue.empty()) { |
40 | 42 | return false; |
41 | 43 | } |
42 | | - std::lock_guard<std::mutex> guard(xQueue.mutex); |
| 44 | + std::lock_guard<std::mutex> guard(pxQueue->mutex); |
43 | 45 | uint8_t *buf = reinterpret_cast<uint8_t * const>(pvBuffer); |
44 | | - *buf = xQueue.queue.at(0); |
45 | | - xQueue.queue.erase(xQueue.queue.begin()); |
| 46 | + *buf = pxQueue->queue.at(0); |
| 47 | + pxQueue->queue.erase(pxQueue->queue.begin()); |
46 | 48 | return true; |
47 | 49 | } |
0 commit comments