reuse the sACN framing layer PDU
This commit is contained in:
parent
4fa5a2794a
commit
b7ca5c36f5
|
@ -42,6 +42,7 @@ UniverseSender::UniverseSender(Source * source, Universe * universe)
|
|||
, keep_alive_interval(800)
|
||||
, enable_(true)
|
||||
, dmp_(std::make_shared<ACN::DMP::Pdu>())
|
||||
, frame_(std::make_shared<DATA::Pdu>())
|
||||
{
|
||||
// add ourself as a sender for DMP messages
|
||||
mUniverse->addDmpSender(std::bind(&UniverseSender::dataFrameSender, this,
|
||||
|
@ -60,6 +61,9 @@ UniverseSender::UniverseSender(Source * source, Universe * universe)
|
|||
dmp_->setHeader(addrtyp);
|
||||
update_dmp_(); // initial data segment
|
||||
|
||||
// sACN framing layer
|
||||
frame_->setVector(VECTOR_E131_DATA_PACKET);
|
||||
|
||||
// start the thread after setting up the PDU
|
||||
worker_ = std::thread(&UniverseSender::loop_, this);
|
||||
}
|
||||
|
@ -209,22 +213,20 @@ void UniverseSender::update_dmp_()
|
|||
void UniverseSender::dataFrameSender(ACN::PDU::Message<ACN::DMP::Pdu> dmp) const
|
||||
{
|
||||
// sACN Framing Layer
|
||||
auto frame = std::make_shared<DATA::Pdu>();
|
||||
frame->setVector(VECTOR_E131_DATA_PACKET);
|
||||
frame->setHeader(mUniverse->metadata_);
|
||||
frame->setData(dmp);
|
||||
frame_->setHeader(mUniverse->metadata_);
|
||||
frame_->setData(dmp);
|
||||
|
||||
// send
|
||||
switch (mUniverse->destination.type)
|
||||
{
|
||||
case ACN::SDT::SDT_ADDR_NULL:
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame_,
|
||||
IPv4MulticastAddress(mUniverse->metadata_->universe));
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame_,
|
||||
IPv6MulticastAddress(mUniverse->metadata_->universe));
|
||||
break;
|
||||
default:
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame, mUniverse->destination);
|
||||
mSource->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame_, mUniverse->destination);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,8 +23,9 @@
|
|||
*/
|
||||
#pragma once
|
||||
|
||||
#include "../dmx/universe.h"
|
||||
#include "data.h"
|
||||
#include "dmp.h"
|
||||
#include "../dmx/universe.h"
|
||||
#include <condition_variable>
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
|
@ -89,6 +90,8 @@ private:
|
|||
|
||||
void update_dmp_();
|
||||
ACN::PDU::Message<ACN::DMP::Pdu> dmp_;
|
||||
|
||||
ACN::PDU::Message<DATA::Pdu> frame_;
|
||||
void dataFrameSender(ACN::PDU::Message<ACN::DMP::Pdu>) const;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue