Practical UML Statecharts in C/C++
By

Rating

Product Description
Product Details

Table of 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

About the Author

Dr. Miro Samek is the founder and president of Quantum Leaps, an open source company providing lightweight, state machine-based, event-driven application frameworks for embedded systems. He is the author of Practical Statecharts in C/C++ (CMP Books, 2002), has written numerous articles for magazines, including a column for C/C++ Users Journal, is a regular speaker at the Embedded Systems Conferences, and serves on the editorial review board of the Embedded Systems Design magazine. For a number of years, he worked in various Silicon Valley companies as an embedded software architect and before that he worked as an embedded software engineer at GE Medical Systems (now GE Healthcare). Dr. Samek earned his Ph.D. in nuclear physics at GSI (Darmstadt, Germany).

Ask a Question About this Product More...
 
How Fishpond Works
Fishpond works with suppliers all over the world to bring you a huge selection of products, really great prices, and delivery included on over 25 million products that we sell. We do our best every day to make Fishpond an awesome place for customers to shop and get what they want — all at the best prices online.
Webmasters, Bloggers & Website Owners
You can earn a 8% commission by selling Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems on your website. It's easy to get started - we will give you example code. After you're set-up, your website can earn you money while you work, play or even sleep! You should start right now!
Authors / Publishers
Are you the Author or Publisher of a book? Or the manufacturer of one of the millions of products that we sell. You can improve sales and grow your revenue by submitting additional information on this title. The better the information we have about a product, the more we will sell!
Item ships from and is sold by Fishpond.com, Inc.

Back to top