Skip to main content

Module curuntime

Module curuntime 

Source
Expand description

CuRuntime is the heart of what copper is running on the robot. It is exposed to the user via the copper_runtime macro injecting it as a field in their application struct.

Structs§

CopperContext
Just a simple struct to hold the various bits needed to run a Copper application.
CopperListsManager
Manages the lifecycle of the copper lists and logging.
CuExecutionLoop
This structure represents a loop in the execution plan. It is used to represent a sequence of Execution units (loop or steps) that are executed multiple times. if loop_count is None, the loop is infinite.
CuExecutionStep
This structure represents a step in the execution plan.
CuInputMsg
CuOutputPack
CuRuntime
This is the main structure that will be injected as a member of the Application struct. CT is the tuple of all the tasks in order of execution. CL is the type of the copper list, representing the input/output messages for all the tasks.
KeyFrame
A KeyFrame is recording a snapshot of the tasks state before a given copperlist. It is a double encapsulation: this one recording the culistid and another even in bincode in the serialized_tasks.
KeyFramesManager
Manages the frozen tasks state and logging.
RuntimeLifecycleRecord
One event record persisted in the UnifiedLogType::RuntimeLifecycle section.
RuntimeLifecycleStackInfo
Build-time stack identification metadata.

Enums§

CuExecutionUnit
This structure represents a step in the execution plan.
CuTaskType
Copper tasks can be of 3 types:
RuntimeLifecycleConfigSource
Identifies where the effective runtime configuration came from.
RuntimeLifecycleEvent
Runtime lifecycle events emitted in the dedicated lifecycle section.

Functions§

compute_runtime_plan
This is the main heuristics to compute an execution plan at compilation time. TODO(gbin): Make that heuristic pluggable.
find_task_type_for_id