Hi, I may well be doing something wrong, but for some reason my xQueueSelectFromSet does not work.
I create the queue/semaphore with this code on startup (before I have started the scheduler)
m_uart_rx_queue = xQueueCreate(device_queue_rx_size,sizeof(byte_t));
m_pending_cmd_smph = xSemaphoreCreateBinary();
m_complete_cmd_smph = xSemaphoreCreateBinary();
m_queue_set = xQueueCreateSet(device_queue_rx_size + 1);
I have checked all of the result, and everything returns pdTRUE/pdPASS, and looks fine.
I then start a task that currently just does the following,
QueueSetMemberHandle_t selected_handle = NULL;
while (selected_handle == NULL)
selected_handle = xQueueSelectFromSet(m_queue_set,100);
BaseType_t result = xSemaphoreTake(m_pending_cmd_smph,portMAX_DELAY);
int x = 1; // for my breakpoint
In Another task,
TASK2 should now start blocking forever, and I would expect that TASK1 is now woken, with xQueueSelectFromSet returning the handle to mpendingcmd_smph, however it does not wake up.
100 ticks expire,xQueueSelectFromSet returns NULL. I then perform a Take of mpendingcmd_smph, so I can see if this semaphore is 'ready', and indeed it is. xSemaphoreTake takes it straight away and returns pdTRUE.
So why is xQueueSelectFromSet not returning? what other #defines or configuration might be required.
Also, both tasks are Priority 1.
Thanks for any help.
The parameters you are passing to xQueueAddToSet() are the wrong way around.
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.