ArtnetSpecificSettings.hpp
1 #pragma once
2 #include <ossia/detail/config.hpp>
3 #if defined(OSSIA_PROTOCOL_ARTNET)
4 #include <score/tools/std/StringHash.hpp>
5 
6 #include <ossia/detail/variant.hpp>
7 
8 #include <QString>
9 
10 #include <utility>
11 #include <vector>
12 #include <verdigris>
13 
14 namespace Protocols
15 {
16 
17 namespace Artnet
18 {
20 {
21  QString type;
22  QString comment;
23  QString effectName;
24 };
25 
27 {
28 };
30 {
31  std::pair<int, int> range;
32 };
33 
34 using FixtureCapabilities
35  = ossia::variant<SingleCapability, std::vector<RangeCapability>>;
36 struct Channel
37 {
38  QString name;
39  FixtureCapabilities capabilities;
40  std::vector<QString> fineChannels;
41  int defaultValue{};
42 };
43 
44 struct ModeInfo
45 {
46  std::vector<QString> channelNames;
47 };
48 
49 struct Fixture
50 {
51  QString fixtureName;
52  QString modeName;
53  ModeInfo mode;
54  std::vector<Channel> controls;
55  int address{};
56 };
57 
58 }
59 
61 {
62  std::vector<Artnet::Fixture> fixtures;
63  QString host;
64  int rate{20};
65  int universe{1};
66  enum
67  {
68  ArtNet, // Artnet:/Channel-{}
69  E131,
70  DMXUSBPRO,
71  ArtNetV2, // Artnet:/{}
72  DMXUSBPRO_Mk2,
73  } transport{ArtNetV2};
74  enum
75  {
76  Source, // score sends DMX
77  Sink // score receives DMX
78  } mode;
79 };
80 }
81 
82 Q_DECLARE_METATYPE(Protocols::ArtnetSpecificSettings)
83 W_REGISTER_ARGTYPE(Protocols::ArtnetSpecificSettings)
84 #endif
Definition: ArtnetSpecificSettings.hpp:20
Definition: ArtnetSpecificSettings.hpp:37
Definition: ArtnetSpecificSettings.hpp:50
Definition: ArtnetSpecificSettings.hpp:45
Definition: ArtnetSpecificSettings.hpp:30
Definition: ArtnetSpecificSettings.hpp:27
Definition: ArtnetSpecificSettings.hpp:61