track rx universes seperately from tx universes
This commit is contained in:
parent
f3f5aa3d3e
commit
79be37d38a
|
@ -34,7 +34,7 @@ void QSacnNode::subscribe(const uint16_t num)
|
|||
if (num != sACN::E131_DISCOVERY_UNIVERSE) {
|
||||
qDebug() << "Subscribing to universe" << QString::number(num);
|
||||
Receiver::subscribe(num);
|
||||
universes_.insert(num, new QSacnUniverse(this, Receiver::universe(num)));
|
||||
rx_universes_.insert(num, new QSacnUniverse(this, Receiver::universe(num)));
|
||||
}
|
||||
for (QNetworkInterface &iface : QNetworkInterface::allInterfaces())
|
||||
joinMulticastGroup(IPv4MulticastAddress(num), iface);
|
||||
|
@ -52,12 +52,39 @@ void QSacnNode::unsubscribe(const uint16_t num)
|
|||
|
||||
if (Receiver::universe(num)) {
|
||||
qDebug() << "Unsubscribing from universe " << QString::number(num);
|
||||
delete universes_.take(num);
|
||||
delete rx_universes_.take(num);
|
||||
Receiver::unsubscribe(num);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief QSacnNode::create
|
||||
* @param num
|
||||
*/
|
||||
void QSacnNode::create(const uint16_t num)
|
||||
{
|
||||
if (Source::universe(num)) // already subscribed
|
||||
return;
|
||||
|
||||
Source::create(num);
|
||||
tx_universes_.insert(num, new QSacnUniverse(this, Source::universe(num)));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief QSacnNode::terminate
|
||||
* @param num
|
||||
*/
|
||||
void QSacnNode::terminate(const uint16_t num)
|
||||
{
|
||||
if (Source::universe(num)) {
|
||||
qDebug() << "terminating universe " << QString::number(num);
|
||||
delete tx_universes_.take(num);
|
||||
Source::terminate(num);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief QSacnNode::UdpPayloadReceiver
|
||||
*/
|
||||
|
|
|
@ -21,15 +21,20 @@ class QT_EXPORT QSacnNode
|
|||
|
||||
public:
|
||||
explicit QSacnNode(QObject *parent = nullptr, QUuid = QUuid::createUuid());
|
||||
QSacnUniverse * universe(const uint16_t u) {return universes_.value(u); }
|
||||
|
||||
// rlp component
|
||||
void rlpSend(const ACN::PDU::Stream, const ACN::SDT::UDP::ipAddress&) override;
|
||||
|
||||
// reciever
|
||||
QSacnUniverse * universe(const uint16_t u) {return rx_universes_.value(u); }
|
||||
void subscribe(const uint16_t universe = 1) override;
|
||||
void unsubscribe(const uint16_t) override;
|
||||
|
||||
// source
|
||||
QSacnUniverse * source(const uint16_t u) {return tx_universes_.value(u); }
|
||||
void create(const uint16_t) override;
|
||||
void terminate(const uint16_t) override;
|
||||
|
||||
signals:
|
||||
void foundUniverse(
|
||||
std::shared_ptr<sACN::EXTENDED::DISCOVERY::discoveredUniverse>);
|
||||
|
@ -37,7 +42,8 @@ signals:
|
|||
private:
|
||||
void udpReceive();
|
||||
|
||||
QHash<uint16_t, QSacnUniverse*> universes_;
|
||||
QHash<uint16_t, QSacnUniverse*> rx_universes_;
|
||||
QHash<uint16_t, QSacnUniverse*> tx_universes_;
|
||||
|
||||
public:
|
||||
// 9.3.1 Allocation of IPv4 Multicast Addresses
|
||||
|
|
Loading…
Reference in New Issue