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
ValveDriver
Port - Step 2: Creating the
ValveDriverImpl
Component - Step 3: Modifying
ValveControllerImpl
to useValveDriver
- Step 4: Adding a Queue to
ValveControllerImpl
- Step 5: Adding Missing Match Cases to
ValveControllerImpl
- Step 6: Modifying
ValveController
andValveControllerImpl
- Step 7: Modifying
ValveControllerImpl
- Step 8: Extending
ValveControllerImpl
to 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
ValveControllerImpl
to Allowterminate()
while Moving - Step 4: Modifying the
terminate()
Transition - Step 5: Add the Missing
moveEnded(…)
Signal toValveControllerImpl
- Step 6: Modifying the
ArmourImpl
component to allowterminate()
while moving - Step 7: Increasing the Queue Size for
ArmourImpl
- Step 1: Modifying
- Lesson 8: Introducing Timers
- Lesson 9: Introducing Slots