The document proposes an event-driven state machine programming language called ESP to more easily develop firmware with concurrency. ESP improves on programming firmware in C by using processes and message passing. It also describes translating ESP code into SPIN model checking specifications to verify properties and generating efficient C code from ESP with microbenchmarks showing performance comparable to handwritten C code.