EPT PDU i/o
This commit is contained in:
parent
ba3e17361d
commit
01deea9613
|
@ -23,6 +23,8 @@
|
|||
*/
|
||||
|
||||
#include "ept.h"
|
||||
#include "rdmnet.h"
|
||||
#include "rpt.h"
|
||||
|
||||
namespace RDMnet {
|
||||
namespace EPT {
|
||||
|
@ -43,8 +45,18 @@ Pdu::Pdu()
|
|||
void Pdu::iStream(ACN::PDU::Stream stream)
|
||||
{
|
||||
RDMnet::Pdu::iStream(stream); // flags, length, and vector
|
||||
// TODO: header segment // header
|
||||
// TODO: data segment // data
|
||||
createHeader<ept_header>(); // header
|
||||
switch (vector()) // data
|
||||
{
|
||||
case VECTOR_EPT_DATA:
|
||||
createData<DATA::Pdu>();
|
||||
break;
|
||||
case VECTOR_EPT_STATUS:
|
||||
createData<STATUS::Pdu>();
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,8 +78,30 @@ Pdu::Pdu()
|
|||
void Pdu::iStream(ACN::PDU::Stream stream)
|
||||
{
|
||||
RDMnet::Pdu::iStream(stream); // flags, length, and vector
|
||||
// TODO: header segment // header
|
||||
// TODO: data segment // data
|
||||
// has no header segment // header
|
||||
createData<data_data>(); // data
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief data_data::iStream
|
||||
* @param stream
|
||||
*/
|
||||
void data_data::iStream(ACN::PDU::Stream stream)
|
||||
{
|
||||
while (stream->good())
|
||||
data.push_back(stream->readType<uint8_t>());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief data_data::oStream
|
||||
* @param stream
|
||||
*/
|
||||
void data_data::oStream(ACN::PDU::Stream stream) const
|
||||
{
|
||||
for (const auto & byte : data)
|
||||
*stream << byte;
|
||||
}
|
||||
|
||||
} // namespace DATA
|
||||
|
@ -91,8 +125,8 @@ Pdu::Pdu()
|
|||
void Pdu::iStream(ACN::PDU::Stream stream)
|
||||
{
|
||||
RDMnet::Pdu::iStream(stream); // flags, length, and vector
|
||||
// TODO: header segment // header
|
||||
// TODO: data segment // data
|
||||
// has no header segment // header
|
||||
createData< // data
|
||||
}
|
||||
|
||||
} // namespace STATUS
|
||||
|
|
21
rdmnet/ept.h
21
rdmnet/ept.h
|
@ -24,6 +24,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "pdu.h"
|
||||
#include "uuid/uuid.h"
|
||||
|
||||
namespace RDMnet {
|
||||
namespace EPT {
|
||||
|
@ -50,6 +51,17 @@ public:
|
|||
};
|
||||
|
||||
|
||||
struct ept_header
|
||||
: ACN::PDU::pdu_header
|
||||
{
|
||||
UUID::uuid destination_cid;
|
||||
|
||||
size_t streamSize() const override { return UUID_LENGTH; }
|
||||
void iStream(ACN::PDU::Stream s) override { *s >> destination_cid; }
|
||||
void oStream(ACN::PDU::Stream s) const override { *s << destination_cid; }
|
||||
};
|
||||
|
||||
|
||||
namespace DATA {
|
||||
|
||||
/**
|
||||
|
@ -63,6 +75,15 @@ public:
|
|||
void iStream(ACN::PDU::Stream) override;
|
||||
};
|
||||
|
||||
struct data_data
|
||||
: ACN::PDU::pdu_data
|
||||
{
|
||||
std::vector<uint8_t> data;
|
||||
size_t streamSize() const override { return data.size(); }
|
||||
void iStream(ACN::PDU::Stream) override;
|
||||
void oStream(ACN::PDU::Stream) const override;
|
||||
};
|
||||
|
||||
} // namespace DATA
|
||||
|
||||
namespace STATUS {
|
||||
|
|
Loading…
Reference in New Issue