Skip to content

Integrate Plugin Configuration into Config Engine (Deferred) #351

Description

@maxolasersquad

Objective

Connect the completed plugin discovery and loading system to the configuration engine once linapple.toml is implemented, enabling automatic startup loading and configuration routing.

Scope & Requirements

  • Parse [plugins] and nested [plugins.<name>] tables from linapple.toml.
  • Support configuration parameters:
    • enabled = true|false
    • path = "/path/to/plugin.so" (or lookup by plugin name in discovered catalogs)
    • slot = 1..7 (for slot card peripherals)
    • Arbitrary key-value options defined by the plugin schema
  • During emulator startup, scan discovered plugin directories or specified paths.
  • Auto-load enabled plugins via PluginManager_t.
  • Route configuration options to plugins via plugin_manager_configure_plugin().
  • Automatically bind slot peripheral plugins to requested hardware slots.
  • Log clear warnings if a configured plugin fails to load without interrupting emulator startup.

Testing & Verification

  • Provide sample linapple.toml configurations specifying valid, invalid, and disabled plugin entries.
  • Verify enabled plugins are automatically loaded and initialized on emulator startup.
  • Verify slot card plugins are automatically bound to their designated slot numbers (1–7).
  • Verify slot assignment conflicts (e.g., two plugins requesting the same slot or targeting an occupied internal slot) are detected and handled with appropriate warnings without crashing.
  • Verify configuration key-value pairs are passed to the plugin's configure() function.
  • Verify missing plugin files or malformed plugin tables produce log warnings without interrupting emulator startup.
  • Verify disabling a plugin in configuration prevents library loading and slot binding.

Acceptance Criteria

  • Emulator boots with plugins specified in linapple.toml automatically loaded, configured, and bound to slots.
  • Missing or disabled plugins do not prevent emulator startup.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

sdl3Affects the SDL3 frontend.

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions