2021-04-04 21:04:12 +01:00
|
|
|
#include "AvrCommand.hpp"
|
|
|
|
|
|
2023-11-17 22:20:39 +00:00
|
|
|
namespace DebugToolDrivers::Microchip::Protocols::Edbg::Avr
|
2022-02-05 15:32:08 +00:00
|
|
|
{
|
2022-10-01 20:42:37 +01:00
|
|
|
AvrCommand::AvrCommand(
|
|
|
|
|
std::size_t fragmentCount,
|
|
|
|
|
std::size_t fragmentNumber,
|
|
|
|
|
const std::vector<unsigned char>& commandPacket
|
|
|
|
|
)
|
|
|
|
|
: Command(0x80)
|
|
|
|
|
{
|
|
|
|
|
const auto commandPacketSize = commandPacket.size();
|
|
|
|
|
this->data.reserve(commandPacketSize + 3);
|
|
|
|
|
|
2022-02-05 15:32:08 +00:00
|
|
|
// FragmentInfo byte
|
2022-10-01 20:42:37 +01:00
|
|
|
this->data.emplace_back(static_cast<unsigned char>((fragmentNumber << 4) | fragmentCount));
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2022-02-05 15:32:08 +00:00
|
|
|
// Size byte
|
2022-10-01 20:42:37 +01:00
|
|
|
this->data.emplace_back(static_cast<unsigned char>(commandPacketSize >> 8));
|
|
|
|
|
this->data.emplace_back(static_cast<unsigned char>(commandPacketSize & 0xFF));
|
2021-04-04 21:04:12 +01:00
|
|
|
|
2022-02-05 15:32:08 +00:00
|
|
|
if (commandPacketSize > 0) {
|
2022-10-01 20:42:37 +01:00
|
|
|
// Packet data
|
|
|
|
|
this->data.insert(this->data.begin() + 3, commandPacket.begin(), commandPacket.end());
|
2022-02-05 15:32:08 +00:00
|
|
|
}
|
2021-04-04 21:04:12 +01:00
|
|
|
}
|
|
|
|
|
}
|