Interface class for interfacing with the target via ISP
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "src/Targets/Microchip/AVR/TargetSignature.hpp"
|
||||
#include "src/Targets/Microchip/AVR/IspParameters.hpp"
|
||||
#include "src/Targets/Microchip/AVR/Fuse.hpp"
|
||||
|
||||
#include "src/ProjectConfig.hpp"
|
||||
|
||||
namespace Bloom::DebugToolDrivers::TargetInterfaces::Microchip::Avr
|
||||
{
|
||||
/**
|
||||
* Many AVRs can be programmed via an SPI interface. Some debug tools provide access to this interface via the AVR
|
||||
* In-System Programming (ISP) protocol.
|
||||
*/
|
||||
class AvrIspInterface
|
||||
{
|
||||
public:
|
||||
AvrIspInterface() = default;
|
||||
virtual ~AvrIspInterface() = default;
|
||||
|
||||
AvrIspInterface(const AvrIspInterface& other) = default;
|
||||
AvrIspInterface(AvrIspInterface&& other) = default;
|
||||
|
||||
AvrIspInterface& operator = (const AvrIspInterface& other) = default;
|
||||
AvrIspInterface& operator = (AvrIspInterface&& other) = default;
|
||||
|
||||
/**
|
||||
* Configures the ISP interface with user-provided config parameters.
|
||||
*
|
||||
* @param targetConfig
|
||||
*/
|
||||
virtual void configure(const TargetConfig& targetConfig) = 0;
|
||||
|
||||
/**
|
||||
* Configures the ISP interface with the target's ISP parameters.
|
||||
*
|
||||
* @param ispParameters
|
||||
*/
|
||||
virtual void setIspParameters(const Targets::Microchip::Avr::IspParameters& ispParameters) = 0;
|
||||
|
||||
/**
|
||||
* Should initialise and activate the ISP interface between the debug tool and the AVR target.
|
||||
*/
|
||||
virtual void activate() = 0;
|
||||
|
||||
/**
|
||||
* Should deactivate the ISP interface between the debug tool and the AVR target.
|
||||
*/
|
||||
virtual void deactivate() = 0;
|
||||
|
||||
/**
|
||||
* Should retrieve the AVR signature of the AVR target.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
virtual Targets::Microchip::Avr::TargetSignature getDeviceId() = 0;
|
||||
|
||||
/**
|
||||
* Should read a fuse from the AVR target.
|
||||
*
|
||||
* @param fuseType
|
||||
* @return
|
||||
*/
|
||||
virtual Targets::Microchip::Avr::Fuse readFuse(Targets::Microchip::Avr::FuseType fuseType) = 0;
|
||||
|
||||
/**
|
||||
* Should read the lock bit byte from the AVR target.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
virtual unsigned char readLockBitByte() = 0;
|
||||
|
||||
/**
|
||||
* Should program a particular fuse byte.
|
||||
*
|
||||
* @param fuse
|
||||
*/
|
||||
virtual void programFuse(Targets::Microchip::Avr::Fuse fuse) = 0;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user