From 21a587db75d5a4e9f332270c15eb80361c018b1c Mon Sep 17 00:00:00 2001 From: David Rebbe Date: Mon, 25 Nov 2024 18:15:59 -0500 Subject: [PATCH] icsneo compiles, I'm sure everything else is broke. --- api/icsneo/icsneo.cpp | 4 ++-- api/icsneoc/icsneoc.cpp | 2 +- device/extensions/flexray/extension.cpp | 3 +++ examples/cpp/simple/src/SimpleExample.cpp | 2 +- include/icsneo/device/device.h | 2 +- include/icsneo/device/devicetype.h | 23 ++++++++++++++--------- include/icsneo/icsneo.h | 2 +- 7 files changed, 23 insertions(+), 15 deletions(-) diff --git a/api/icsneo/icsneo.cpp b/api/icsneo/icsneo.cpp index 9fb18f2..f4ff478 100644 --- a/api/icsneo/icsneo.cpp +++ b/api/icsneo/icsneo.cpp @@ -142,13 +142,13 @@ ICSNEO_API icsneo_error_t icsneo_device_describe(icsneo_device_t* device, const return icsneo_error_success; } -ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, uint64_t* value) { +ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_devicetype_t* value) { if (!device || !device->device) { return icsneo_error_invalid_parameters; } auto dev = device->device; // TODO: We should expose these types - *value = static_cast(dev->getType()); + *value = dev->getType().getDeviceType(); return icsneo_error_success; } diff --git a/api/icsneoc/icsneoc.cpp b/api/icsneoc/icsneoc.cpp index 8975224..02cbf6f 100644 --- a/api/icsneoc/icsneoc.cpp +++ b/api/icsneoc/icsneoc.cpp @@ -313,7 +313,7 @@ bool icsneo_getProductNameForType(icsneo_devicetype_t type, char* str, size_t* m return false; } - std::string output = DeviceType(type).getGenericProductName(); + std::string output = DeviceType(type).getProductName(); if(str == nullptr) { *maxLength = output.length(); diff --git a/device/extensions/flexray/extension.cpp b/device/extensions/flexray/extension.cpp index 96e7d8d..6e85bbf 100644 --- a/device/extensions/flexray/extension.cpp +++ b/device/extensions/flexray/extension.cpp @@ -2,6 +2,9 @@ #include "icsneo/device/device.h" #include "icsneo/communication/message/flexray/flexraymessage.h" +#include +#include + using namespace icsneo; FlexRay::Extension::Extension(Device& device, const std::vector& controllerNetworks) : DeviceExtension(device) { diff --git a/examples/cpp/simple/src/SimpleExample.cpp b/examples/cpp/simple/src/SimpleExample.cpp index 4cbe49d..7e5cdc6 100644 --- a/examples/cpp/simple/src/SimpleExample.cpp +++ b/examples/cpp/simple/src/SimpleExample.cpp @@ -15,7 +15,7 @@ int main() { std::cout<< "Supported devices:" << std::endl; for(auto& dev : icsneo::GetSupportedDevices()) - std::cout << '\t' << dev.getGenericProductName() << std::endl; + std::cout << '\t' << dev.getProductName() << std::endl; std::cout << "\nFinding devices... " << std::flush; auto devices = icsneo::FindAllDevices(); // This is type std::vector> diff --git a/include/icsneo/device/device.h b/include/icsneo/device/device.h index 34f3b60..38634b2 100644 --- a/include/icsneo/device/device.h +++ b/include/icsneo/device/device.h @@ -91,7 +91,7 @@ public: std::string getSerial() const { return data.serial; } uint32_t getSerialNumber() const { return Device::SerialStringToNum(getSerial()); } const neodevice_t& getNeoDevice() const { return data; } - virtual std::string getProductName() const { return getType().getGenericProductName(); } + virtual std::string getProductName() const { return getType().getProductName(); } std::string describe() const; friend std::ostream& operator<<(std::ostream& os, const Device& device) { os << device.describe(); diff --git a/include/icsneo/device/devicetype.h b/include/icsneo/device/devicetype.h index b19800d..fb5eda9 100644 --- a/include/icsneo/device/devicetype.h +++ b/include/icsneo/device/devicetype.h @@ -7,6 +7,7 @@ #include #include +#include #include @@ -21,9 +22,11 @@ public: * as the product name may change based on device-specific factors, such as serial * number. */ - static const char* GetGenericProductName(_icsneo_devicetype_t t) { + template + static std::string getGenericProductName(T deviceType) { + icsneo_devicetype_t t = static_cast(deviceType); // Adding something? Make sure you update DEVICE_TYPE_LONGEST_NAME at the top! - switch(t) { + switch((icsneo_devicetype_t)t) { case Unknown: return "Unknown"; case BLUE: @@ -134,18 +137,20 @@ public: case DONT_REUSE1: case DONT_REUSE2: case DONT_REUSE3: - // Intentionally don't use default so that the compiler throws a warning when something is added return "Unknown neoVI"; + // Intentionally don't use default so that the compiler throws a warning when something is added } return "Unknown neoVI"; } - DeviceType() { value = _icsneo_devicetype_t::Unknown; } - DeviceType(icsneo_devicetype_t device_type) { value = device_type; } - icsneo_devicetype_t getDeviceType() const { return value; } - std::string getGenericProductName() const { return GetGenericProductName(getDeviceType()); } - operator icsneo_devicetype_t() const { return getDeviceType(); } + DeviceType(icsneo_devicetype_t device_type) { deviceType = device_type; } + icsneo_devicetype_t getDeviceType() const { return deviceType; } + + // Returns the generic name of the device - This doesn't include the serial. + std::string getProductName() const { return DeviceType::getGenericProductName(getDeviceType()); } private: - icsneo_devicetype_t value; + icsneo_devicetype_t deviceType; }; + +}; // namespace icsneo diff --git a/include/icsneo/icsneo.h b/include/icsneo/icsneo.h index b339c61..82aa9a9 100644 --- a/include/icsneo/icsneo.h +++ b/include/icsneo/icsneo.h @@ -111,7 +111,7 @@ ICSNEO_API icsneo_error_t icsneo_open(icsneo_device_t* device); ICSNEO_API icsneo_error_t icsneo_close(icsneo_device_t* device); ICSNEO_API icsneo_error_t icsneo_device_describe(icsneo_device_t* device, const char* value, uint32_t* value_length); -ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, uint64_t* value); +ICSNEO_API icsneo_error_t icsneo_device_type(icsneo_device_t* device, icsneo_devicetype_t* value); ICSNEO_API icsneo_error_t icsneo_device_serial(icsneo_device_t* device, const char* value, uint32_t* value_length); #ifdef __cplusplus