 |
 |
 | PRACTICAL UML STATECHARTS IN C/C++
|  |
 |  |  |
 |
 |
Event-Driven Programming for Embedded Systems
To order this title, and for more information, click here
Second Edition
By
Miro Samek, President, Quantum Leaps, Chapel Hill, NC, USA
Description
Practical UML Statecharts in C/C++ Second Edition bridges the gap between high-level abstract concepts of the Unified Modeling Language
(UML) and the actual programming aspects of modern hierarchical state machines (UML statecharts). The book describes a lightweight, open
source, event-driven infrastructure, called QP that enables direct manual coding UML statecharts and concurrent event-driven applications
in C or C++ without big tools.
This book is presented in two parts. In Part I, you get a practical description of the relevant state
machine concepts starting from traditional finite state automata to modern UML state machines followed by state machine coding techniques
and state-machine design patterns, all illustrated with executable examples. In Part II, you find a detailed design study of a generic
real-time framework indispensable for combining concurrent, event-driven state machines into robust applications. Part II begins with
a clear explanation of the key event-driven programming concepts such as inversion of control (?Hollywood Principle?), blocking versus
non-blocking code, run-to-completion (RTC) execution semantics, the importance of event queues, dealing with time, and the role of state
machines to maintain the context from one event to the next. This background is designed to help software developers in making the transition
from the traditional sequential to the modern event-driven programming, which can be one of the trickiest paradigm shifts.
The lightweight
QP event-driven infrastructure goes several steps beyond the traditional real-time operating system (RTOS). In the simplest configuration,
QP runs on bare-metal microprocessor, microcontroller, or DSP completely replacing the RTOS. QP can also work with almost any OS/RTOS
to take advantage of the existing device drivers, communication stacks, and other middleware. The accompanying website to this book contains
complete open source code for QP, ports to popular processors and operating systems, including 80x86, ARM Cortex-M3, MSP430, and Linux,
as well as all examples described in the book.
Audience
Embedded programmers; real-time system architects; code developers using C or C++
Contents
Preface
PART I STATECHARTS
Chapter 1 Whirlwind Tour of Programming with Statecharts
1.1 Why Bother?
1.2 The Traditional Event-Action
Paradigm
1.3 State Machines – A Better Way of Programming
1.3.1 The Time Bomb Example
1.3.2 The Calculator Example
1.5 Object-Oriented
Analogy
1.6 The Event-driven Framework
1.6 Summary
Chapter 2 A Crash Course in Statecharts
2.1 The Essence of Finite State Machines
2.2 The Essence of UML Statecharts
2.3 Examples of State Models
2.4 Summary
Chapter 3 Standard State Machine Implementations
3.1 State
Machine Interface
3.2 Nested switch Statement
3.3 State Table
3.4 State Design Pattern
3.5 Optimal FSM Implementation
3.6 State Machines
and C++ Exception Handling
3.7 Role of Pointer-to-Member Functions
3.8 Implementing Guards, Junctions, and Choice Points
3.9 Implementing
Entry and Exit Actions
3.10 Dealing with State Hierarchy
3.11 Summary
Chapter 4 QEP: A Minimal Hierarchical Event Processor
4.1 General
Structure of the QEP Event Processor
4.2 An Annotated Example (QHsm)
4.3 QEP Structure
4.3.1 QEP Source Code Structure
4.3.2 Internal
Representation of a State Machine
4.3.3 Initialization of a State Machine
4.3.4 Dispatching Events to a FSM
4.3.5 Executing a Transition
in a FSM
4.3.6 Dispatching Events to a HSM
4.3.7 Executing a Transition in a HSM
4.3.8 Static Transition Optimization in a HSM
4.4 Porting
and Configuring QEP
4.5 Caveats
4.6 Summary
Chapter 5 Implementing State Machines with QEP
5.1 Implementing a HSM with QEP
5.1.1 Step
1: Enumerating Signals
5.1.2 Step 2: Defining Events
5.1.3 Step 3: Defining the QCalc State Machine
5.1.4 Step 4: Declaring the QCalc
States
5.1.5 Step 5: Initializing the HSM
5.1.6 Step 6: Implementing the State Handler Functions
5.2 Implementing a FSM with QEP
2.5
Pitfalls to Avoid While Coding State Machines with QEP
2.5.1 Incomplete State Handlers 2-37
2.5.2 Confusing Statecharts with Flowcharts
2-38
2.5.3 Ill-Formed State Handlers 2-39
2.5.4 Suboptimal Signal Granularity 2-42
2.5.5 Violating the Run To Completion Semantics 2-42
4.6 Summary
Chapter 6 State Patterns
6.1 Ultimate Hook
6.2 Reminder
6.3 Deferred Event
6.4 Orthogonal Component
6.5 Transition to History
6.6 Summary
PART II EVENT-DRIVEN FRAMEWORK
Chapter 7 QF: A Minimal Event-Driven Embedded Framework
7.1 Conventional Approach to Multithreading
7.2 Computing Model of QF
7.3 Annotated Example
7.3.1 The ?Airplane in the Tunnel? Game
7.3.2 The Active Object Design
7.3.3 The Implementation
7.3.4 The Port for ARM Cortex-M3
7.3.5 Testing
7.4 Summary
Chapter 8 Design of QF
8.1 Handling Errors and Exceptional Conditions
8.2
Memory Management
8.3 Mutual Exclusion and Blocking
8.4 Active Objects
8.5 Event Management in QF
8.6 Event Delivery Mechanisms in QF
8.9 Deferring and Recalling Events in QF
8.7 Time Events
8.8 Summary
Chapter 9 Implementation of QF
9.1 Code Organization
9.2 Critical
Section in QF
9.3 General QF Policies Enforced by Assertions
9.4 Active Object class
9.5 Native QF Event Queue
9.6 Native QF Memory Pool
9.7 Native QF Priority Set
9.8 Native QF Scheduler
Chapter 10 Porting QF
10.1 QF Porting Guide
10.2 QF on Bare-Metal Targets (the Vanilla
Port)
10.3 Using QF with a preemptive Real-Time Kernel ( C/OS-II)
10.4 QF port to a POSIX-Compliant OS (Linux)
10.5 Summary
Chapter
11 Conclusion
11.2 Rules for Developing Event-Driven Embedded Applications
11.3 Heuristics
11.4 Sizing Event Queues and Event Pools
11.5
System Integration
11.6 Summary of Key Elements
11.7 An Invitation
Appendix A QK: A Single-Stack Preemptive Kernel
A.2 Run-to-Completion
Processing
A.3 Synchronous and Asynchronous Preemptions
A.4 Stack Utilization
A.4 Comparison with a Traditional RTOS
A.5 Summary
Appendix
B QS: Software Tracing for Event Driven Systems
B.1 Software Tracing Concepts
B.2 Structure of QS Trace Records
B.3 QS Filters
B.4 QS
Data Protocol
B.5 QS Trace Buffer
B.6 Configuring and Porting QS
B.7 Summary
Appendix C Inheriting Entire State Models in C++
C.1 Statechart
Refinement Example in C++
C.3 Caveats
C.4 Summary
Appendix D Guide to Notation
D.1 Class Diagrams
D.2 Statechart Diagrams
D.3 Sequence
Diagrams
D.4 Timing Diagrams
Appendix E CD-ROM
E.1 Source Code Structure
E.2 Installation
E.3 Licensing
E.4 Answers to the Exercises
E.5 QP Reference Guide (Doxygen)
E.6 Resources
Bibliography
Index
| Bibliographic details |
Paperback, 728 pages, publication date: OCT-2008
ISBN-13: 978-0-7506-8706-5
Imprint: NEWNES
|
| Price and Ordering |
Price:
EUR 35.95 USD 49.95 GBP 29.99
|  |
Books and book related electronic products are priced in US dollars (USD), euro (EUR), and Great Britain Pounds (GBP). USD prices apply to the Americas and Asia Pacific. EUR prices apply in Europe and the Middle East. GBP prices apply to the UK and all other countries.
|
See also information about conditions of sale & ordering procedures, and links to our regional sales offices.
|
032/320
Last update: 25 Nov 2009
|
 |
|  |
 |  |  |
 |
|
|  |