39 lines
1.6 KiB
C++
39 lines
1.6 KiB
C++
#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 DebugToolDrivers::Protocols::CmsisDap::Edbg
|
|
{
|
|
using namespace 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;
|
|
|
|
EdbgTargetPowerManagementInterface::EdbgTargetPowerManagementInterface(EdbgInterface* edbgInterface)
|
|
: edbgInterface(edbgInterface)
|
|
{}
|
|
|
|
void EdbgTargetPowerManagementInterface::enableTargetPower() {
|
|
const auto responseFrame = this->edbgInterface->sendAvrCommandFrameAndWaitForResponseFrame(
|
|
SetParameter(EdbgParameters::CONTROL_TARGET_POWER, 0x01)
|
|
);
|
|
|
|
if (responseFrame.id == EdbgControlResponseId::FAILED) {
|
|
throw Exception("Failed to enable target power via EDBG Control protocol");
|
|
}
|
|
}
|
|
|
|
void EdbgTargetPowerManagementInterface::disableTargetPower() {
|
|
const auto responseFrame = this->edbgInterface->sendAvrCommandFrameAndWaitForResponseFrame(
|
|
SetParameter(EdbgParameters::CONTROL_TARGET_POWER, 0x00)
|
|
);
|
|
|
|
if (responseFrame.id == EdbgControlResponseId::FAILED) {
|
|
throw Exception("Failed to disable target power via EDBG Control protocol");
|
|
}
|
|
}
|
|
}
|