Skip to content

Commit

Permalink
dmx: work on enabling led fixtures
Browse files Browse the repository at this point in the history
  • Loading branch information
jcelerier committed Feb 4, 2025
1 parent d35bd75 commit 4fa597c
Show file tree
Hide file tree
Showing 10 changed files with 1,397 additions and 1,228 deletions.
2 changes: 1 addition & 1 deletion 3rdparty/libossia
4 changes: 4 additions & 0 deletions src/plugins/score-plugin-protocols/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -207,13 +207,17 @@ set(ARTNET_HDRS
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetProtocolFactory.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetProtocolSettingsWidget.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetSpecificSettings.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/FixtureDialog.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/LEDDialog.hpp"
)

set(ARTNET_SRCS
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetDevice.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetProtocolFactory.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetProtocolSettingsWidget.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/ArtnetSpecificSettingsSerialization.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/FixtureDialog.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/Protocols/Artnet/LEDDialog.cpp"
)

set(SIMPLEIO_HDRS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,12 @@ bool ArtnetDevice::reconnect()
conf.autocreate = ossia::net::dmx_config::no_auto;
if(set.fixtures.empty())
{
if(set.transport == ArtnetSpecificSettings::ArtNet)
if(set.transport == ArtnetSpecificSettings::ArtNet_MultiUniverse
|| set.transport == ArtnetSpecificSettings::E131_MultiUniverse)
{
conf.autocreate = ossia::net::dmx_config::just_universes;
}
else if(set.transport == ArtnetSpecificSettings::ArtNet)
{
conf.autocreate = ossia::net::dmx_config::channel_index;
}
Expand All @@ -220,7 +225,8 @@ bool ArtnetDevice::reconnect()
switch(set.transport)
{
case ArtnetSpecificSettings::ArtNet:
case ArtnetSpecificSettings::ArtNetV2: {
case ArtnetSpecificSettings::ArtNetV2:
case ArtnetSpecificSettings::ArtNet_MultiUniverse: {
auto host = set.host.toStdString();
if(host.empty())
host = "0.0.0.0";
Expand All @@ -233,7 +239,8 @@ bool ArtnetDevice::reconnect()
= std::make_unique<ossia::net::artnet_input_protocol>(m_ctx, conf, host);
break;
}
case ArtnetSpecificSettings::E131: {
case ArtnetSpecificSettings::E131:
case ArtnetSpecificSettings::E131_MultiUniverse: {
auto host = set.host.toStdString();
if(host.empty())
host = "0.0.0.0";
Expand All @@ -260,7 +267,8 @@ bool ArtnetDevice::reconnect()
break;
}
case ArtnetSpecificSettings::DMXUSBPRO:
case ArtnetSpecificSettings::DMXUSBPRO_Mk2: {
case ArtnetSpecificSettings::DMXUSBPRO_Mk2:
case ArtnetSpecificSettings::OpenDMX_USB: {
ossia::net::serial_configuration sock_conf;

for(auto& p : QSerialPortInfo::availablePorts())
Expand All @@ -274,11 +282,31 @@ bool ArtnetDevice::reconnect()
if(sock_conf.port.empty())
sock_conf.port = set.host.toStdString();

sock_conf.baud_rate = 115200;
sock_conf.stop_bits = ossia::net::serial_configuration::two;
int version = -1;
switch(set.transport)
{
case ArtnetSpecificSettings::DMXUSBPRO:
version = 1;
sock_conf.baud_rate = 115200;
sock_conf.stop_bits = ossia::net::serial_configuration::two;
break;

case ArtnetSpecificSettings::DMXUSBPRO_Mk2:
version = 2;
sock_conf.baud_rate = 115200;
sock_conf.stop_bits = ossia::net::serial_configuration::two;
break;

case ArtnetSpecificSettings::OpenDMX_USB:
version = 3;
sock_conf.baud_rate = 250000;
sock_conf.stop_bits = ossia::net::serial_configuration::two;
break;

default:
break;
}

const int version
= set.transport == ArtnetSpecificSettings::DMXUSBPRO_Mk2 ? 2 : 1;
artnet_proto = std::make_unique<ossia::net::dmxusbpro_protocol>(
m_ctx, conf, sock_conf, version);
break;
Expand All @@ -292,9 +320,11 @@ bool ArtnetDevice::reconnect()
auto dev = std::make_unique<ossia::net::generic_device>(
std::move(artnet_proto), settings().name.toStdString());

if(!set.fixtures.empty())
SCORE_ASSERT(proto.buffer().size() == 1);
for(auto& fixt : set.fixtures)
{
addArtnetFixture(*dev, proto.buffer(), fixt);
addArtnetFixture(*dev, proto.buffer()[0], fixt);
}

if(set.mode == ArtnetSpecificSettings::Sink)
Expand Down
Loading

0 comments on commit 4fa597c

Please sign in to comment.