Hello.
I have a thread which must be waked-up from multiple sources - 3 different message box for example. How I can organize this in CMSIS-RTOS? Currently in revision 4.00 of CMSIS, there is a osWait() function. But in RTX 4.74 (which comes with latest CMSIS), this function is not implemented.
So what I can do like a workaround of this problem? Wake-up regularly via timer and check all message boxes? Working but not efficient.Currently the only multi-object wake-up source implemented in CMSIS-RTOS seems to be the signals. But it's not really cool to use message box and signals in parallel for waking up. Did I'm missing something?
That's very strange removing that, as you point it makes osSignalWait for any signal rather useless. But I think having a task per IRQ which deals with whatever has to be done straight away and then sending off a message for anything longer which is dealt with in a serial fashion is the cleaner way to do it. It does make prioritization rather difficult though.
Hey,
I managed to get it to work without osSignalGet. Basically I await any signal forever using osSignalWait(0x00, osWaitForever). Once it is recevied, i confirm using the osEvent returned that it is a signal event then I get the signal value from osEvent.value.signals variable and using a switch case to determine what I to do. More details I did on the tech bits: How to await several events using CMSIS 4 in-built RTOS. I am yet to expound more on how I did it but I think it will be rather straight forward. Hope it helps
I got 'Blog has been removed' when I visited that link
It seems that the new URL is : https://maxwellweru.com/how-to-await-several-events-using-cmsis-4-in-built-rtos/
Thanks