Moving ResponseId enum for the HOUSEKEEPING EDBG protocol out of the command frame class header.

This commit is contained in:
Nav
2022-03-01 20:25:16 +00:00
parent 8c3d49df79
commit 15f22b612f
11 changed files with 31 additions and 23 deletions

View File

@@ -5,28 +5,11 @@
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames::HouseKeeping
{
enum class ResponseId : unsigned char
{
OK = 0x80,
LIST = 0x81,
DATA = 0x84,
FAILED = 0xA0,
FAILED_WITH_DATA = 0xA1
};
inline bool operator == (unsigned char rawId, ResponseId id) {
return static_cast<unsigned char>(id) == rawId;
}
inline bool operator == (ResponseId id, unsigned char rawId) {
return rawId == id;
}
template<class PayloadContainerType>
class HouseKeepingCommandFrame: public AvrCommandFrame<PayloadContainerType>
{
public:
using ExpectedResponseFrameType = ResponseFrames::HouseKeepingResponseFrame;
using ExpectedResponseFrameType = ResponseFrames::HouseKeeping::HouseKeepingResponseFrame;
HouseKeepingCommandFrame(): AvrCommandFrame<PayloadContainerType>(ProtocolHandlerId::HOUSE_KEEPING) {}
};

View File

@@ -2,17 +2,17 @@
#include "src/Exceptions/Exception.hpp"
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::HouseKeeping
{
using namespace Bloom::Exceptions;
unsigned char HouseKeepingResponseFrame::getResponseId() {
ResponseId HouseKeepingResponseFrame::getResponseId() {
const auto& payload = this->getPayload();
if (payload.empty()) {
throw Exception("Response ID missing from HOUSEKEEPING response frame payload.");
}
return payload[0];
return static_cast<ResponseId>(payload[0]);
}
}

View File

@@ -2,14 +2,23 @@
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/ResponseFrames/AvrResponseFrame.hpp"
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::ResponseFrames::HouseKeeping
{
enum class ResponseId : unsigned char
{
OK = 0x80,
LIST = 0x81,
DATA = 0x84,
FAILED = 0xA0,
FAILED_WITH_DATA = 0xA1
};
class HouseKeepingResponseFrame: public AvrResponseFrame
{
public:
HouseKeepingResponseFrame() = default;
explicit HouseKeepingResponseFrame(const std::vector<AvrResponse>& avrResponses): AvrResponseFrame(avrResponses) {}
unsigned char getResponseId();
ResponseId getResponseId();
};
}