Fixed AVR CMSIS command packet splitting bug

This commit is contained in:
Nav
2022-06-01 21:46:20 +01:00
parent 6f9ba1930d
commit d65e8cf89f

View File

@@ -6,13 +6,13 @@ namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr
std::vector<unsigned char> data; std::vector<unsigned char> data;
auto commandPacket = this->getCommandPacket(); auto commandPacket = this->getCommandPacket();
std::size_t commandPacketSize = commandPacket.size(); std::size_t commandPacketSize = commandPacket.size();
data.resize(3 + commandPacketSize); data.reserve(3 + commandPacketSize);
// FragmentInfo byte // FragmentInfo byte
data[0] = static_cast<unsigned char>((this->getFragmentNumber() << 4) | this->getFragmentCount()); data.emplace_back(static_cast<unsigned char>((this->getFragmentNumber() << 4) | this->getFragmentCount()));
// Size byte // Size byte
data[1] = static_cast<unsigned char>(commandPacketSize >> 8); data.emplace_back(static_cast<unsigned char>(commandPacketSize >> 8));
data[2] = static_cast<unsigned char>(commandPacketSize & 0xFF); data.emplace_back(static_cast<unsigned char>(commandPacketSize & 0xFF));
if (commandPacketSize > 0) { if (commandPacketSize > 0) {
data.insert(data.begin() + 3, commandPacket.begin(), commandPacket.end()); data.insert(data.begin() + 3, commandPacket.begin(), commandPacket.end());