1
0
Fork 0

remove packed struct for portability

This commit is contained in:
Kevin Matz 2021-09-19 09:03:41 -04:00
parent 6cc9f6e025
commit 4cd8289a85
2 changed files with 41 additions and 10 deletions

View File

@ -95,6 +95,34 @@ void Pdu::iStream(ACN::PDU::Stream stream)
}
/**
* @brief connection_flags::iStream
* @param stream
*/
void connection_flags::iStream(ACN::PDU::Stream stream)
{
*stream >> flags_reserved;
if (flags_reserved & 0b1)
incrementalUpdates = true;
else
incrementalUpdates = false;
}
/**
* @brief connection_flags::oStream
* @param stream
*/
void connection_flags::oStream(ACN::PDU::Stream stream) const
{
uint8_t byte = flags_reserved;
if (incrementalUpdates)
byte |= 0b1;
*stream << byte;
}
/**
* @brief client_connect_data::iStream
* @param stream
@ -104,7 +132,7 @@ void client_connect_data::iStream(ACN::PDU::Stream stream)
stream->readString(clientScope, 63);
*stream >> version;
stream->readString(searchDomain, 231);
*stream >> flags.byte;
*stream >> flags;
*stream >> *pdu;
}
@ -118,7 +146,7 @@ void client_connect_data::oStream(ACN::PDU::Stream stream) const
stream->writeString(clientScope, 63);
*stream << version;
stream->writeString(searchDomain, 231);
*stream << flags.byte;
*stream << flags;
*stream << pdu;
}
@ -155,7 +183,7 @@ void connect_reply_data::oStream(ACN::PDU::Stream stream) const
*/
void client_entry_update_data::iStream(ACN::PDU::Stream stream)
{
*stream >> flags.byte;
*stream >> flags;
*stream >> *pdu;
}
@ -166,7 +194,7 @@ void client_entry_update_data::iStream(ACN::PDU::Stream stream)
*/
void client_entry_update_data::oStream(ACN::PDU::Stream stream) const
{
*stream << flags.byte;
*stream << flags;
*stream << pdu;
}

View File

@ -117,12 +117,15 @@ public:
/**
* @brief The connection_flags union
*/
union connection_flags {
uint8_t byte; //!< packed byte
struct {
bool incrementalUpdates : 1; //!< incremental updates
uint8_t flags_reserved : 7; //!< Brokers shall ignore.
}__attribute__((packed));
struct connection_flags
: ACN::PDU::pdu_stream_object
{
bool incrementalUpdates; //!< incremental updates
uint8_t flags_reserved; //!< Brokers shall ignore.
size_t streamSize() const override { return 1; }
void iStream(ACN::PDU::Stream) override;
void oStream(ACN::PDU::Stream) const override;
};