Practical UML Statecharts in C/C++ (Event-Driven Programming for Embedded Systems)