New base class for EDBG Control protocol response frame
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
#include "EdbgControlResponseFrame.hpp"
|
||||
|
||||
#include "src/Exceptions/Exception.hpp"
|
||||
|
||||
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::EdbgControl
|
||||
{
|
||||
using namespace Bloom::Exceptions;
|
||||
|
||||
EdbgControlResponseId EdbgControlResponseFrame::getResponseId() {
|
||||
const auto& payload = this->getPayload();
|
||||
if (payload.empty()) {
|
||||
throw Exception("Response ID missing from EDBG Control response frame payload.");
|
||||
}
|
||||
|
||||
return static_cast<EdbgControlResponseId>(payload[0]);
|
||||
}
|
||||
|
||||
std::vector<unsigned char> EdbgControlResponseFrame::getPayloadData() {
|
||||
const auto& payload = this->getPayload();
|
||||
|
||||
/*
|
||||
* EDBG Control data payloads include two bytes before the data (response ID and version byte) as well as an
|
||||
* additional byte after the data, known as the 'status code'.
|
||||
*/
|
||||
auto data = std::vector<unsigned char>(
|
||||
payload.begin() + 2,
|
||||
payload.end() - 1
|
||||
);
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AvrResponseFrame.hpp"
|
||||
|
||||
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::EdbgControl
|
||||
{
|
||||
enum class EdbgControlResponseId: unsigned char
|
||||
{
|
||||
OK = 0x80,
|
||||
DATA = 0x84,
|
||||
FAILED = 0xA0,
|
||||
};
|
||||
|
||||
class EdbgControlResponseFrame: public AvrResponseFrame
|
||||
{
|
||||
public:
|
||||
EdbgControlResponseFrame() = default;
|
||||
explicit EdbgControlResponseFrame(const std::vector<AvrResponse>& avrResponses)
|
||||
: AvrResponseFrame(avrResponses) {}
|
||||
|
||||
[[nodiscard]] EdbgControlResponseId getResponseId();
|
||||
|
||||
[[nodiscard]] std::vector<unsigned char> getPayloadData() override;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user