MayaFlux 0.2.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches
MayaFlux::Core::InputSubsystem Class Reference

Input processing subsystem for external devices. More...

#include <InputSubsystem.hpp>

+ Inheritance diagram for MayaFlux::Core::InputSubsystem:
+ Collaboration diagram for MayaFlux::Core::InputSubsystem:

Public Member Functions

 InputSubsystem (GlobalInputConfig &config)
 
 ~InputSubsystem () override
 
 InputSubsystem (const InputSubsystem &)=delete
 
InputSubsystemoperator= (const InputSubsystem &)=delete
 
 InputSubsystem (InputSubsystem &&)=delete
 
InputSubsystemoperator= (InputSubsystem &&)=delete
 
void register_callbacks () override
 Register callback hooks for this domain.
 
void initialize (SubsystemProcessingHandle &handle) override
 Initialize with a handle provided by SubsystemManager.
 
void start () override
 Start the subsystem's processing/event loops.
 
void pause () override
 Pause the subsystem's processing/event loops.
 
void resume () override
 Resume the subsystem's processing/event loops.
 
void stop () override
 Stop the subsystem's processing/event loops.
 
void shutdown () override
 Shutdown and cleanup subsystem resources.
 
SubsystemTokens get_tokens () const override
 Get the processing token configuration this subsystem manages.
 
bool is_ready () const override
 Check if subsystem is ready for operation.
 
bool is_running () const override
 Check if subsystem is currently processing.
 
SubsystemType get_type () const override
 Get the type of this subsystem.
 
SubsystemProcessingHandleget_processing_context_handle () override
 Get the processing context handle for this subsystem.
 
bool add_backend (std::unique_ptr< IInputBackend > backend)
 Add a custom input backend.
 
IInputBackendget_backend (InputType type) const
 Get a backend by type.
 
std::vector< IInputBackend * > get_backends () const
 Get all active backends.
 
std::vector< InputDeviceInfoget_all_devices () const
 Get all available input devices across all backends.
 
bool open_device (InputType backend_type, uint32_t device_id)
 Open a device.
 
void close_device (InputType backend_type, uint32_t device_id)
 Close a device.
 
std::vector< InputDeviceInfoget_hid_devices () const
 Get all HID devices.
 
std::vector< InputDeviceInfoget_midi_devices () const
 Get all MIDI devices.
 
std::optional< InputDeviceInfoget_device_info (InputType backend_type, uint32_t device_id) const
 Get device info by backend type and device ID.
 
std::optional< InputDeviceInfofind_hid_device (uint16_t vendor_id, uint16_t product_id) const
 Find HID device by vendor/product ID.
 
- Public Member Functions inherited from MayaFlux::Core::ISubsystem
virtual ~ISubsystem ()=default
 

Private Member Functions

void initialize_hid_backend ()
 
void initialize_midi_backend ()
 
void initialize_osc_backend ()
 
void initialize_serial_backend ()
 
void wire_backend_to_manager (IInputBackend *backend)
 
void register_backend_service ()
 

Private Attributes

GlobalInputConfigm_config
 
SubsystemProcessingHandlem_handle { nullptr }
 
SubsystemTokens m_tokens
 
std::atomic< bool > m_ready { false }
 
std::atomic< bool > m_running { false }
 
std::shared_mutex m_backends_mutex
 
std::unordered_map< InputType, std::unique_ptr< IInputBackend > > m_backends
 
std::shared_ptr< Registry::Service::InputServicem_input_service
 

Detailed Description

Input processing subsystem for external devices.

Coordinates input backends (HID, MIDI, OSC, Serial) and InputManager. Follows the same lifecycle patterns as AudioSubsystem and GraphicsSubsystem.

Responsibilities:

Does NOT directly call process_sample on nodes - that's InputManager's job.

Definition at line 34 of file InputSubsystem.hpp.


The documentation for this class was generated from the following files: