A2B: Set timestamp field in HardwareA2BPacket::DecodeToMessage
parent
a44952be13
commit
1dfed4c9c4
|
|
@ -159,6 +159,7 @@ bool Decoder::decode(std::shared_ptr<Message>& result, const std::shared_ptr<Pac
|
||||||
|
|
||||||
A2BMessage& msg = *static_cast<A2BMessage*>(result.get());
|
A2BMessage& msg = *static_cast<A2BMessage*>(result.get());
|
||||||
msg.network = packet->network;
|
msg.network = packet->network;
|
||||||
|
msg.timestamp *= timestampResolution;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case Network::Type::LIN: {
|
case Network::Type::LIN: {
|
||||||
|
|
|
||||||
|
|
@ -4,20 +4,18 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
const size_t HardwareA2BPacket::coreMiniMessageHeaderSize = 28;
|
const size_t HardwareA2BPacket::a2bMessageMaxLength = sizeof(HardwareA2BPacket) + 1024;
|
||||||
const size_t HardwareA2BPacket::a2bMessageMaxLength = (size_t)HardwareA2BPacket::coreMiniMessageHeaderSize + 1024;
|
|
||||||
const size_t HardwareA2BPacket::a2bHeaderSize = 6;
|
|
||||||
|
|
||||||
std::shared_ptr<Message> HardwareA2BPacket::DecodeToMessage(const std::vector<uint8_t>& bytestream) {
|
std::shared_ptr<Message> HardwareA2BPacket::DecodeToMessage(const std::vector<uint8_t>& bytestream) {
|
||||||
|
|
||||||
if(bytestream.size() < coreMiniMessageHeaderSize)
|
if(bytestream.size() < sizeof(HardwareA2BPacket))
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
const HardwareA2BPacket* data = (const HardwareA2BPacket*)bytestream.data();
|
const HardwareA2BPacket* data = (const HardwareA2BPacket*)bytestream.data();
|
||||||
|
|
||||||
size_t totalPackedLength = static_cast<size_t>(bytestream.size()) - static_cast<size_t>(coreMiniMessageHeaderSize); // First 28 bytes are message header.
|
size_t totalPackedLength = static_cast<size_t>(bytestream.size()) - sizeof(HardwareA2BPacket); // First 28 bytes are message header.
|
||||||
|
|
||||||
std::shared_ptr<A2BMessage> msg = std::make_shared<A2BMessage>(
|
std::shared_ptr<A2BMessage> msg = std::make_shared<A2BMessage>(
|
||||||
(uint8_t)data->header.channelNum,
|
(uint8_t)data->header.channelNum,
|
||||||
|
|
@ -30,7 +28,8 @@ std::shared_ptr<Message> HardwareA2BPacket::DecodeToMessage(const std::vector<ui
|
||||||
msg->setErrIndicatorBit(data->header.errIndicator);
|
msg->setErrIndicatorBit(data->header.errIndicator);
|
||||||
msg->setSyncFrameBit(data->header.syncFrame);
|
msg->setSyncFrameBit(data->header.syncFrame);
|
||||||
msg->setRFU2(data->header.rfu2);
|
msg->setRFU2(data->header.rfu2);
|
||||||
msg->setAudioBuffer(bytestream.begin() + coreMiniMessageHeaderSize, bytestream.end());
|
msg->timestamp = data->timestamp.TS;
|
||||||
|
msg->setAudioBuffer(bytestream.begin() + sizeof(HardwareA2BPacket), bytestream.end());
|
||||||
|
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ namespace icsneo {
|
||||||
|
|
||||||
typedef uint16_t icscm_bitfield;
|
typedef uint16_t icscm_bitfield;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#pragma pack(push, 2)
|
||||||
struct HardwareA2BPacket {
|
struct HardwareA2BPacket {
|
||||||
|
|
||||||
static std::shared_ptr<Message> DecodeToMessage(const std::vector<uint8_t>& bytestream);
|
static std::shared_ptr<Message> DecodeToMessage(const std::vector<uint8_t>& bytestream);
|
||||||
|
|
@ -33,12 +36,21 @@ struct HardwareA2BPacket {
|
||||||
icscm_bitfield : 11;
|
icscm_bitfield : 11;
|
||||||
icscm_bitfield rfu2;
|
icscm_bitfield rfu2;
|
||||||
} header;
|
} header;
|
||||||
|
uint8_t offset[8];
|
||||||
|
uint16_t stats;
|
||||||
|
struct {
|
||||||
|
uint64_t TS : 60;
|
||||||
|
uint64_t : 3; // Reserved for future status bits
|
||||||
|
uint64_t IsExtended : 1;
|
||||||
|
} timestamp;
|
||||||
|
uint16_t networkID;
|
||||||
|
uint16_t length;
|
||||||
|
|
||||||
static const size_t coreMiniMessageHeaderSize;
|
|
||||||
static const size_t a2bMessageMaxLength;
|
static const size_t a2bMessageMaxLength;
|
||||||
static const size_t a2bHeaderSize;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#pragma pack(pop)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue