Skip to content

5.1.0: Standards: vDevice Controller

Ulrond edited this page Oct 24, 2024 · 1 revision

Purpose:

Provides a software-based vDevice for simulating the environment of the target platform. Designed to be modular and flexible, allowing for the testing and development of various components.

Key Components:

  • vDevice Controller:
    • The central orchestrator of the virtualised system.
    • Manages the lifecycle of vComponent instances (initialising, starting, and stopping).
    • Handles the control plane socket, routing control messages to appropriate vComponent instances.
  • vComponent:
    • Represents a specific HAL / Operational module within the software stack.
    • Receives and processes control plane messages and will extract information relevant to its specific domain.
    • Can optionally run in standalone mode with their own control plane sockets.
  • Control Plane:
    • Provides a WebSocket interface for sending control messages to alter the behaviour of internal components.
    • Allows external users or systems to control, configure, or trigger actions in vComponents.
    • Supports communication across multiple modules using YAML-based messages, enabling flexible and scalable control.

Architecture:

  • Modular Design: vComponent instances are packaged as component libraries, ideally moving towards opkg for easier integration.
  • Centralized Control: The vDevice Controller acts as the main coordinator.
  • Unified Control Plane: The vDevice Controller provides a common control plane socket for all modules.

System Workflow (Boot Sequence)

  1. Initialization: vDevice Controller starts up and loads configuration.
  2. Component Registration: Initialization and exit functions of each vComponent instance are registered with the vDevice Controller.
  3. Control Plane Activation: vDevice Controller initiates the control plane socket.
  4. Component Startup: vDevice Controller triggers the initialization (init() function) of all registered vComponent instances based on the provided platform profile.

Considerations:

  • Platform Profile: Ensure that the platformProfile.yaml format is well-defined, enabling flexible configuration of vComponent instances during startup.
  • Control Plane Messages: Clearly define the structure and types of control plane messages that the system will use.
  • Documentation: Thoroughly document each vComponent instance's API, supported control messages, and configuration options.
graph TD
    subgraph System
        subgraph High Level Overview
          EmulatorController[vDevice] --> |Initializes/Terminates| ModuleEmulator1[vComponent 1]
          EmulatorController --> |Initializes/Terminates| ModuleEmulator2[vComponent 2] 
          EmulatorController --> |Initializes/Terminates| ModuleEmulatorN[vComponent N]
         end 
         subgraph Starting/Stopping
          EmulatorController --> |Starts/Stops| ModuleEmulator1
          EmulatorController --> |Starts/Stops| ModuleEmulator2 
          EmulatorController --> |Starts/Stops| ModuleEmulatorN
         end 
        EmulatorController --> |Control Plane Socket| ControlPlane[Control Plane]
        subgraph MessageSending
           ControlPlane -- Sends Messages --> ModuleEmulator1
           ControlPlane -- Sends Messages --> ModuleEmulator2
           ControlPlane -- Sends Messages --> ModuleEmulatorN
         end 
    end
Loading
Clone this wiki locally