EDBG implementation of the TargetPowerManagementInterface

This commit is contained in:
Nav
2022-03-16 17:12:52 +00:00
parent 97cc3cdce3
commit 3d95a983b6
2 changed files with 63 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
#include "EdbgTargetPowerManagementInterface.hpp"
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/EDBGControl/GetParameter.hpp"
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/AVR/CommandFrames/EDBGControl/SetParameter.hpp"
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg
{
using namespace Bloom::Exceptions;
using Protocols::CmsisDap::Edbg::Avr::ResponseFrames::EdbgControl::EdbgControlResponseId;
using Protocols::CmsisDap::Edbg::Avr::CommandFrames::EdbgControl::GetParameter;
using Protocols::CmsisDap::Edbg::Avr::CommandFrames::EdbgControl::SetParameter;
void EdbgTargetPowerManagementInterface::enableTargetPower() {
auto response = this->edbgInterface.sendAvrCommandFrameAndWaitForResponseFrame(
SetParameter(EdbgParameters::CONTROL_TARGET_POWER, 0x01)
);
if (response.getResponseId() == EdbgControlResponseId::FAILED) {
throw Exception("Failed to enable target power via EDBG Control protocol");
}
}
void EdbgTargetPowerManagementInterface::disableTargetPower() {
auto response = this->edbgInterface.sendAvrCommandFrameAndWaitForResponseFrame(
SetParameter(EdbgParameters::CONTROL_TARGET_POWER, 0x00)
);
if (response.getResponseId() == EdbgControlResponseId::FAILED) {
throw Exception("Failed to disable target power via EDBG Control protocol");
}
}
}

View File

@@ -0,0 +1,29 @@
#pragma once
#include <cstdint>
#include "src/DebugToolDrivers/TargetInterfaces/TargetPowerManagementInterface.hpp"
#include "src/DebugToolDrivers/Protocols/CMSIS-DAP/VendorSpecific/EDBG/EdbgInterface.hpp"
namespace Bloom::DebugToolDrivers::Protocols::CmsisDap::Edbg
{
class EdbgTargetPowerManagementInterface: public TargetInterfaces::TargetPowerManagementInterface
{
public:
explicit EdbgTargetPowerManagementInterface(EdbgInterface& edbgInterface)
: edbgInterface(edbgInterface) {};
/**
* Issues a Set Parameter command to the EDBG tool, to enable the target power.
*/
void enableTargetPower() override;
/**
* Issues a Set Parameter command to the EDBG tool, to disable the target power.
*/
void disableTargetPower() override;
private:
EdbgInterface& edbgInterface;
};
}