In this chapter, you have gained first-hand experience in creating a simple end-to-end command executor architecture. At this point, you should be quite comfortable with creating queues and will have started to gain a deeper understanding of how they can be used to achieve specific design goals, such as flexibility. You can apply variations of these techniques to many real-world projects. If you're feeling particularly adventurous, feel free to implement one of the suggested protocols or add an entry point for another interface (such as a UART).
In the next chapter, we'll change gears a bit and discuss the available APIs for FreeRTOS, investigating when and why you might prefer one over the others.