metadata is a more descriptive property name
This commit is contained in:
parent
63ee24d334
commit
e34a5acb5c
|
@ -47,7 +47,7 @@ QSacnUniverse::~QSacnUniverse()
|
||||||
*/
|
*/
|
||||||
const QString QSacnUniverse::sourceName() const
|
const QString QSacnUniverse::sourceName() const
|
||||||
{
|
{
|
||||||
auto metadata = universe_->provenance();
|
auto metadata = universe_->metadata();
|
||||||
return metadata ? QString::fromUtf8(metadata->source_name.c_str()) : QString();
|
return metadata ? QString::fromUtf8(metadata->source_name.c_str()) : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ const QString QSacnUniverse::sourceName() const
|
||||||
*/
|
*/
|
||||||
uint16_t QSacnUniverse::number() const
|
uint16_t QSacnUniverse::number() const
|
||||||
{
|
{
|
||||||
auto metadata = universe_->provenance();
|
auto metadata = universe_->metadata();
|
||||||
return metadata ? metadata->universe : 0;
|
return metadata ? metadata->universe : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ uint16_t QSacnUniverse::number() const
|
||||||
*/
|
*/
|
||||||
uint8_t QSacnUniverse::priority() const
|
uint8_t QSacnUniverse::priority() const
|
||||||
{
|
{
|
||||||
auto metadata = universe_->provenance();
|
auto metadata = universe_->metadata();
|
||||||
return metadata ? metadata->priority : 0;
|
return metadata ? metadata->priority : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@ void QSacnUniverse::setOptions(sACN::DATA::data_options o)
|
||||||
if (!isEditable())
|
if (!isEditable())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
universe_->provenance()->options = o;
|
universe_->metadata()->options = o;
|
||||||
emit dataChanged();
|
emit dataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ void QSacnUniverse::setPriority(uint8_t p)
|
||||||
if (!isEditable())
|
if (!isEditable())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
universe_->provenance()->priority = p;
|
universe_->metadata()->priority = p;
|
||||||
emit dataChanged();
|
emit dataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,7 +197,7 @@ void QSacnUniverse::setSyncAddress(uint16_t a)
|
||||||
if (!isEditable())
|
if (!isEditable())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
universe_->provenance()->sync_address = a;
|
universe_->metadata()->sync_address = a;
|
||||||
emit dataChanged();
|
emit dataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -144,7 +144,7 @@ void ArbitratingUniverse::dataChangedNotifier(DMX::Universe* dmx)
|
||||||
auto universe = dominant_();
|
auto universe = dominant_();
|
||||||
if (!universe)
|
if (!universe)
|
||||||
return;
|
return;
|
||||||
if (sacn->provenance() == universe->provenance())
|
if (sacn->metadata() == universe->metadata())
|
||||||
doDataCallbacks();
|
doDataCallbacks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ std::shared_ptr<DATA::data_header> ArbitratingUniverse::provenance()
|
||||||
{
|
{
|
||||||
auto universe = dominant_();
|
auto universe = dominant_();
|
||||||
if (universe)
|
if (universe)
|
||||||
return universe->provenance();
|
return universe->metadata();
|
||||||
|
|
||||||
auto prov = std::make_shared<DATA::data_header>();
|
auto prov = std::make_shared<DATA::data_header>();
|
||||||
prov->universe = expectedUniverse;
|
prov->universe = expectedUniverse;
|
||||||
|
|
|
@ -71,7 +71,7 @@ public:
|
||||||
void set(std::shared_ptr<ACN::DMP::Pdu>, std::shared_ptr<DATA::data_header>) override;
|
void set(std::shared_ptr<ACN::DMP::Pdu>, std::shared_ptr<DATA::data_header>) override;
|
||||||
virtual uint8_t status() override;
|
virtual uint8_t status() override;
|
||||||
|
|
||||||
std::shared_ptr<DATA::data_header> provenance() override;
|
std::shared_ptr<DATA::data_header> metadata() override;
|
||||||
void setProvenance(std::shared_ptr<DATA::data_header>) override {};
|
void setProvenance(std::shared_ptr<DATA::data_header>) override {};
|
||||||
|
|
||||||
bool isSyncronized() override;
|
bool isSyncronized() override;
|
||||||
|
|
|
@ -199,13 +199,13 @@ void Receiver::extendedReceiver(ACN::PDU::Message<ACN::RLP::Pdu> root)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
auto source = std::static_pointer_cast<DATA::data_header>(frame->header());
|
auto metadata = std::static_pointer_cast<DATA::data_header>(frame->header());
|
||||||
|
|
||||||
if (!universes_.count(source->universe))
|
if (!universes_.count(metadata->universe))
|
||||||
return;
|
return;
|
||||||
auto universe = universes_.at(source->universe)->sourceUniverse(*source);
|
auto universe = universes_.at(metadata->universe)->sourceUniverse(*metadata);
|
||||||
if (!universe)
|
if (!universe)
|
||||||
universe = universes_.at(source->universe)->addNewSource(*source);
|
universe = universes_.at(metadata->universe)->addNewSource(*metadata);
|
||||||
|
|
||||||
/// > \cite sACN 6.2.6 E1.31 Data Packet: Options
|
/// > \cite sACN 6.2.6 E1.31 Data Packet: Options
|
||||||
/// >
|
/// >
|
||||||
|
@ -214,7 +214,7 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
/// > intended for use in visualization or media server preview applications
|
/// > intended for use in visualization or media server preview applications
|
||||||
/// > and shall not be used to generate live output.
|
/// > and shall not be used to generate live output.
|
||||||
/// \bug Preview_Data flag is ignored
|
/// \bug Preview_Data flag is ignored
|
||||||
if (source->options.preview_data)
|
if (metadata->options.preview_data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/// > \cite sACN 6.2.6 E1.31 Data Packet: Options
|
/// > \cite sACN 6.2.6 E1.31 Data Packet: Options
|
||||||
|
@ -223,16 +223,16 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
/// >
|
/// >
|
||||||
/// > allow E1.31 sources to terminate transmission of a stream or of
|
/// > allow E1.31 sources to terminate transmission of a stream or of
|
||||||
/// > universe synchronization without waiting for a timeout to occur.
|
/// > universe synchronization without waiting for a timeout to occur.
|
||||||
if (source->options.stream_terminated)
|
if (metadata->options.stream_terminated)
|
||||||
{
|
{
|
||||||
/// Set the universe's status to TERMINATED.
|
/// Set the universe's status to TERMINATED.
|
||||||
universe->setStatus(Universe::sACN_TERMINATED);
|
universe->setStatus(Universe::sACN_TERMINATED);
|
||||||
/// Resetting the sequencing on terminated universes results in faster reaquision
|
/// Resetting the sequencing on terminated universes results in faster reaquision
|
||||||
/// from the same source without waiting for the sequence to realign.
|
/// from the same source without waiting for the sequence to realign.
|
||||||
universe->provenance()->sequence_number = 0;
|
universe->metadata()->sequence_number = 0;
|
||||||
/// Terminated universe may be deleted as sources.
|
/// Terminated universe may be deleted as sources.
|
||||||
/// The universe may keep itself, in a terminated state, for hold-last-look.
|
/// The universe may keep itself, in a terminated state, for hold-last-look.
|
||||||
universes_[source->universe]->deleteSourceUniverse(*source);
|
universes_[metadata->universe]->deleteSourceUniverse(*metadata);
|
||||||
/// > Any property values in an E1.31 Data Packet containing this bit
|
/// > Any property values in an E1.31 Data Packet containing this bit
|
||||||
/// > shall be ignored.
|
/// > shall be ignored.
|
||||||
return;
|
return;
|
||||||
|
@ -242,8 +242,8 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
/// >
|
/// >
|
||||||
/// > a value of 0 in the Synchronization Address indicates that the universe
|
/// > a value of 0 in the Synchronization Address indicates that the universe
|
||||||
/// > data is not synchronized.
|
/// > data is not synchronized.
|
||||||
if (source->sync_address != 0)
|
if (metadata->sync_address != 0)
|
||||||
subscribe(source->sync_address);
|
subscribe(metadata->sync_address);
|
||||||
|
|
||||||
/// > \cite sACN 6.7.2 Sequence Numbering
|
/// > \cite sACN 6.7.2 Sequence Numbering
|
||||||
/// >
|
/// >
|
||||||
|
@ -260,8 +260,8 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
/// This also prevents the rejection of messages recieved on both IPv4 and
|
/// This also prevents the rejection of messages recieved on both IPv4 and
|
||||||
/// IPv6, which violates the reciever requiement in \cite sACN 9.1 Association
|
/// IPv6, which violates the reciever requiement in \cite sACN 9.1 Association
|
||||||
/// of Multicast Addresses and Universe requirement.
|
/// of Multicast Addresses and Universe requirement.
|
||||||
auto a = universe->provenance()->sequence_number;
|
auto a = universe->metadata()->sequence_number;
|
||||||
auto b = source->sequence_number;
|
auto b = metadata->sequence_number;
|
||||||
if (!(a == 0 && b == 0))
|
if (!(a == 0 && b == 0))
|
||||||
{
|
{
|
||||||
int dif = b - a;
|
int dif = b - a;
|
||||||
|
@ -281,7 +281,7 @@ void Receiver::dataFrameHandler(ACN::PDU::Message<DATA::Pdu> frame) {
|
||||||
/// > VECTOR_DMP_SET_PROPERTY.
|
/// > VECTOR_DMP_SET_PROPERTY.
|
||||||
switch(dmp->vector()) {
|
switch(dmp->vector()) {
|
||||||
case ACN::DMP::SET_PROPERTY:
|
case ACN::DMP::SET_PROPERTY:
|
||||||
universe->set(dmp, source);
|
universe->set(dmp, metadata);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -76,7 +76,7 @@ void Source::terminate(const uint16_t num)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
universes_mutext_.lock();
|
universes_mutext_.lock();
|
||||||
auto metadata = universes_.at(num)->provenance();
|
auto metadata = universes_.at(num)->metadata();
|
||||||
metadata->options.stream_terminated = true;
|
metadata->options.stream_terminated = true;
|
||||||
universes_.at(num)->setProvenance(metadata);
|
universes_.at(num)->setProvenance(metadata);
|
||||||
universes_.erase(num);
|
universes_.erase(num);
|
||||||
|
@ -126,7 +126,7 @@ void Source::assignUserName(const std::string s)
|
||||||
{
|
{
|
||||||
ACN::Component::assignUserName(s);
|
ACN::Component::assignUserName(s);
|
||||||
for( auto & [_, universe] : universes_ )
|
for( auto & [_, universe] : universes_ )
|
||||||
universe->provenance()->source_name = name();
|
universe->metadata()->source_name = name();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ void Source::discovery_send_()
|
||||||
{
|
{
|
||||||
if (!univ->activeSlots())
|
if (!univ->activeSlots())
|
||||||
continue;
|
continue;
|
||||||
if (univ->provenance()->options.stream_terminated)
|
if (univ->metadata()->options.stream_terminated)
|
||||||
continue;
|
continue;
|
||||||
if (univ->destination.type != ACN::SDT::SDT_ADDR_NULL)
|
if (univ->destination.type != ACN::SDT::SDT_ADDR_NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace sACN {
|
||||||
*/
|
*/
|
||||||
Universe::Universe(Source* src)
|
Universe::Universe(Source* src)
|
||||||
: DMX::Universe(E131_NETWORK_DATA_LOSS_TIMEOUT)
|
: DMX::Universe(E131_NETWORK_DATA_LOSS_TIMEOUT)
|
||||||
, provenance_(std::make_shared<DATA::data_header>())
|
, metadata_(std::make_shared<DATA::data_header>())
|
||||||
, source_(src)
|
, source_(src)
|
||||||
, active_data_slots_(1) // start code
|
, active_data_slots_(1) // start code
|
||||||
, sync_sequence_(0)
|
, sync_sequence_(0)
|
||||||
|
@ -153,7 +153,7 @@ void Universe::set(ACN::PDU::Message<ACN::DMP::Pdu> dmp,
|
||||||
*/
|
*/
|
||||||
void Universe::setProvenance(std::shared_ptr<DATA::data_header> source)
|
void Universe::setProvenance(std::shared_ptr<DATA::data_header> source)
|
||||||
{
|
{
|
||||||
provenance_ = source;
|
metadata_ = source;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -184,7 +184,7 @@ bool Universe::isEditable() const
|
||||||
const std::vector<DATA::data_header> Universe::sources() const
|
const std::vector<DATA::data_header> Universe::sources() const
|
||||||
{
|
{
|
||||||
std::vector<DATA::data_header> keys;
|
std::vector<DATA::data_header> keys;
|
||||||
keys.push_back(*provenance_);
|
keys.push_back(*metadata_);
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ std::shared_ptr<void> Universe::onSourceListChange(std::function<void()>)
|
||||||
*/
|
*/
|
||||||
std::shared_ptr<Universe> Universe::sourceUniverse(const DATA::data_header& src)
|
std::shared_ptr<Universe> Universe::sourceUniverse(const DATA::data_header& src)
|
||||||
{
|
{
|
||||||
if (src == *provenance())
|
if (src == *metadata())
|
||||||
return shared_from_this();
|
return shared_from_this();
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -277,12 +277,12 @@ void Universe::setStatus(uint8_t status)
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Universe::source
|
* @brief Universe::metadata
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
std::shared_ptr<DATA::data_header> Universe::provenance()
|
std::shared_ptr<DATA::data_header> Universe::metadata()
|
||||||
{
|
{
|
||||||
return provenance_;
|
return metadata_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -328,7 +328,7 @@ void Universe::sACNsend() const
|
||||||
/// >
|
/// >
|
||||||
/// > ... The sequence number for a universe shall be incremented by one for
|
/// > ... The sequence number for a universe shall be incremented by one for
|
||||||
/// > every packet sent on that universe...
|
/// > every packet sent on that universe...
|
||||||
provenance_->sequence_number++;
|
metadata_->sequence_number++;
|
||||||
|
|
||||||
// header
|
// header
|
||||||
auto addrtyp = std::make_shared<ACN::DMP::address_type>();
|
auto addrtyp = std::make_shared<ACN::DMP::address_type>();
|
||||||
|
@ -362,7 +362,7 @@ void Universe::sACNsend() const
|
||||||
// sACN Framing Layer
|
// sACN Framing Layer
|
||||||
auto frame = std::make_shared<DATA::Pdu>();
|
auto frame = std::make_shared<DATA::Pdu>();
|
||||||
frame->setVector(VECTOR_E131_DATA_PACKET);
|
frame->setVector(VECTOR_E131_DATA_PACKET);
|
||||||
frame->setHeader(provenance_);
|
frame->setHeader(metadata_);
|
||||||
frame->setData(dmp);
|
frame->setData(dmp);
|
||||||
|
|
||||||
// send
|
// send
|
||||||
|
@ -370,9 +370,9 @@ void Universe::sACNsend() const
|
||||||
{
|
{
|
||||||
case ACN::SDT::SDT_ADDR_NULL:
|
case ACN::SDT::SDT_ADDR_NULL:
|
||||||
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
||||||
IPv4MulticastAddress(provenance_->universe));
|
IPv4MulticastAddress(metadata_->universe));
|
||||||
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame,
|
||||||
IPv6MulticastAddress(provenance_->universe));
|
IPv6MulticastAddress(metadata_->universe));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame, destination);
|
source_->rlpSendUdp(VECTOR_ROOT_E131_DATA, frame, destination);
|
||||||
|
@ -459,7 +459,7 @@ void Universe::tx_loop_()
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setStatus(sACN_TERMINATED); // note the changed operating status
|
setStatus(sACN_TERMINATED); // note the changed operating status
|
||||||
provenance_->options.stream_terminated = true; // set the stream_terminated bit
|
metadata_->options.stream_terminated = true; // set the stream_terminated bit
|
||||||
--terminated_resend; // stream_terminated must be sent 3 times
|
--terminated_resend; // stream_terminated must be sent 3 times
|
||||||
sleep = minimum_update_time; // stay throttled up through the termination sequence
|
sleep = minimum_update_time; // stay throttled up through the termination sequence
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,7 +54,7 @@ public:
|
||||||
|
|
||||||
virtual void set(ACN::PDU::Message<ACN::DMP::Pdu>, std::shared_ptr<DATA::data_header>);
|
virtual void set(ACN::PDU::Message<ACN::DMP::Pdu>, std::shared_ptr<DATA::data_header>);
|
||||||
|
|
||||||
virtual std::shared_ptr<DATA::data_header> provenance();
|
virtual std::shared_ptr<DATA::data_header> metadata();
|
||||||
virtual void setProvenance(std::shared_ptr<DATA::data_header>);
|
virtual void setProvenance(std::shared_ptr<DATA::data_header>);
|
||||||
|
|
||||||
virtual bool isSyncronized();
|
virtual bool isSyncronized();
|
||||||
|
@ -97,7 +97,7 @@ protected:
|
||||||
void sACNsend() const;
|
void sACNsend() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<DATA::data_header> provenance_;
|
std::shared_ptr<DATA::data_header> metadata_;
|
||||||
std::vector<uint8_t> * sync_data_ = nullptr;
|
std::vector<uint8_t> * sync_data_ = nullptr;
|
||||||
Source* source_;
|
Source* source_;
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,7 @@ TEST_F(sACNdataTest, stream_in) {
|
||||||
|
|
||||||
EXPECT_DOUBLE_EQ(universe->rxRate(), 1.2) << "rate calucation mismatch";
|
EXPECT_DOUBLE_EQ(universe->rxRate(), 1.2) << "rate calucation mismatch";
|
||||||
|
|
||||||
auto metadata = universe->provenance();
|
auto metadata = universe->metadata();
|
||||||
ASSERT_TRUE(metadata) << "stream failure";
|
ASSERT_TRUE(metadata) << "stream failure";
|
||||||
|
|
||||||
EXPECT_EQ(metadata->source_name, desc) << "Source Description mismatch";
|
EXPECT_EQ(metadata->source_name, desc) << "Source Description mismatch";
|
||||||
|
|
Loading…
Reference in New Issue