Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[osc] Allow OSC devices to be exposed over OSCQuery and as a TCP server #1580

Closed
wants to merge 8 commits into from
Closed
2 changes: 1 addition & 1 deletion 3rdparty/libossia
Submodule libossia updated 34 files
+3 −3 examples/Dataflow/SynthOSC.cpp
+1 −1 examples/Editor/example_graph.cpp
+1 −1 examples/Network/Mqtt_publication.cpp
+4 −3 examples/Network/asio/OSC_playback.cpp
+2 −2 examples/Network/udp/OSC_send_receive.cpp
+1 −1 src/ossia/dataflow/nodes/gain.hpp
+1 −1 src/ossia/dataflow/nodes/rand_float.hpp
+1 −1 src/ossia/dataflow/nodes/sine.hpp
+16 −1 src/ossia/network/oscquery/detail/get_query_parser.hpp
+8 −7 src/ossia/network/oscquery/detail/json_writer.hpp
+65 −16 src/ossia/network/oscquery/detail/json_writer_detail.cpp
+2 −1 src/ossia/network/oscquery/detail/json_writer_detail.hpp
+20 −9 src/ossia/network/sockets/configuration.hpp
+3 −3 src/ossia/network/sockets/tcp_socket.hpp
+3 −3 src/ossia/network/sockets/udp_socket.hpp
+3 −3 src/ossia/preset/cue.cpp
+4 −3 src/ossia/protocols/artnet/e131_protocol.cpp
+2 −2 src/ossia/protocols/artnet/e131_protocol.hpp
+1 −1 src/ossia/protocols/coap/coap_client_protocol.cpp
+1 −1 src/ossia/protocols/coap/coap_client_protocol.hpp
+2 −2 src/ossia/protocols/mqtt/mqtt_protocol.cpp
+1 −1 src/ossia/protocols/mqtt/mqtt_protocol.hpp
+14 −2 src/ossia/protocols/osc/osc_factory.cpp
+10 −5 src/ossia/protocols/osc/osc_factory.hpp
+4 −4 src/ossia/protocols/osc/osc_generic_protocol.hpp
+3 −2 src/ossia/protocols/oscquery/oscquery_client_asio.hpp
+2 −2 src/ossia/protocols/oscquery/oscquery_mirror_asio.cpp
+135 −88 src/ossia/protocols/oscquery/oscquery_server_asio.cpp
+49 −18 src/ossia/protocols/oscquery/oscquery_server_asio.hpp
+16 −14 tests/Network/MultiplexTest.cpp
+1 −2 tests/Network/OSCQueryTest.cpp
+2 −2 tests/Network/OSC_TCP_SizeTest.cpp
+2 −2 tests/Network/OSC_TCP_SlipTest.cpp
+4 −4 tests/Network/OSC_UDPTest.cpp
4 changes: 2 additions & 2 deletions src/plugins/score-plugin-avnd/AvndProcesses/Teleplot.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ struct Teleplot : PatternObject
if(!ip.empty() && port > 1)
{
socket = std::make_shared<ossia::net::udp_send_socket>(
ossia::net::send_socket_configuration{{.host = ip, .port = port}},
ossia::net::outbound_socket_configuration{.host = ip, .port = port},
*io_context);
socket->connect();
}
Expand Down Expand Up @@ -201,7 +201,7 @@ struct Teleplot : PatternObject
if(!socket)
{
socket = std::make_shared<ossia::net::udp_send_socket>(
ossia::net::send_socket_configuration{{.host = "127.0.0.1", .port = 47269}},
ossia::net::outbound_socket_configuration{.host = "127.0.0.1", .port = 47269},
*io_context);
socket->connect();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,16 +238,25 @@ bool ArtnetDevice::reconnect()
if(host.empty())
host = "0.0.0.0";

ossia::net::socket_configuration sock_conf;
sock_conf.host = host;
sock_conf.port = ossia::net::e131_protocol::default_port;

if(set.mode == ArtnetSpecificSettings::Source)
{
ossia::net::outbound_socket_configuration sock_conf;
sock_conf.host = host;
sock_conf.port = ossia::net::e131_protocol::default_port;

artnet_proto
= std::make_unique<ossia::net::e131_protocol>(m_ctx, conf, sock_conf);
}
else
{
ossia::net::inbound_socket_configuration sock_conf;
sock_conf.bind = host;
sock_conf.port = ossia::net::e131_protocol::default_port;

artnet_proto = std::make_unique<ossia::net::e131_input_protocol>(
m_ctx, conf, sock_conf);
}

break;
}
case ArtnetSpecificSettings::DMXUSBPRO:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ class CoAPTCPEnumerator final : public DNSSDEnumerator
set.protocol = CoAPProtocolFactory::static_concreteKey();

CoAPSpecificSettings sub;
ossia::net::tcp_configuration conf;
ossia::net::tcp_client_configuration conf;
conf.host = ip.toStdString();
conf.port = port.toInt();
sub.configuration.transport = conf;
Expand Down Expand Up @@ -129,7 +129,7 @@ const Device::DeviceSettings& CoAPProtocolFactory::defaultSettings() const noexc
CoAPSpecificSettings specif;
specif.configuration.transport = ossia::net::udp_configuration{
{.local = {},
.remote = ossia::net::send_socket_configuration{"127.0.0.1", 5683}}};
.remote = ossia::net::outbound_socket_configuration{"127.0.0.1", 5683}}};
s.deviceSpecificSettings = QVariant::fromValue(specif);
return s;
}();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ CoAPTransportWidget::setConfiguration(const ossia::net::coap_client_configuratio
self.m_udp->setSettings(conf);
proto = CoapProtocol::UDP;
}
void operator()(const ossia::net::tcp_configuration& conf)
void operator()(const ossia::net::tcp_client_configuration& conf)
{
self.m_tcp->setSettings(conf);
proto = CoapProtocol::TCP;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ QString MQTTProtocolFactory::category() const noexcept
static ossia::net::mqtt5_configuration defaultMQTTConfig() noexcept
{
ossia::net::mqtt5_configuration config;
config.transport = ossia::net::tcp_configuration{{.host = "127.0.0.1", .port = 1883}};
config.transport = ossia::net::tcp_client_configuration{{.host = "127.0.0.1", .port = 1883}};
return config;
}

Expand Down Expand Up @@ -90,7 +90,7 @@ class MQTTTCPEnumerator final : public DNSSDEnumerator
set.protocol = MQTTProtocolFactory::static_concreteKey();

MQTTSpecificSettings sub;
ossia::net::tcp_configuration conf;
ossia::net::tcp_client_configuration conf;
conf.host = ip.toStdString();
conf.port = port.toInt();
sub.configuration.transport = conf;
Expand Down Expand Up @@ -127,7 +127,7 @@ const Device::DeviceSettings& MQTTProtocolFactory::defaultSettings() const noexc
s.protocol = concreteKey();
s.name = "MQTT";
MQTTSpecificSettings specif;
specif.configuration.transport = ossia::net::tcp_configuration{"127.0.0.1", 1883};
specif.configuration.transport = ossia::net::tcp_client_configuration{"127.0.0.1", 1883};
s.deviceSpecificSettings = QVariant::fromValue(specif);
return s;
}();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ MQTTTransportWidget::setConfiguration(const ossia::net::mqtt5_configuration& osc
MQTTTransportWidget& self;
const ossia::net::mqtt5_configuration& osc_conf;
MqttProtocol proto{};
void operator()(const ossia::net::tcp_configuration& conf)
void operator()(const ossia::net::tcp_client_configuration& conf)
{
self.m_tcp->setSettings(conf);
proto = MqttProtocol::TCP;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
#include <ossia/protocols/osc/osc_factory.hpp>

JSON_METADATA(ossia::net::udp_configuration, "UDP")
JSON_METADATA(ossia::net::tcp_configuration, "TCP")
JSON_METADATA(ossia::net::udp_server_configuration, "UDPServer")
JSON_METADATA(ossia::net::tcp_client_configuration, "TCP")
JSON_METADATA(ossia::net::tcp_server_configuration, "TCPServer")
JSON_METADATA(ossia::net::unix_dgram_configuration, "UnixDatagram")
JSON_METADATA(ossia::net::unix_stream_configuration, "UnixStream")
JSON_METADATA(ossia::net::serial_configuration, "Serial")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#pragma once
#include <Device/Protocol/ProtocolSettingsWidget.hpp>

#include <Protocols/NetworkWidgets/TCPWidget.hpp>

#include <ossia/network/sockets/configuration.hpp>

#include <QComboBox>
#include <QFormLayout>
#include <QSpinBox>
namespace Protocols
{

class TCPServerWidget : public QWidget
{
public:
TCPServerWidget(Device::ProtocolSettingsWidget& proto, QWidget* parent)
: QWidget{parent}
{
auto layout = new QFormLayout{this};
layout->setContentsMargins(0, 0, 0, 0);

m_remotePort = new QSpinBox(this);
m_remotePort->setRange(0, 65535);
m_remotePort->setValue(9996);
proto.checkForChanges(m_remotePort);

m_framing = new QComboBox{this};
m_framing->addItems({"Size prefixing", "SLIP"});
m_framing->setCurrentIndex(1);

layout->addRow(tr("Port"), m_remotePort);
layout->addRow(tr("Framing"), m_framing);
}

framing_type framing() const noexcept
{
return (framing_type)m_framing->currentIndex();
}

ossia::net::tcp_server_configuration settings() const noexcept
{
ossia::net::tcp_server_configuration conf;
conf.port = m_remotePort->value();
return conf;
}

void setSettings(
const ossia::net::osc_protocol_configuration& c,
const ossia::net::tcp_server_configuration& conf)
{
m_remotePort->setValue(conf.port);
m_framing->setCurrentIndex(c.framing);
}

private:
QSpinBox* m_remotePort{};
QComboBox* m_framing{};
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ class BasicTCPWidget : public QWidget
m_remotePort->setValue(9996);
m_remotePort->setWhatsThis(
tr("This is the communication port used for the TCP connection."));
proto.checkForChanges(m_remotePort);

m_host = new QLineEdit(this);
m_host->setText("127.0.0.1");
Expand All @@ -38,15 +39,15 @@ class BasicTCPWidget : public QWidget
layout->addRow(tr("Host"), m_host);
}

ossia::net::tcp_configuration settings() const noexcept
ossia::net::tcp_client_configuration settings() const noexcept
{
ossia::net::tcp_configuration conf;
ossia::net::tcp_client_configuration conf;
conf.port = m_remotePort->value();
conf.host = m_host->text().toStdString();
return conf;
}

void setSettings(const ossia::net::tcp_configuration& conf)
void setSettings(const ossia::net::tcp_client_configuration& conf)
{
m_remotePort->setValue(conf.port);
m_host->setText(QString::fromStdString(conf.host));
Expand All @@ -71,6 +72,7 @@ class TCPWidget : public QWidget
m_remotePort->setValue(9996);
m_remotePort->setWhatsThis(
tr("This is the communication port used for the TCP connection."));
proto.checkForChanges(m_remotePort);

m_host = new QLineEdit(this);
m_host->setText("127.0.0.1");
Expand All @@ -93,17 +95,17 @@ class TCPWidget : public QWidget
return (framing_type)m_framing->currentIndex();
}

ossia::net::tcp_configuration settings() const noexcept
ossia::net::tcp_client_configuration settings() const noexcept
{
ossia::net::tcp_configuration conf;
ossia::net::tcp_client_configuration conf;
conf.port = m_remotePort->value();
conf.host = m_host->text().toStdString();
return conf;
}

void setSettings(
const ossia::net::osc_protocol_configuration& c,
const ossia::net::tcp_configuration& conf)
const ossia::net::tcp_client_configuration& conf)
{
m_remotePort->setValue(conf.port);
m_framing->setCurrentIndex(c.framing);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ class UDPWidget : public QWidget
ossia::net::udp_configuration settings() const noexcept
{
ossia::net::udp_configuration conf;
conf.local = ossia::net::receive_socket_configuration{
conf.local = ossia::net::inbound_socket_configuration{
"0.0.0.0", (uint16_t)m_localPort->value()};
conf.remote = ossia::net::send_socket_configuration{
conf.remote = ossia::net::outbound_socket_configuration{
m_host->text().toStdString(), (uint16_t)m_remotePort->value(),
m_broadcast->isChecked()};
return conf;
Expand Down
Loading
Loading