make uniform the passing address_type
This commit is contained in:
parent
09b2210616
commit
7c9c62d0fe
|
@ -34,7 +34,7 @@ namespace ACN::DMP {
|
|||
*/
|
||||
uint32_t range::read_(PDU::Stream stream)
|
||||
{
|
||||
switch (length_) {
|
||||
switch (type_.address_length) {
|
||||
case ONE:
|
||||
return stream->readType<uint8_t>();
|
||||
case TWO:
|
||||
|
@ -54,7 +54,7 @@ uint32_t range::read_(PDU::Stream stream)
|
|||
*/
|
||||
void range::write_(PDU::Stream stream, const uint32_t& val) const
|
||||
{
|
||||
switch (length_) {
|
||||
switch (type_.address_length) {
|
||||
case ONE:
|
||||
stream->writeType<uint8_t>(val);
|
||||
case TWO:
|
||||
|
@ -70,14 +70,14 @@ void range::write_(PDU::Stream stream, const uint32_t& val) const
|
|||
size_t range::streamSize() const
|
||||
{
|
||||
auto count = [this] () {
|
||||
switch (type_) {
|
||||
switch (type_.data_type) {
|
||||
case SINGLE:
|
||||
return 1;
|
||||
default:
|
||||
return 3;
|
||||
}
|
||||
};
|
||||
return count() * element_length(length_);
|
||||
return count() * element_length(type_.address_length);
|
||||
}
|
||||
|
||||
|
||||
|
@ -88,7 +88,7 @@ size_t range::streamSize() const
|
|||
void range::iStream(PDU::Stream stream)
|
||||
{
|
||||
address = read_(stream);
|
||||
if (type_ == SINGLE) return;
|
||||
if (type_.data_type == SINGLE) return;
|
||||
incriment = read_(stream);
|
||||
count = read_(stream);
|
||||
}
|
||||
|
@ -101,7 +101,7 @@ void range::iStream(PDU::Stream stream)
|
|||
void range::oStream(PDU::Stream stream) const
|
||||
{
|
||||
write_(stream, address);
|
||||
if (type_ == SINGLE) return;
|
||||
if (type_.data_type == SINGLE) return;
|
||||
write_(stream, incriment);
|
||||
write_(stream, count);
|
||||
}
|
||||
|
@ -131,7 +131,7 @@ void address_pair_list::iStream(PDU::Stream stream)
|
|||
{
|
||||
while(stream->good()) {
|
||||
// Property Address
|
||||
range pr(type_->data_type, type_->address_length);
|
||||
range pr(type_);
|
||||
pr.iStream(stream);
|
||||
|
||||
if (!stream->good() || stream->available() < pr.count * pr.incriment)
|
||||
|
@ -189,7 +189,7 @@ void address_list::iStream(PDU::Stream stream)
|
|||
while(stream->good())
|
||||
{
|
||||
// Property Address
|
||||
addresses.emplace_back(range(type_->data_type, type_->address_length));
|
||||
addresses.emplace_back(range(type_));
|
||||
*stream >> addresses.back();
|
||||
}
|
||||
}
|
||||
|
@ -231,12 +231,12 @@ void Pdu::iStream(PDU::Stream stream)
|
|||
auto header = static_cast<address_type*>(this->header());
|
||||
|
||||
auto dataIsAddressList = [this, header] () {
|
||||
data_ = new address_list(header);
|
||||
data_ = new address_list(*header);
|
||||
*stream_ >> *data_;
|
||||
};
|
||||
|
||||
auto dataIsAdddresPairList = [this, header] () {
|
||||
data_ = new address_pair_list(header);
|
||||
data_ = new address_pair_list(*header);
|
||||
*stream_ >> *data_;
|
||||
};
|
||||
|
||||
|
|
|
@ -106,12 +106,9 @@ struct range
|
|||
/**
|
||||
* @brief range
|
||||
* @param t
|
||||
* @param l
|
||||
*/
|
||||
range(const data_type_t t, const element_length l)
|
||||
: type_(t)
|
||||
, length_(l)
|
||||
{};
|
||||
range(const address_type& t) : type_(t) {};
|
||||
|
||||
uint32_t address = 0; //!< start address
|
||||
uint32_t incriment = 0; //!< property size (number of octets)
|
||||
uint32_t count = 0; //!< number of properties
|
||||
|
@ -121,8 +118,8 @@ struct range
|
|||
void oStream(PDU::Stream) const override;
|
||||
|
||||
private:
|
||||
const data_type_t type_;
|
||||
const element_length length_;
|
||||
const address_type& type_;
|
||||
|
||||
uint32_t read_(PDU::Stream);
|
||||
void write_(PDU::Stream, const uint32_t&) const;
|
||||
};
|
||||
|
@ -144,7 +141,7 @@ struct address_pair_list
|
|||
* @brief address_pair_list
|
||||
* @param t
|
||||
*/
|
||||
address_pair_list(const address_type* t) : type_(t) {};
|
||||
address_pair_list(const address_type& t) : type_(t) {};
|
||||
std::vector<address_data_pair> properties; //!< list of address/data pairs
|
||||
|
||||
size_t streamSize() const override;
|
||||
|
@ -152,7 +149,7 @@ struct address_pair_list
|
|||
void oStream(PDU::Stream) const override;
|
||||
|
||||
private:
|
||||
const address_type* type_;
|
||||
const address_type& type_;
|
||||
};
|
||||
|
||||
|
||||
|
@ -166,7 +163,7 @@ struct address_list
|
|||
* @brief address_list
|
||||
* @param t
|
||||
*/
|
||||
address_list(const address_type* t) : type_(t) {};
|
||||
address_list(const address_type& t) : type_(t) {};
|
||||
std::vector<range> addresses; //!< list of addresses
|
||||
|
||||
size_t streamSize() const override;
|
||||
|
@ -174,7 +171,7 @@ struct address_list
|
|||
void oStream(PDU::Stream) const override;
|
||||
|
||||
private:
|
||||
const address_type* type_;
|
||||
const address_type& type_;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue