"Barr Group training courses should be required before writing any embedded code."

General Dynamics

Newsletter Signup

Want to receive free how-to articles and industry news as well as announcements of free webinars and other training courses by e-mail? Signup now.

Event-Driven Programming and State Machines

Once learned, the technique of event-driven programming is a fun and easy way to write reliable and maintainable embedded software. Unfortunately, most embedded programmers either haven't heard of event-driven programming or don't know how to use it properly. This course trains programmers to architect firmware with an event focus and shows the many benefits of using state machine frameworks to implement the resulting design. You'll also learn UML's statechart notation and a variety of best practices for effective event-driven programming in C (contact us about C++ options).


  • 2 days (hands-on)


  • Embedded software developers
  • Embedded software architects


The following outline is provided as a summary of the major course topics and should not be taken as literally the section-by-subsection lecture breakdown.

  • Reactive Programming
    • Events and Reactions
    • Event Queues
    • State Machines
    • Run-to-Completion
    • Active Objects
  • UML Statecharts
    • States and Transitions
    • Guard Conditions
    • Actions and Reactions
    • Entry and Exit Actions
  • Design Patterns
    • Ultimate Hook
    • Reminder
    • Deferred Event
    • Orthogonal Component
    • Transition to History
  • Frameworks
    • Inversion of Control
    • Event Delivery
    • Garbage Collection
    • Time and Power
  • Related Topics
    • Common Pitfalls
    • Preemption and Priority
    • Software Tracing
    • Debug and Test


During the course, attendees will independently complete approximately half a dozen hands-on programming exercises. These exercises are interspersed with the lectures. Attendees will use their computer to compile their programs and then download them for execution on an embedded target board with its own processor, memory, and peripherals.


Attendees should already be familiar with the C or C++ programming language before taking this course.


Each student will need a computer, such as a laptop, running XP or a newer version of Windows with an available USB port and administrator privileges. (Windows over Mac OS X generally works.)

Find out More

Please contact us today to find out more about this course or to enquire about an on-site training at your company.

Related Courses

If you are viewing this page, the following Barr Group training courses may also be of interest: