EDBG AVR response frames for the AVRISP sub-protocol.

This commit is contained in:
Nav
2022-03-02 22:46:22 +00:00
parent a9fe05e802
commit 27bb6da374
3 changed files with 47 additions and 0 deletions

View File

@@ -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/Discovery/DiscoveryResponseFrame.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/Events/AVR8Generic/BreakEvent.cpp
src/DebugToolDrivers/Protocols/CMSIS-DAP/CmsisDapInterface.cpp

View File

@@ -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]);
}
}

View File

@@ -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();
};
}