From b104b34919c1a86325e74ceb1964b01f5a9bc785 Mon Sep 17 00:00:00 2001 From: Paul Hollinsky Date: Tue, 4 May 2021 22:53:28 -0400 Subject: [PATCH] Device: Report whether the current driver supports DFU --- include/icsneo/device/device.h | 5 +++++ include/icsneo/device/tree/neovifire2/neovifire2eth.h | 2 ++ include/icsneo/device/tree/valuecan4/valuecan4-2eleth.h | 2 ++ .../icsneo/device/tree/valuecan4/valuecan4industrialeth.h | 2 ++ 4 files changed, 11 insertions(+) diff --git a/include/icsneo/device/device.h b/include/icsneo/device/device.h index e4c9409..2217bd8 100644 --- a/include/icsneo/device/device.h +++ b/include/icsneo/device/device.h @@ -210,6 +210,11 @@ public: NODISCARD("If the Lifetime is not held, disconnects will be immediately unsuppressed") Lifetime suppressDisconnects(); + /** + * Some alternate communication protocols do not support DFU + */ + virtual bool currentDriverSupportsDFU() const { return true; } + const device_eventhandler_t& getEventHandler() const { return report; } std::shared_ptr com; diff --git a/include/icsneo/device/tree/neovifire2/neovifire2eth.h b/include/icsneo/device/tree/neovifire2/neovifire2eth.h index ca980c4..7771c37 100644 --- a/include/icsneo/device/tree/neovifire2/neovifire2eth.h +++ b/include/icsneo/device/tree/neovifire2/neovifire2eth.h @@ -50,6 +50,8 @@ public: productId = PRODUCT_ID; } + bool currentDriverSupportsDFU() const override { return false; } + protected: void setupSettings(IDeviceSettings& ssettings) override { // TODO Check firmware version, old firmwares will reset Ethernet settings on settings send diff --git a/include/icsneo/device/tree/valuecan4/valuecan4-2eleth.h b/include/icsneo/device/tree/valuecan4/valuecan4-2eleth.h index 48e3e2f..75aed6a 100644 --- a/include/icsneo/device/tree/valuecan4/valuecan4-2eleth.h +++ b/include/icsneo/device/tree/valuecan4/valuecan4-2eleth.h @@ -56,6 +56,8 @@ public: return supportedNetworks; } + bool currentDriverSupportsDFU() const override { return false; } + protected: virtual void setupSupportedRXNetworks(std::vector& rxNetworks) override { for(auto& netid : GetSupportedNetworks()) diff --git a/include/icsneo/device/tree/valuecan4/valuecan4industrialeth.h b/include/icsneo/device/tree/valuecan4/valuecan4industrialeth.h index 3eb1539..bc7aa8c 100644 --- a/include/icsneo/device/tree/valuecan4/valuecan4industrialeth.h +++ b/include/icsneo/device/tree/valuecan4/valuecan4industrialeth.h @@ -56,6 +56,8 @@ public: return supportedNetworks; } + bool currentDriverSupportsDFU() const override { return false; } + protected: virtual void setupSupportedRXNetworks(std::vector& rxNetworks) override { for(auto& netid : GetSupportedNetworks())