MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ setup_osc_bridge()

void MayaFlux::Core::InputManager::setup_osc_bridge ( const OSCConfigInfo osc_config)

Setup OSC bridge if enabled in config.

Definition at line 434 of file InputManager.cpp.

435{
436 if (!osc_config.enabled) {
437 return;
438 }
439
440 if (!m_network_service) {
442 .get_service<Registry::Service::NetworkService>();
443 }
444
445 if (!m_network_service) {
447 "OSC bridge requested but NetworkService not available");
448 return;
449 }
450
451 EndpointInfo ep;
452 ep.transport = NetworkTransport::UDP;
454 ep.local_port = osc_config.receive_port;
455 ep.remote_address = osc_config.send_address;
456 ep.remote_port = osc_config.send_port;
457 ep.label = "osc_input";
458
460
461 if (m_osc_endpoint_id == 0) {
463 "Failed to open UDP endpoint for OSC on port {}",
464 osc_config.receive_port);
465 return;
466 }
467
469 [this](uint64_t, const uint8_t* data, size_t size, std::string_view) {
470 auto parsed = OscParser::parse(data, size);
471 if (parsed) {
472 enqueue(*parsed);
473 }
474 });
475
477 "OSC bridge active on port {}", osc_config.receive_port);
478}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
Range size
Registry::Service::NetworkService * m_network_service
void enqueue(const InputValue &value)
Enqueue an input value for processing.
static std::optional< InputValue > parse(const uint8_t *data, size_t size, uint32_t device_id=0)
Parse a single OSC message from raw bytes.
Definition OscParser.cpp:7
Interface * get_service()
Query for a backend service.
static BackendRegistry & instance()
Get the global registry instance.
@ InputManagement
Input management (Core::InputManager)
@ Core
Core engine, backend, subsystems.
std::function< uint64_t(const Core::EndpointInfo &info)> open_endpoint
Open a network endpoint on the appropriate backend.
std::function< void(uint64_t endpoint_id, std::function< void(uint64_t, const uint8_t *, size_t, std::string_view)> callback)> set_endpoint_receive_callback
Register a per-endpoint receive callback.

References MayaFlux::Core::BIDIRECTIONAL, MayaFlux::Journal::Core, MayaFlux::Core::OSCConfigInfo::enabled, enqueue(), MayaFlux::Registry::BackendRegistry::get_service(), MayaFlux::Journal::InputManagement, MayaFlux::Registry::BackendRegistry::instance(), MayaFlux::Core::EndpointInfo::label, MayaFlux::Core::EndpointInfo::local_port, m_network_service, m_osc_endpoint_id, MF_ERROR, MF_INFO, MF_WARN, MayaFlux::Registry::Service::NetworkService::open_endpoint, MayaFlux::Core::OscParser::parse(), MayaFlux::Core::OSCConfigInfo::receive_port, MayaFlux::Core::EndpointInfo::remote_address, MayaFlux::Core::EndpointInfo::remote_port, MayaFlux::Core::EndpointInfo::role, MayaFlux::Core::OSCConfigInfo::send_address, MayaFlux::Core::OSCConfigInfo::send_port, MayaFlux::Registry::Service::NetworkService::set_endpoint_receive_callback, size, MayaFlux::Core::EndpointInfo::transport, and MayaFlux::Core::UDP.

+ Here is the call graph for this function: