Coco Tutorial¶
- Lesson 1: The Valve Controller Project
- Software requirements
- Introducing the Coco Workflow
- Step 1: Creating a Coco Project
- Step 2: Building a Port for the Valve Controller
- Step 3: Modelling the Hardware Abstraction Layer
- Step 4: Building a Component for the Valve Controller
- Step 5: Verifying your Ports and Components
- Step 6: Refactoring your Code
- Step 7: Running the Generated Code
- Lesson 2: Adding Query Functions
- Lesson 3: Accommodating Hardware Changes
- Lesson 4: Making the Valve Controller Asynchronous
- Lesson 5: Increasing Concurrency
- Extending the Architecture
- Step 1: Creating the
ValveDriverPort - Step 2: Creating the
ValveDriverImplComponent - Step 3: Modifying
ValveControllerImplto useValveDriver - Step 4: Adding a Queue to
ValveControllerImpl - Step 5: Adding Missing Match Cases to
ValveControllerImpl - Step 6: Modifying
ValveControllerandValveControllerImpl - Step 7: Modifying
ValveControllerImpl - Step 8: Extending
ValveControllerImplto Preserve Signal Data - Step 9: Building an Encapsulating Component
ValveGroup
- Lesson 6: Armouring the Valve Controller
- Lesson 7: Supporting Asynchronous Termination
- Step 1: Modifying
ValveController - Step 2: Adding Missing
hasTerminated()Signal toValveControllerImpl - Step 3: Extending
ValveControllerImplto Allowterminate()while Moving - Step 4: Modifying the
terminate()Transition - Step 5: Add the Missing
moveEnded(…)Signal toValveControllerImpl - Step 6: Modifying the
ArmourImplcomponent to allowterminate()while moving - Step 7: Increasing the Queue Size for
ArmourImpl
- Step 1: Modifying
- Lesson 8: Introducing Timers
- Lesson 9: Introducing Slots