diff --git a/bindings/python/icsneopy/device/idevicesettings.cpp b/bindings/python/icsneopy/device/idevicesettings.cpp index 3ab48e0b..91dcf8fe 100644 --- a/bindings/python/icsneopy/device/idevicesettings.cpp +++ b/bindings/python/icsneopy/device/idevicesettings.cpp @@ -119,6 +119,10 @@ void init_idevicesettings(pybind11::module_& m) { .def("set_misc_io_analog_output_enabled", &IDeviceSettings::setMiscIOAnalogOutputEnabled, pybind11::call_guard()) .def("set_misc_io_analog_output", &IDeviceSettings::setMiscIOAnalogOutput, pybind11::call_guard()) + + // Performance blast + .def("is_perf_test_enabled", &IDeviceSettings::isPerfTestEnabled, pybind11::call_guard()) + .def("set_perf_test_enable", &IDeviceSettings::setPerfTestEnable, pybind11::call_guard()) // Status properties .def_readonly("disabled", &IDeviceSettings::disabled) diff --git a/include/icsneo/device/idevicesettings.h b/include/icsneo/device/idevicesettings.h index 9f888c81..49a85d1c 100644 --- a/include/icsneo/device/idevicesettings.h +++ b/include/icsneo/device/idevicesettings.h @@ -1265,6 +1265,16 @@ public: return false; } + virtual std::optional isPerfTestEnabled() const { + report(APIEvent::Type::SettingNotAvaiableDevice, APIEvent::Severity::EventWarning); + return std::nullopt; + } + + virtual bool setPerfTestEnable(bool enable) { + (void)enable; + return false; + } + virtual bool setMiscIOAnalogOutputEnabled(uint8_t pin, bool enabled); virtual bool setMiscIOAnalogOutput(uint8_t pin, MiscIOAnalogVoltage voltage); diff --git a/include/icsneo/device/tree/etherbadge/etherbadgesettings.h b/include/icsneo/device/tree/etherbadge/etherbadgesettings.h index f39ef24a..3b165012 100644 --- a/include/icsneo/device/tree/etherbadge/etherbadgesettings.h +++ b/include/icsneo/device/tree/etherbadge/etherbadgesettings.h @@ -81,6 +81,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -92,6 +93,7 @@ public: return nullptr; } } + const LIN_SETTINGS* getLINSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -103,6 +105,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/neoviconnect/neoviconnectsettings.h b/include/icsneo/device/tree/neoviconnect/neoviconnectsettings.h index af61ac26..542ae681 100644 --- a/include/icsneo/device/tree/neoviconnect/neoviconnectsettings.h +++ b/include/icsneo/device/tree/neoviconnect/neoviconnectsettings.h @@ -114,6 +114,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -139,6 +140,7 @@ public: return nullptr; } } + const LIN_SETTINGS* getLINSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -152,6 +154,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/neovifire/neovifiresettings.h b/include/icsneo/device/tree/neovifire/neovifiresettings.h index 10c402bf..2f6fdb31 100644 --- a/include/icsneo/device/tree/neovifire/neovifiresettings.h +++ b/include/icsneo/device/tree/neovifire/neovifiresettings.h @@ -121,6 +121,7 @@ public: return nullptr; } } + const CAN_SETTINGS* getLSFTCANSettingsFor(Network net) const override { return getCANSettingsFor(net); } const SWCAN_SETTINGS* getSWCANSettingsFor(Network net) const override { auto cfg = getStructurePointer(); @@ -133,6 +134,7 @@ public: return nullptr; } } + const LIN_SETTINGS* getLINSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -150,6 +152,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/neovifire2/neovifire2settings.h b/include/icsneo/device/tree/neovifire2/neovifire2settings.h index fa52b72d..691ad92b 100644 --- a/include/icsneo/device/tree/neovifire2/neovifire2settings.h +++ b/include/icsneo/device/tree/neovifire2/neovifire2settings.h @@ -155,6 +155,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -180,6 +181,7 @@ public: return nullptr; } } + const CAN_SETTINGS* getLSFTCANSettingsFor(Network net) const override { return getCANSettingsFor(net); } const SWCAN_SETTINGS* getSWCANSettingsFor(Network net) const override { auto cfg = getStructurePointer(); @@ -234,6 +236,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/neovifire3/neovifire3settings.h b/include/icsneo/device/tree/neovifire3/neovifire3settings.h index 932de2e1..8036f99b 100644 --- a/include/icsneo/device/tree/neovifire3/neovifire3settings.h +++ b/include/icsneo/device/tree/neovifire3/neovifire3settings.h @@ -208,6 +208,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -397,6 +398,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/neovifire3flexray/neovifire3flexraysettings.h b/include/icsneo/device/tree/neovifire3flexray/neovifire3flexraysettings.h index 43b448ed..afd3da0a 100644 --- a/include/icsneo/device/tree/neovifire3flexray/neovifire3flexraysettings.h +++ b/include/icsneo/device/tree/neovifire3flexray/neovifire3flexraysettings.h @@ -175,6 +175,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -236,6 +237,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/neovifire3t1slin/neovifire3t1slinsettings.h b/include/icsneo/device/tree/neovifire3t1slin/neovifire3t1slinsettings.h index 14e630b6..18de5616 100644 --- a/include/icsneo/device/tree/neovifire3t1slin/neovifire3t1slinsettings.h +++ b/include/icsneo/device/tree/neovifire3t1slin/neovifire3t1slinsettings.h @@ -184,6 +184,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -466,6 +467,23 @@ public: return true; } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: const ETHERNET10T1S_SETTINGS* getT1SSettingsFor(Network net) const { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/neovired2/neovired2settings.h b/include/icsneo/device/tree/neovired2/neovired2settings.h index 1027982d..112cc5a3 100644 --- a/include/icsneo/device/tree/neovired2/neovired2settings.h +++ b/include/icsneo/device/tree/neovired2/neovired2settings.h @@ -137,6 +137,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -295,6 +296,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/rada2b/rada2bsettings.h b/include/icsneo/device/tree/rada2b/rada2bsettings.h index 47ff89d4..da3786f4 100644 --- a/include/icsneo/device/tree/rada2b/rada2bsettings.h +++ b/include/icsneo/device/tree/rada2b/rada2bsettings.h @@ -114,6 +114,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -241,6 +242,23 @@ public: } static constexpr uint8_t a2bSettingsFlag16bit = 0x01; + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/radcomet2/radcomet2settings.h b/include/icsneo/device/tree/radcomet2/radcomet2settings.h index 9ad1c300..ed449d16 100644 --- a/include/icsneo/device/tree/radcomet2/radcomet2settings.h +++ b/include/icsneo/device/tree/radcomet2/radcomet2settings.h @@ -103,6 +103,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -244,6 +245,23 @@ public: return true; } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: const ETHERNET10T1S_SETTINGS* getT1SSettingsFor(Network net) const { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/radcomet3/radcomet3settings.h b/include/icsneo/device/tree/radcomet3/radcomet3settings.h index 9d98f98d..5e869944 100644 --- a/include/icsneo/device/tree/radcomet3/radcomet3settings.h +++ b/include/icsneo/device/tree/radcomet3/radcomet3settings.h @@ -100,6 +100,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -638,6 +639,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: const ETHERNET10T1S_SETTINGS* getT1SSettingsFor(Network net) const { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/radepsilon/radepsilonsettings.h b/include/icsneo/device/tree/radepsilon/radepsilonsettings.h index c9c9beec..216daebc 100644 --- a/include/icsneo/device/tree/radepsilon/radepsilonsettings.h +++ b/include/icsneo/device/tree/radepsilon/radepsilonsettings.h @@ -100,6 +100,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -269,6 +270,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: enum class EpsilonPhyMode : uint8_t { Auto = 0, diff --git a/include/icsneo/device/tree/radgalaxy/radgalaxysettings.h b/include/icsneo/device/tree/radgalaxy/radgalaxysettings.h index 78615212..9470b5ed 100644 --- a/include/icsneo/device/tree/radgalaxy/radgalaxysettings.h +++ b/include/icsneo/device/tree/radgalaxy/radgalaxysettings.h @@ -135,6 +135,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -160,6 +161,7 @@ public: return nullptr; } } + const SWCAN_SETTINGS* getSWCANSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -271,6 +273,23 @@ public: return true; } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/radgalaxy2/radgalaxy2settings.h b/include/icsneo/device/tree/radgalaxy2/radgalaxy2settings.h index 2d9a44e0..27b33442 100644 --- a/include/icsneo/device/tree/radgalaxy2/radgalaxy2settings.h +++ b/include/icsneo/device/tree/radgalaxy2/radgalaxy2settings.h @@ -151,6 +151,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -259,6 +260,23 @@ public: return GetNetworkEnabled(bitfields, 2, networkID); } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/radgigastar/radgigastarsettings.h b/include/icsneo/device/tree/radgigastar/radgigastarsettings.h index d9595392..eaba199c 100644 --- a/include/icsneo/device/tree/radgigastar/radgigastarsettings.h +++ b/include/icsneo/device/tree/radgigastar/radgigastarsettings.h @@ -129,6 +129,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -178,6 +179,23 @@ public: } } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/radgigastar2/radgigastar2settings.h b/include/icsneo/device/tree/radgigastar2/radgigastar2settings.h index f66b8098..f5bfc9c5 100644 --- a/include/icsneo/device/tree/radgigastar2/radgigastar2settings.h +++ b/include/icsneo/device/tree/radgigastar2/radgigastar2settings.h @@ -176,6 +176,7 @@ namespace icsneo return nullptr; } } + const CANFD_SETTINGS *getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); @@ -537,6 +538,23 @@ namespace icsneo return true; } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: const ETHERNET10T1S_SETTINGS* getT1SSettingsFor(Network net) const { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/radjupiter/radjupitersettings.h b/include/icsneo/device/tree/radjupiter/radjupitersettings.h index def4fc75..4f26bf5d 100644 --- a/include/icsneo/device/tree/radjupiter/radjupitersettings.h +++ b/include/icsneo/device/tree/radjupiter/radjupitersettings.h @@ -105,6 +105,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -118,6 +119,7 @@ public: return nullptr; } } + const LIN_SETTINGS* getLINSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -129,6 +131,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/radmoont1s/radmoont1ssettings.h b/include/icsneo/device/tree/radmoont1s/radmoont1ssettings.h index 7b31f821..4ecb2cbc 100644 --- a/include/icsneo/device/tree/radmoont1s/radmoont1ssettings.h +++ b/include/icsneo/device/tree/radmoont1s/radmoont1ssettings.h @@ -154,6 +154,23 @@ public: return true; } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + private: const ETHERNET10T1S_SETTINGS* getT1SSettingsFor(Network net) const { auto cfg = getStructurePointer(); diff --git a/include/icsneo/device/tree/radpluto/radplutosettings.h b/include/icsneo/device/tree/radpluto/radplutosettings.h index 04fc1995..15d0d5de 100644 --- a/include/icsneo/device/tree/radpluto/radplutosettings.h +++ b/include/icsneo/device/tree/radpluto/radplutosettings.h @@ -90,6 +90,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -115,6 +116,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/radstar2/radstar2settings.h b/include/icsneo/device/tree/radstar2/radstar2settings.h index 71762b54..7d566b97 100644 --- a/include/icsneo/device/tree/radstar2/radstar2settings.h +++ b/include/icsneo/device/tree/radstar2/radstar2settings.h @@ -91,6 +91,7 @@ public: return nullptr; } } + const CANFD_SETTINGS* getCANFDSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -116,6 +117,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/valuecan3/valuecan3settings.h b/include/icsneo/device/tree/valuecan3/valuecan3settings.h index 48b4a844..396b1707 100644 --- a/include/icsneo/device/tree/valuecan3/valuecan3settings.h +++ b/include/icsneo/device/tree/valuecan3/valuecan3settings.h @@ -51,6 +51,23 @@ public: return nullptr; } } + + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } }; } diff --git a/include/icsneo/device/tree/vividcan/vividcansettings.h b/include/icsneo/device/tree/vividcan/vividcansettings.h index b261d196..224b4f5c 100644 --- a/include/icsneo/device/tree/vividcan/vividcansettings.h +++ b/include/icsneo/device/tree/vividcan/vividcansettings.h @@ -62,6 +62,7 @@ public: return nullptr; } } + const CAN_SETTINGS* getLSFTCANSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -73,6 +74,7 @@ public: return nullptr; } } + const SWCAN_SETTINGS* getSWCANSettingsFor(Network net) const override { auto cfg = getStructurePointer(); if(cfg == nullptr) @@ -115,6 +117,23 @@ public: return success; } + std::optional isPerfTestEnabled() const override { + auto cfg = getStructurePointer(); + if(cfg == nullptr) + return std::nullopt; + + return std::make_optional(cfg->perf_en != 0); + } + + bool setPerfTestEnable(bool enable) override { + auto cfg = getMutableStructurePointer(); + if(cfg == nullptr) + return false; + + cfg->perf_en = !!enable; + return true; + } + protected: ICSNEO_UNALIGNED(const uint64_t*) getTerminationEnables() const override { // Check the structure pointer even though we're not using it so