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