EDBG AVR response frames for the AVRISP sub-protocol.
This commit is contained in:
@@ -103,6 +103,7 @@ add_executable(Bloom
|
|||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AVR8Generic/Avr8GenericResponseFrame.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AVR8Generic/Avr8GenericResponseFrame.cpp
|
||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/Discovery/DiscoveryResponseFrame.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/Discovery/DiscoveryResponseFrame.cpp
|
||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/HouseKeeping/HouseKeepingResponseFrame.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/HouseKeeping/HouseKeepingResponseFrame.cpp
|
||||||
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AVRISP/AvrIspResponseFrame.cpp
|
||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/AvrEvent.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/AvrEvent.cpp
|
||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/Events/AVR8Generic/BreakEvent.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/Events/AVR8Generic/BreakEvent.cpp
|
||||||
src/DebugToolDrivers/Protocols/CMSIS-DAP/CmsisDapInterface.cpp
|
src/DebugToolDrivers/Protocols/CMSIS-DAP/CmsisDapInterface.cpp
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
#include "AvrIspResponseFrame.hpp"
|
||||||
|
|
||||||
|
#include "src/Exceptions/Exception.hpp"
|
||||||
|
|
||||||
|
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::AvrIsp
|
||||||
|
{
|
||||||
|
using namespace Bloom::Exceptions;
|
||||||
|
|
||||||
|
StatusCode AvrIspResponseFrame::getStatusCode() {
|
||||||
|
const auto& payload = this->getPayload();
|
||||||
|
|
||||||
|
if (payload.size() < 2) {
|
||||||
|
throw Exception("Status code missing from AVRISP response frame payload.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return static_cast<StatusCode>(payload[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AvrResponseFrame.hpp"
|
||||||
|
|
||||||
|
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::AvrIsp
|
||||||
|
{
|
||||||
|
enum class StatusCode: unsigned char
|
||||||
|
{
|
||||||
|
OK = 0x00,
|
||||||
|
TIMEOUT = 0x80,
|
||||||
|
FAILED = 0xC0,
|
||||||
|
};
|
||||||
|
|
||||||
|
class AvrIspResponseFrame: public AvrResponseFrame
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AvrIspResponseFrame() = default;
|
||||||
|
explicit AvrIspResponseFrame(const std::vector<AvrResponse>& avrResponses)
|
||||||
|
: AvrResponseFrame(avrResponses) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extracts the status code from the response frame payload.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
[[nodiscard]] StatusCode getStatusCode();
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user