From 160088862451d842b54aee7591797f79f129d239 Mon Sep 17 00:00:00 2001 From: Nav Date: Sat, 18 Nov 2023 23:15:11 +0000 Subject: [PATCH] Extract debug tool firmware version at startup --- src/DebugToolDrivers/DebugTool.hpp | 2 ++ src/DebugToolDrivers/Microchip/EdbgDevice.cpp | 5 +++++ src/DebugToolDrivers/Microchip/EdbgDevice.hpp | 7 +++++++ src/DebugToolDrivers/WCH/WchLinkBase.cpp | 4 ++++ src/DebugToolDrivers/WCH/WchLinkBase.hpp | 2 ++ src/TargetController/TargetControllerComponent.cpp | 1 + 6 files changed, 21 insertions(+) diff --git a/src/DebugToolDrivers/DebugTool.hpp b/src/DebugToolDrivers/DebugTool.hpp index 8f7e8924..cc3c0dd9 100644 --- a/src/DebugToolDrivers/DebugTool.hpp +++ b/src/DebugToolDrivers/DebugTool.hpp @@ -45,6 +45,8 @@ public: virtual std::string getSerialNumber() = 0; + virtual std::string getFirmwareVersionString() = 0; + /** * All debug tools that support target power management functions must provide an implementation of the * TargetPowerManagementInterface class, via this function. diff --git a/src/DebugToolDrivers/Microchip/EdbgDevice.cpp b/src/DebugToolDrivers/Microchip/EdbgDevice.cpp index 3a0fa735..75dd1f81 100644 --- a/src/DebugToolDrivers/Microchip/EdbgDevice.cpp +++ b/src/DebugToolDrivers/Microchip/EdbgDevice.cpp @@ -121,6 +121,11 @@ namespace DebugToolDrivers return std::string(data.begin(), data.end()); } + std::string EdbgDevice::getFirmwareVersionString() { + // TODO: Implement this + return "UNKNOWN"; + } + void EdbgDevice::startSession() { using namespace CommandFrames::HouseKeeping; using ResponseFrames::HouseKeeping::ResponseId; diff --git a/src/DebugToolDrivers/Microchip/EdbgDevice.hpp b/src/DebugToolDrivers/Microchip/EdbgDevice.hpp index 62f4cc30..21bf8780 100644 --- a/src/DebugToolDrivers/Microchip/EdbgDevice.hpp +++ b/src/DebugToolDrivers/Microchip/EdbgDevice.hpp @@ -74,6 +74,13 @@ namespace DebugToolDrivers */ std::string getSerialNumber() override; + /** + * Retrieves the EDBG firmware version. + * + * @return + */ + std::string getFirmwareVersionString() override; + /** * Starts a session with the EDBG device using the "Housekeeping" EDBG sub-protocol. */ diff --git a/src/DebugToolDrivers/WCH/WchLinkBase.cpp b/src/DebugToolDrivers/WCH/WchLinkBase.cpp index 6159761d..46c46254 100644 --- a/src/DebugToolDrivers/WCH/WchLinkBase.cpp +++ b/src/DebugToolDrivers/WCH/WchLinkBase.cpp @@ -59,6 +59,10 @@ namespace DebugToolDrivers::Wch return UsbDevice::getSerialNumber(); } + std::string WchLinkBase::getFirmwareVersionString() { + return "v" + this->getDeviceInfo().firmwareVersion.toString(); + } + const DeviceInfo& WchLinkBase::getDeviceInfo() const { if (!this->cachedDeviceInfo.has_value()) { this->cachedDeviceInfo = this->wchLinkInterface->getDeviceInfo(); diff --git a/src/DebugToolDrivers/WCH/WchLinkBase.hpp b/src/DebugToolDrivers/WCH/WchLinkBase.hpp index cf620916..472c7621 100644 --- a/src/DebugToolDrivers/WCH/WchLinkBase.hpp +++ b/src/DebugToolDrivers/WCH/WchLinkBase.hpp @@ -30,6 +30,8 @@ namespace DebugToolDrivers::Wch std::string getSerialNumber() override; + std::string getFirmwareVersionString() override; + protected: WchLinkVariant variant; diff --git a/src/TargetController/TargetControllerComponent.cpp b/src/TargetController/TargetControllerComponent.cpp index 09ee9650..f4b46a45 100644 --- a/src/TargetController/TargetControllerComponent.cpp +++ b/src/TargetController/TargetControllerComponent.cpp @@ -493,6 +493,7 @@ namespace TargetController Logger::info("Debug tool connected"); Logger::info("Debug tool name: " + this->debugTool->getName()); Logger::info("Debug tool serial: " + this->debugTool->getSerialNumber()); + Logger::info("Debug tool firmware version: " + this->debugTool->getFirmwareVersionString()); this->target = targetIt->second(this->environmentConfig.targetConfig); const auto& targetDescriptor = this->getTargetDescriptor();