From 8b021bdd3acb39b2aa2c249537af4c31e5337ee1 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Fri, 4 Oct 2019 08:25:37 +0200 Subject: [PATCH] ftdijtag: add shiftIR variant with value passed by value instead of ref. Used when the command is up to 8bits with no read --- ftdijtag.cpp | 9 +++++++++ ftdijtag.hpp | 1 + 2 files changed, 10 insertions(+) diff --git a/ftdijtag.cpp b/ftdijtag.cpp index 6d49740..cd2ea41 100644 --- a/ftdijtag.cpp +++ b/ftdijtag.cpp @@ -302,6 +302,15 @@ int FtdiJtag::shiftDR(unsigned char *tdi, unsigned char *tdo, int drlen, int end return 0; } +int FtdiJtag::shiftIR(unsigned char tdi, int irlen, int end_state) +{ + if (irlen > 8) { + cerr << "Error: this method this direct char don't support more than 1 byte" << endl; + return -1; + } + return shiftIR(&tdi, NULL, irlen, end_state); +} + int FtdiJtag::shiftIR(unsigned char *tdi, unsigned char *tdo, int irlen, int end_state) { display("%s: avant shiftIR\n", __func__); diff --git a/ftdijtag.hpp b/ftdijtag.hpp index 791e538..e5760aa 100644 --- a/ftdijtag.hpp +++ b/ftdijtag.hpp @@ -15,6 +15,7 @@ class FtdiJtag : public FTDIpp_MPSSE { int detectChain(std::vector &devices, int max_dev); int shiftIR(unsigned char *tdi, unsigned char *tdo, int irlen, int end_state = RUN_TEST_IDLE); + int shiftIR(unsigned char tdi, int irlen, int end_state = RUN_TEST_IDLE); int shiftDR(unsigned char *tdi, unsigned char *tdo, int drlen, int end_state = RUN_TEST_IDLE); int read_write(unsigned char *tdi, unsigned char *tdo, int len, char last);