EDBG implementation of the TargetPowerManagementInterface
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user