remove silly typedefs

This commit is contained in:
Kevin Matz 2021-01-09 14:47:49 -05:00
parent 56a0bf0f25
commit 4f268fffde
15 changed files with 52 additions and 64 deletions

View File

@ -35,14 +35,14 @@ address_type::address_type(uint8_t val) {
width = (address_length)(val & 0b11);
}
range::range(stream_ptr stream, data_type t, address_length l) {
range::range(PDU::Stream stream, data_type t, address_length l) {
address = read(stream, l);
if (t == SINGLE) return;
incriment = read(stream, l);
count = read(stream, l);
}
uint32_t range::read(stream_ptr stream, address_length length) {
uint32_t range::read(PDU::Stream stream, address_length length) {
switch (length) {
case ONE:
return stream->read8();
@ -56,7 +56,7 @@ uint32_t range::read(stream_ptr stream, address_length length) {
}
Pdu::Pdu(stream_ptr stream)
Pdu::Pdu(PDU::Stream stream)
: PDU::Pdu(stream, 1) // vectors are 1 octet
{
if (stream->fail()) return;

View File

@ -36,8 +36,7 @@ using std::uint8_t;
using std::uint32_t;
using std::vector;
using std::pair;
using std::shared_ptr;
using PDU::stream_ptr;
using PDU::Block;
// 5.1.4 Address and Data Types
enum data_type {
@ -69,9 +68,9 @@ struct range {
uint32_t incriment;
uint32_t count;
range() {};
range(stream_ptr, data_type, address_length);
range(PDU::Stream, data_type, address_length);
private:
uint32_t read(stream_ptr, address_length);
uint32_t read(PDU::Stream, address_length);
};
typedef pair<range, vector<uint8_t>> set_property;
@ -112,11 +111,10 @@ class Pdu
: public PDU::Pdu
{
public:
Pdu(stream_ptr);
Pdu(PDU::Stream);
private:
void readSetData();
};
typedef std::shared_ptr<Pdu> pdu_ptr;
} // DMP

View File

@ -28,7 +28,7 @@
namespace ACN {
namespace PDU {
Pdu::Pdu(stream_ptr stream, size_t vector_size)
Pdu::Pdu(Stream stream, size_t vector_size)
: flags_(stream->peek())
{
header_ = 0;
@ -59,7 +59,7 @@ Pdu::Pdu(stream_ptr stream, size_t vector_size)
}
// create a stream buffer for the header and data
buffer_ = stream_ptr(new pdu_stream(stream->data(), len));
buffer_ = Stream(new pdu_stream(stream->data(), len));
if (buffer_->available() != len) {
stream->setstate(stream->rdstate() | std::ios_base::failbit);
return;
@ -109,7 +109,7 @@ pdu_data * Pdu::data() {
}
void Pdu::readLength(stream_ptr stream) {
void Pdu::readLength(Stream stream) {
length_ = stream->read16() & 0x0fff; // high 4 bytes are flags
if (flags_.hasLength)
length_ = (length_ << 8 ) | stream->read8();

View File

@ -50,13 +50,6 @@ struct pdu_flags {
pdu_flags(uint8_t);
};
class pdu_stream;
class Pdu;
typedef shared_ptr<pdu_stream> stream_ptr;
typedef shared_ptr<Pdu> pdu_ptr;
typedef vector<pdu_ptr> pdu_block;
typedef shared_ptr<pdu_block> block_ptr;
// MAYBE: remove virtuals?
// Arduino doen't enable RTTI for run-time polymorphism.
struct pdu_header { virtual ~pdu_header() {} };
@ -91,6 +84,7 @@ public:
private:
pdu_buffer _buffer;
};
using Stream = shared_ptr<pdu_stream>;
/**
@ -106,7 +100,7 @@ private:
*/
class Pdu {
public:
Pdu(stream_ptr, size_t vector_size);
Pdu(Stream, size_t vector_size);
~Pdu();
// getters
@ -115,20 +109,20 @@ public:
const uint32_t vector();
pdu_header * header();
pdu_data * data();
pdu_ptr parent() {return parent_;}
stream_ptr buffer() {return buffer_;}
shared_ptr<Pdu> parent() {return parent_;}
Stream buffer() {return buffer_;}
// setters
void setParent (pdu_ptr pdu) {parent_ = pdu;}
void setInherit(pdu_ptr pdu) {inherit_ = pdu;}
void setParent (shared_ptr<Pdu> pdu) {parent_ = pdu;}
void setInherit(shared_ptr<Pdu> pdu) {inherit_ = pdu;}
protected:
pdu_flags flags_;
uint32_t length_;
uint32_t vector_;
pdu_ptr parent_;
pdu_ptr inherit_;
stream_ptr buffer_;
pdu_flags flags_;
uint32_t length_;
uint32_t vector_;
shared_ptr<Pdu> parent_;
shared_ptr<Pdu> inherit_;
Stream buffer_;
// private setters
void setHeader (pdu_header * h) {header_ = h;}
@ -138,7 +132,7 @@ private:
pdu_header * header_;
pdu_data * data_;
void readLength(stream_ptr);
void readLength(Stream);
void readVector(uint8_t);
};
@ -153,7 +147,7 @@ using Block = std::shared_ptr<std::vector<std::shared_ptr<T>>>;
@return std::shared_ptr<std::vector<std::shared_ptr<T>>> A block of PDU
*/
template<typename T>
Block<T> readBlock(stream_ptr buffer, shared_ptr<PDU::Pdu> parent = 0) {
Block<T> readBlock(Stream buffer, shared_ptr<PDU::Pdu> parent = 0) {
auto block = Block<T>(new vector<shared_ptr<T>>);
while(buffer->good()) {
shared_ptr<T> pdu(new T(buffer));
@ -171,5 +165,6 @@ Block<T> readBlock(stream_ptr buffer, shared_ptr<PDU::Pdu> parent = 0) {
}
} // PDU
} // ACN

View File

@ -29,7 +29,7 @@ namespace ACN {
namespace RLP {
namespace UDP {
preamble_t::preamble_t(PDU::stream_ptr stream) {
preamble_t::preamble_t(PDU::Stream stream) {
length = stream->read16();
postamble_size = stream->read16();
stream->read(acn_id, 12);

View File

@ -35,7 +35,6 @@ namespace UDP {
using std::uint8_t;
using std::uint16_t;
using PDU::stream_ptr;
// The ACN Packet Identifier shall be the text string
// “ASC-E1.17\0\0\0” encoded in [ASCII].
@ -50,7 +49,7 @@ struct preamble_t {
uint16_t length;
uint16_t postamble_size;
uint8_t acn_id[12];
preamble_t(stream_ptr);
preamble_t(PDU::Stream);
operator bool();
};

View File

@ -27,7 +27,7 @@
namespace ACN {
namespace RLP {
rlp_header::rlp_header(PDU::stream_ptr stream)
rlp_header::rlp_header(PDU::Stream stream)
: PDU::pdu_header()
{
stream->read(cid, 16);
@ -35,7 +35,7 @@ rlp_header::rlp_header(PDU::stream_ptr stream)
stream->setstate(stream->rdstate() | std::ios_base::failbit);
}
Pdu::Pdu(PDU::stream_ptr stream)
Pdu::Pdu(PDU::Stream stream)
: ACN::PDU::Pdu(stream, 4)
{
if (stream->fail()) return;

View File

@ -30,23 +30,20 @@
namespace ACN {
namespace RLP {
using PDU::stream_ptr;
// 2.6.1.2.2. Header Field in Root Layer PDUs
// The Header field in Root Layer PDUs shall contain the CID of the component
// that generated the PDU (the Source CID).
struct rlp_header : PDU::pdu_header {
uint8_t cid[16];
rlp_header(stream_ptr);
rlp_header(PDU::Stream);
};
class Pdu
: public PDU::Pdu
{
public:
Pdu(PDU::stream_ptr);
Pdu(PDU::Stream);
};
typedef std::shared_ptr<Pdu> pdu_ptr;
} // RLP
} // ACN

View File

@ -27,7 +27,7 @@
namespace SACN {
namespace DATA {
frame_header::frame_header(PDU::stream_ptr stream) {
frame_header::frame_header(PDU::Stream stream) {
stream->read(source_name, 64);
if (stream->gcount() != 64)
stream->setstate(stream->rdstate() | std::ios_base::failbit);
@ -38,7 +38,7 @@ frame_header::frame_header(PDU::stream_ptr stream) {
universe = stream->read16();
}
Pdu::Pdu(PDU::stream_ptr stream)
Pdu::Pdu(PDU::Stream stream)
: PDU::Pdu(stream, 4) // vectors are 4 octets
{
if (stream->fail()) return;

View File

@ -30,7 +30,6 @@ namespace DATA {
using std::uint8_t;
using std::uint16_t;
using PDU::stream_ptr;
// Table 6-1: E1.31 Data Packet Framing Layer
struct frame_header : PDU::pdu_header {
@ -40,7 +39,7 @@ struct frame_header : PDU::pdu_header {
uint8_t sequence_number;
uint8_t options;
uint16_t universe;
frame_header(stream_ptr);
frame_header(PDU::Stream);
};
// 6.2.6 E1.31 Data Packet: Options
@ -54,10 +53,8 @@ class Pdu
: public PDU::Pdu
{
public:
Pdu(PDU::stream_ptr);
Pdu(PDU::Stream);
};
typedef std::shared_ptr<Pdu> pdu_ptr;
} // DATA
} // SACN

View File

@ -61,7 +61,7 @@ void EspReceiver::udpHandler(AsyncUDPPacket udp) {
if (!udp.localPort() == ACN_SDT_MULTICAST_PORT)
return;
PDU::stream_ptr packet(new PDU::pdu_stream(udp.data(), udp.available()));
PDU::Stream packet(new PDU::pdu_stream(udp.data(), udp.available()));
packetHandler(packet); // from base class, SACN::Receiver
}

View File

@ -51,7 +51,7 @@ Layer 4 only. Verificiton of layer 3 (UDP port) must be handled prior to callin
@param packet is a shared pointer to the UDP data buffer.
*/
void Receiver::packetHandler(PDU::stream_ptr packet) {
void Receiver::packetHandler(PDU::Stream packet) {
// verify the UDP preamble
RLP::UDP::preamble_t preamble(packet);
@ -101,7 +101,7 @@ Receive VECTOR_ROOT_E131_DATA vector'd packets.
@param pdu is a shared pointer to the PDU
*/
void Receiver::rootDataHandler(RLP::pdu_ptr root) {
void Receiver::rootDataHandler(shared_ptr<RLP::Pdu> root) {
auto block = PDU::readBlock<DATA::Pdu>(root->buffer(), root);
if (root->buffer()->fail())
return;
@ -128,7 +128,7 @@ Merging will be based on frame header. PDU data will be read as a block of DMP
@param pdu is a shared pointer to the PDU
*/
void Receiver::dataPacketHandler(DATA::pdu_ptr frame) {
void Receiver::dataPacketHandler(shared_ptr<DATA::Pdu> frame) {
// header may be inherited. check that one exists
if (!frame->header())
return;

View File

@ -39,10 +39,10 @@ public:
SACN::Universe * universe(uint16_t universe);
protected:
void packetHandler(PDU::stream_ptr);
void packetHandler(PDU::Stream);
void rootDataHandler(RLP::pdu_ptr);
void dataPacketHandler(DATA::pdu_ptr);
void rootDataHandler(shared_ptr<RLP::Pdu>);
void dataPacketHandler(shared_ptr<DATA::Pdu>);
private:
std::unordered_map <uint16_t, SACN::Universe *> universes_;

View File

@ -32,13 +32,13 @@ Universe::Universe()
synchronized_ = false;
}
void Universe::set(pdu_ptr pdu) {
void Universe::set(shared_ptr<DMP::Pdu> dmp) {
// 7.3 Address Type and Data Type
// Sources shall set the DMP Layer's Address Type and Data Type to 0xa1.
// Receivers shall discard the packet if the received value is not 0xa1.
if (!pdu->header())
if (!dmp->header())
return;
auto type = (ACN::DMP::address_type*)pdu->header();
auto type = (ACN::DMP::address_type*)dmp->header();
if (!type->z_reserved) return; // needs to be true, but why?
if (type->relative) return;
if (type->type != ACN::DMP::ARRAY) return;
@ -46,9 +46,9 @@ void Universe::set(pdu_ptr pdu) {
if (type->width != ACN::DMP::TWO) return;
// only act on the first property pair in the data
if (!pdu->data())
if (!dmp->data())
return;
auto data = (ACN::DMP::dmp_set_data*)pdu->data();
auto data = (ACN::DMP::dmp_set_data*)dmp->data();
auto prop = data->properties.front();
auto pr = prop.first;
@ -76,4 +76,4 @@ void Universe::set(pdu_ptr pdu) {
DMX::Universe::set(prop.second);
}
};
}; // SACN

View File

@ -25,18 +25,20 @@
#include "sacn.h"
#include "../dmx/universe.h"
#include <memory>
namespace SACN {
using ACN::PDU::pdu_ptr;
using std::shared_ptr;
class Universe
: public DMX::Universe
{
public:
Universe();
void set(pdu_ptr);
bool isSyncronized() const {return synchronized_;};
void set(shared_ptr<DMP::Pdu>);
private:
bool synchronized_;
};