AVR EDBG Housekeeping GetParamter command

This commit is contained in:
Nav
2021-11-22 23:11:32 +00:00
parent 2177016e15
commit 0d2393e4e0
2 changed files with 51 additions and 0 deletions

View File

@@ -8,5 +8,6 @@
#include "HouseKeeping/HouseKeepingCommandFrame.hpp"
#include "HouseKeeping/StartSession.hpp"
#include "HouseKeeping/EndSession.hpp"
#include "HouseKeeping/GetParameter.hpp"
#include "AVR8Generic/Avr8GenericCommandFrame.hpp"

View File

@@ -0,0 +1,50 @@
#pragma once
#include <cstdint>
#include "HouseKeepingCommandFrame.hpp"
#include "Parameters.hpp"
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg::Avr::CommandFrames::HouseKeeping
{
class GetParameter: public HouseKeepingCommandFrame
{
public:
explicit GetParameter(const Parameter& parameter): parameter(parameter) {}
GetParameter(const Parameter& parameter, std::uint8_t size): GetParameter(parameter) {
this->setSize(size);
}
void setParameter(const Parameter& parameter) {
this->parameter = parameter;
}
void setSize(std::uint8_t size) {
this->size = size;
}
[[nodiscard]] std::vector<unsigned char> getPayload() const override {
/*
* The get param command consists of 5 bytes:
* 1. Command ID (0x02)
* 2. Version (0x00)
* 3. Param context (Parameter::context)
* 4. Param ID (Parameter::id)
* 5. Param value length (this->size)
*/
auto output = std::vector<unsigned char>(5, 0x00);
output[0] = 0x02;
output[1] = 0x00;
output[2] = static_cast<unsigned char>(this->parameter.context);
output[3] = static_cast<unsigned char>(this->parameter.id);
output[4] = static_cast<unsigned char>(this->size);
return output;
}
private:
Parameter parameter;
std::uint8_t size = 0;
};
}