jtag: merge init_internal to CTOR, pass verbose to jtag drivers

This commit is contained in:
Gwenhael Goavec-Merou 2023-07-30 08:45:57 +02:00
parent 4bf4b94bbb
commit 75d98d12e9
2 changed files with 20 additions and 34 deletions

View File

@ -81,21 +81,6 @@ Jtag::Jtag(const cable_t &cable, const jtag_pins_conf_t *pin_conf,
_state(RUN_TEST_IDLE),
_tms_buffer_size(128), _num_tms(0),
_board_name("nope"), device_index(0)
{
init_internal(cable, dev, serial, pin_conf, clkHZ, firmware_path,
invert_read_edge, ip_adr, port);
detectChain(5);
}
Jtag::~Jtag()
{
free(_tms_buffer);
delete _jtag;
}
void Jtag::init_internal(const cable_t &cable, const string &dev, const string &serial,
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ, const string &firmware_path,
const bool invert_read_edge, const string &ip_adr, int port)
{
switch (cable.type) {
case MODE_ANLOGICCABLE:
@ -104,30 +89,30 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
case MODE_FTDI_BITBANG:
if (pin_conf == NULL)
throw std::exception();
_jtag = new FtdiJtagBitBang(cable, pin_conf, dev, serial, clkHZ, _verbose);
_jtag = new FtdiJtagBitBang(cable, pin_conf, dev, serial, clkHZ, verbose);
break;
case MODE_FTDI_SERIAL:
_jtag = new FtdiJtagMPSSE(cable, dev, serial, clkHZ,
invert_read_edge, _verbose);
invert_read_edge, verbose);
break;
case MODE_CH552_JTAG:
_jtag = new CH552_jtag(cable, dev, serial, clkHZ, _verbose);
_jtag = new CH552_jtag(cable, dev, serial, clkHZ, verbose);
break;
case MODE_CH347:
_jtag = new CH347Jtag(clkHZ, _verbose);
_jtag = new CH347Jtag(clkHZ, verbose);
break;
case MODE_DIRTYJTAG:
_jtag = new DirtyJtag(clkHZ, _verbose);
_jtag = new DirtyJtag(clkHZ, verbose);
break;
case MODE_JLINK:
_jtag = new Jlink(clkHZ, _verbose, cable.vid, cable.pid);
_jtag = new Jlink(clkHZ, verbose, cable.vid, cable.pid);
break;
case MODE_USBBLASTER:
_jtag = new UsbBlaster(cable, firmware_path, _verbose);
_jtag = new UsbBlaster(cable, firmware_path, verbose);
break;
case MODE_CMSISDAP:
#ifdef ENABLE_CMSISDAP
_jtag = new CmsisDAP(cable, cable.config.index, _verbose);
_jtag = new CmsisDAP(cable, cable.config.index, verbose);
break;
#else
std::cerr << "Jtag: support for cmsisdap was not enabled at compile time" << std::endl;
@ -135,7 +120,7 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
#endif
case MODE_XVC_CLIENT:
#ifdef ENABLE_XVC
_jtag = new XVC_client(ip_adr, port, clkHZ, _verbose);
_jtag = new XVC_client(ip_adr, port, clkHZ, verbose);
break;
#else
std::cerr << "Jtag: support for xvc-client was not enabled at compile time" << std::endl;
@ -143,17 +128,17 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
#endif
#ifdef ENABLE_LIBGPIOD
case MODE_LIBGPIOD_BITBANG:
_jtag = new LibgpiodJtagBitbang(pin_conf, dev, clkHZ, _verbose);
_jtag = new LibgpiodJtagBitbang(pin_conf, dev, clkHZ, verbose);
break;
#endif
#ifdef ENABLE_JETSONNANOGPIO
case MODE_JETSONNANO_BITBANG:
_jtag = new JetsonNanoJtagBitbang(pin_conf, dev, clkHZ, _verbose);
_jtag = new JetsonNanoJtagBitbang(pin_conf, dev, clkHZ, verbose);
break;
#endif
#ifdef ENABLE_REMOTEBITBANG
case MODE_REMOTEBITBANG:
_jtag = new RemoteBitbang_client(ip_adr, port, _verbose);
_jtag = new RemoteBitbang_client(ip_adr, port, verbose);
break;
#endif
default:
@ -163,8 +148,15 @@ void Jtag::init_internal(const cable_t &cable, const string &dev, const string &
_tms_buffer = (unsigned char *)malloc(sizeof(unsigned char) * _tms_buffer_size);
memset(_tms_buffer, 0, _tms_buffer_size);
detectChain(5);
}
Jtag::~Jtag()
{
free(_tms_buffer);
delete _jtag;
}
int Jtag::detectChain(int max_dev)
{
char message[256];

View File

@ -110,12 +110,6 @@ class Jtag {
JtagInterface *_jtag;
private:
void init_internal(const cable_t &cable, const std::string &dev,
const std::string &serial,
const jtag_pins_conf_t *pin_conf, uint32_t clkHZ,
const std::string &firmware_path,
const bool invert_read_edge,
const std::string &ip_adr, int port);
/*!
* \brief search in fpga_list and misc_dev_list for a device with idcode
* if found insert idcode and irlength in _devices_list and
@ -124,7 +118,7 @@ class Jtag {
* \return false if not found, true otherwise
*/
bool search_and_insert_device_with_idcode(uint32_t idcode);
int8_t _verbose;
bool _verbose;
int _state;
int _tms_buffer_size;
int _num_tms;