diff --git a/src/DebugToolDrivers/Wch/Protocols/WchLink/WchLinkInterface.cpp b/src/DebugToolDrivers/Wch/Protocols/WchLink/WchLinkInterface.cpp index de5cac75..f0fb4ab2 100644 --- a/src/DebugToolDrivers/Wch/Protocols/WchLink/WchLinkInterface.cpp +++ b/src/DebugToolDrivers/Wch/Protocols/WchLink/WchLinkInterface.cpp @@ -52,10 +52,8 @@ namespace DebugToolDrivers::Wch::Protocols::WchLink }; return DeviceInfo{ - WchFirmwareVersion{response.payload[0], response.payload[1]}, - response.payload.size() >= 4 - ? variantsById.valueAt(response.payload[2]) - : std::nullopt + .firmwareVersion = WchFirmwareVersion{.major = response.payload[0], .minor = response.payload[1]}, + .variant = response.payload.size() >= 4 ? variantsById.valueAt(response.payload[2]) : std::nullopt }; } diff --git a/src/DebugToolDrivers/Wch/WchFirmwareVersion.hpp b/src/DebugToolDrivers/Wch/WchFirmwareVersion.hpp index c8e1935f..8d2221bb 100644 --- a/src/DebugToolDrivers/Wch/WchFirmwareVersion.hpp +++ b/src/DebugToolDrivers/Wch/WchFirmwareVersion.hpp @@ -11,13 +11,7 @@ namespace DebugToolDrivers::Wch std::uint8_t major = 0; std::uint8_t minor = 0; - WchFirmwareVersion() = default; - WchFirmwareVersion(std::uint8_t major, std::uint8_t minor) - : major{major} - , minor{minor} - {} - - std::string toString() const { + [[nodiscard]] std::string toString() const { return std::to_string(this->major) + "." + std::to_string(this->minor); } diff --git a/src/DebugToolDrivers/Wch/WchLinkBase.cpp b/src/DebugToolDrivers/Wch/WchLinkBase.cpp index 306a6d37..350b16a9 100644 --- a/src/DebugToolDrivers/Wch/WchLinkBase.cpp +++ b/src/DebugToolDrivers/Wch/WchLinkBase.cpp @@ -82,7 +82,17 @@ namespace DebugToolDrivers::Wch } void WchLinkBase::postInit() { - Logger::info("WCH-Link firmware version: " + this->getDeviceInfo().firmwareVersion.toString()); + const auto& deviceInfo = this->getDeviceInfo(); + + constexpr auto MIN_VERSION = WchFirmwareVersion{.major = 2, .minor = 9}; + if (deviceInfo.firmwareVersion < MIN_VERSION) { + Logger::warning( + "WCH-Link firmware version (" + deviceInfo.firmwareVersion.toString() + ") may not be compatible with" + " Bloom. A minimum version of " + MIN_VERSION.toString() + " is required." + ); + } + + Logger::info("WCH-Link firmware version: " + deviceInfo.firmwareVersion.toString()); } bool WchLinkBase::isInitialised() const {