Control IO
Component Type: Input/Output
Status: Implemented
Overview
CIOControl is a special-purpose IO that controls the lifecycle
state of bound objects (IOs, Programs, or Protocols).
Write
1-> callsstart()on all bound objectsWrite
0-> callsstop()on all bound objectsRead -> returns current state of bound objects (
getState())
Each instance uses an allowed_cmds bitmask that restricts which
commands it may issue. A single Control IO can be bound to multiple
objects of any type (IO, PROG, PROTO); all targets receive the same command.
Differs from Config IO (which controls data/configuration values) and Trigger IO (which fires one-shot actions on already-running objects).
Implementation
Data Format
Read and write operations use a single uint8_t byte:
Write
0- stop commandWrite
1- start commandRead - current state (
0= stopped,1= running)
Allowed Commands
The allowed bitmask restricts which commands a given instance may issue.
Attempting a disallowed command returns -EACCES.
Flag |
Value |
Description |
|---|---|---|
|
|
Allow write |
|
|
Allow write |
Configuration
Kconfig
CONFIG_DAWN_IO_CONTROL: enables the Control IO.
YAML
ios:
- id: ctrl1
type: control
config:
targets:
- sampling1
allowed:
- start
- stop
Supported allowed values: start, stop.
External Control
ControlIO: implemented by this IO.
TriggerIO: not supported.
Brainstorming & Future Ideas
Object Documentation Policy
Each object documentation page must explicitly state ControlIO support
status for that object:
ControlIO: supportedControlIO: not supportedControlIO: not supported yet(if planned but not implemented)