2021-07-30 13:57:27 -04:00
|
|
|
#pragma once
|
2021-06-02 09:32:04 -04:00
|
|
|
|
|
|
|
#include "qsacnnode_global.h"
|
2021-08-14 20:40:53 -04:00
|
|
|
#include "sacn/node.h"
|
2021-06-02 09:32:04 -04:00
|
|
|
|
2021-06-23 11:10:12 -04:00
|
|
|
#include <QHash>
|
2021-06-02 09:32:04 -04:00
|
|
|
#include <QHostAddress>
|
|
|
|
#include <QUdpSocket>
|
2021-06-19 10:47:37 -04:00
|
|
|
#include <QUuid>
|
2021-06-02 09:32:04 -04:00
|
|
|
|
|
|
|
|
2021-08-06 12:14:29 -04:00
|
|
|
/**
|
|
|
|
* @brief The QSacnNode class
|
|
|
|
*/
|
2021-06-02 09:32:04 -04:00
|
|
|
class QT_EXPORT QSacnNode
|
|
|
|
: public QUdpSocket
|
2021-08-28 09:01:33 -04:00
|
|
|
, public sACN::Node
|
2021-06-02 09:32:04 -04:00
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
2021-06-23 11:10:12 -04:00
|
|
|
explicit QSacnNode(QObject *parent = nullptr, QUuid = QUuid::createUuid());
|
2021-07-30 13:57:27 -04:00
|
|
|
QSacnUniverse * universe(const uint16_t u) {return universes_.value(u); }
|
|
|
|
|
|
|
|
// reciever
|
2021-06-02 09:32:04 -04:00
|
|
|
virtual void subscribe(const uint16_t universe = 1);
|
|
|
|
virtual void unsubscribe(const uint16_t);
|
|
|
|
|
|
|
|
signals:
|
2021-08-06 12:11:44 -04:00
|
|
|
void foundUniverse(
|
2021-08-28 09:01:33 -04:00
|
|
|
std::shared_ptr<sACN::EXTENDED::DISCOVERY::discoveredUniverse>);
|
2021-06-02 09:32:04 -04:00
|
|
|
|
|
|
|
private:
|
2021-08-06 12:14:29 -04:00
|
|
|
void udpReceive();
|
2021-06-23 11:10:12 -04:00
|
|
|
|
2021-07-30 13:57:27 -04:00
|
|
|
QHash<uint16_t, QSacnUniverse*> universes_;
|
2021-08-06 12:14:29 -04:00
|
|
|
|
|
|
|
public:
|
|
|
|
// 9.3.1 Allocation of IPv4 Multicast Addresses
|
|
|
|
// Multicast addresses are from the IPv4 Local Scope.
|
|
|
|
static inline QHostAddress IPv4MulticastAddress(uint16_t universe) {
|
|
|
|
quint32 address = 239 << 24 | 255 << 16 | universe;
|
|
|
|
return QHostAddress(address);
|
|
|
|
};
|
|
|
|
// 9.3.2 Allocation of IPv6 Multicast Addresses
|
|
|
|
static inline QHostAddress IPv6MulticastAddress(uint16_t universe) {
|
|
|
|
quint8 address [] = {255, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 0,
|
|
|
|
(quint8)(universe >> 8), (quint8)(universe & 0xff)};
|
|
|
|
return QHostAddress(address);
|
|
|
|
};
|
2021-06-02 09:32:04 -04:00
|
|
|
};
|
|
|
|
|