I have just written an implementation for events to FreeRTOS.
Events = objects that can have 3 states: set, reset, or be autoreseting.
They can be waited for and if there are multiple tasks waiting for a single event, when the event is 'set', all tasks are unblocked. If the event is autoseting, after unblocking all tasks, the event gets reset. If the event is set, and not autoreseting, it stays 'set' until 'reset' is called. During that period any task that wants to wait for it will not block at all.
My code uses queues effectively, and will not create any kind of surplus processing time.
I'd like to retain copyright and be mentioned as the author, but nonetheless I don't care what you do with the code as far as it is distributed free of charge and open source.
I am eager to hear your opinions on my code, or any opinions on how it can be improved.
add queue.c.inc to the end of the queue.c freeRTOS file, add event.h to the include list, and add an entry to the config file: #define USE_EVENTS 1 // or 0 to disable them.