Practical UML statecharts in C/C++ : event-driven programming for embedded systems /
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 infras...
Clasificación: | Libro Electrónico |
---|---|
Autor principal: | |
Formato: | eBook |
Idioma: | Inglés |
Publicado: |
Amsterdam ; Boston :
Newnes/Elsevier,
©2009.
|
Edición: | 2nd ed. |
Temas: | |
Acceso en línea: | Texto completo (Requiere registro previo con correo institucional) |
Tabla de Contenidos:
- 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 Handlers2-37
- 2.5.2 Confusing Statecharts with Flowcharts2-38
- 2.5.3 Ill-Formed State Handlers2-39
- 2.5.4 Suboptimal Signal Granularity2-42
- 2.5.5 Violating the Run To Completion Semantics2-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.