Learn to implement event-driven embedded applications using simple and hierarchical UML state machine approach