diff --git a/platform/posix/darwin/cdcacmdarwin.cpp b/platform/posix/darwin/cdcacmdarwin.cpp index 81a1011..ea322e6 100644 --- a/platform/posix/darwin/cdcacmdarwin.cpp +++ b/platform/posix/darwin/cdcacmdarwin.cpp @@ -2,6 +2,7 @@ #include "icsneo/device/founddevice.h" #include #include +#include #include #include #include @@ -166,9 +167,11 @@ void CDCACM::Find(std::vector& found) { if(CFGetTypeID(serialProp) != CFStringGetTypeID()) continue; // We can static cast here because we have verified the type to be a CFString - const std::string serial = CFStringToString(static_cast(serialProp)); + std::string serial = CFStringToString(static_cast(serialProp)); if(serial.empty()) continue; + for(char& c : serial) + c = static_cast(toupper(c)); device.serial[serial.copy(device.serial, sizeof(device.serial)-1)] = '\0'; // Add a factory to make the driver diff --git a/platform/posix/ftdi.cpp b/platform/posix/ftdi.cpp index 08d6676..a96328a 100644 --- a/platform/posix/ftdi.cpp +++ b/platform/posix/ftdi.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -24,6 +25,8 @@ void FTDI::Find(std::vector& found) { FoundDevice d; strncpy(d.serial, serial.c_str(), deviceSerialBufferLength - 1); d.serial[deviceSerialBufferLength - 1] = '\0'; // strncpy does not write a null terminator if serial is too long + for(size_t i = 0; i < deviceSerialBufferLength - 1; i++) + d.serial[i] = toupper(serial[i]); std::string devHandle = serial; auto it = std::find(handles.begin(), handles.end(), devHandle); size_t foundHandle = SIZE_MAX; diff --git a/platform/posix/linux/cdcacmlinux.cpp b/platform/posix/linux/cdcacmlinux.cpp index ea89f35..5f151f1 100644 --- a/platform/posix/linux/cdcacmlinux.cpp +++ b/platform/posix/linux/cdcacmlinux.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -67,6 +68,8 @@ public: try { std::ifstream reader(ss.str()); std::getline(reader, serial); + for (auto& c : serial) + c = toupper(c); } catch(...) { succeeded = false; return; diff --git a/platform/windows/vcp.cpp b/platform/windows/vcp.cpp index 57c1f0b..b5166bf 100644 --- a/platform/windows/vcp.cpp +++ b/platform/windows/vcp.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -152,6 +153,8 @@ void VCP::Find(std::vector& found, std::vector driver if(serial.find_first_of('\\') != std::string::npos) continue; } + for(char& c : serial) + c = static_cast(toupper(c)); strcpy_s(device.serial, sizeof(device.serial), serial.c_str()); // Serial number is saved, we want the COM port number now