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 438 of file InputManager.cpp.

439{
440 if (!osc_config.enabled) {
441 return;
442 }
443
444 if (!m_network_service) {
446 .get_service<Registry::Service::NetworkService>();
447 }
448
449 if (!m_network_service) {
451 "OSC bridge requested but NetworkService not available");
452 return;
453 }
454
455 EndpointInfo ep;
456 ep.transport = NetworkTransport::UDP;
458 ep.local_port = osc_config.receive_port;
459 ep.remote_address = osc_config.send_address;
460 ep.remote_port = osc_config.send_port;
461 ep.label = "osc_input";
462
464
465 if (m_osc_endpoint_id == 0) {
467 "Failed to open UDP endpoint for OSC on port {}",
468 osc_config.receive_port);
469 return;
470 }
471
473 [this](uint64_t, const uint8_t* data, size_t size, std::string_view) {
474 auto parsed = OscParser::parse(data, size);
475 if (parsed) {
476 enqueue(*parsed);
477 }
478 });
479
481 "OSC bridge active on port {}", osc_config.receive_port);
482}
#define MF_INFO(comp, ctx,...)
#define MF_ERROR(comp, ctx,...)
#define MF_WARN(comp, ctx,...)
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, MayaFlux::Core::EndpointInfo::transport, and MayaFlux::Core::UDP.

+ Here is the call graph for this function: