From 135486403809cde6562e11d6a0d9a22ec40fb0bd Mon Sep 17 00:00:00 2001 From: Adam Honse Date: Tue, 22 Sep 2020 13:22:24 -0700 Subject: [PATCH] Get master building on MacOS --- OpenRGB.pro | 6 ++++ i2c_smbus/i2c_smbus.h | 22 +++++++++++-- qt/OpenRGB.icns | Bin 0 -> 63448 bytes serial_port/serial_port.cpp | 64 +++++++++++++++++++++++++----------- serial_port/serial_port.h | 9 +++-- 5 files changed, 75 insertions(+), 26 deletions(-) create mode 100644 qt/OpenRGB.icns diff --git a/OpenRGB.pro b/OpenRGB.pro index fef8c81b..ad65eb90 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -629,9 +629,15 @@ QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.15 macx:ICON = qt/OpenRGB.icns unix:macx { + SOURCES += \ + serial_port/find_usb_serial_port_linux.cpp \ + INCLUDEPATH += \ /usr/local/include \ LIBS += \ -L/usr/local/lib -lusb-1.0 -lhidapi \ + + CONFIG += \ + c++14 \ } diff --git a/i2c_smbus/i2c_smbus.h b/i2c_smbus/i2c_smbus.h index 976af0ef..0fecc950 100644 --- a/i2c_smbus/i2c_smbus.h +++ b/i2c_smbus/i2c_smbus.h @@ -21,7 +21,7 @@ typedef unsigned short u16; typedef unsigned int u32; typedef int s32; -#ifdef WIN32 +#ifdef _WIN32 //Data for SMBus Messages #define I2C_SMBUS_BLOCK_MAX 32 @@ -33,11 +33,27 @@ union i2c_smbus_data u8 block[I2C_SMBUS_BLOCK_MAX + 2]; }; -#else /* WIN32 */ +#endif /* _WIN32 */ + +#ifdef __linux__ #include -#endif /* WIN32 */ +#endif /* __linux__ */ + +#ifdef __APPLE__ + +//Data for SMBus Messages +#define I2C_SMBUS_BLOCK_MAX 32 + +union i2c_smbus_data +{ + u8 byte; + u16 word; + u8 block[I2C_SMBUS_BLOCK_MAX + 2]; +}; + +#endif /* __APPLE__ */ // i2c_smbus_xfer read or write markers #define I2C_SMBUS_READ 1 diff --git a/qt/OpenRGB.icns b/qt/OpenRGB.icns new file mode 100644 index 0000000000000000000000000000000000000000..737f1fa3628dcdb14aca5478ed77115e2ab7749a GIT binary patch literal 63448 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 literal 0 HcmV?d00001 diff --git a/serial_port/serial_port.cpp b/serial_port/serial_port.cpp index d4eb7da9..819bd4f6 100644 --- a/serial_port/serial_port.cpp +++ b/serial_port/serial_port.cpp @@ -40,7 +40,7 @@ bool serial_port::serial_open() { // printf("SerialPort: Opening serial port %s at baud rate %d.\n", port_name, baud_rate); - #ifdef WIN32 +#ifdef _WIN32 file_descriptor = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if((int)file_descriptor < 0) @@ -74,7 +74,9 @@ bool serial_port::serial_open() timeouts.WriteTotalTimeoutMultiplier=10; SetCommTimeouts(file_descriptor, &timeouts); - #else +#endif /* _WIN32 */ + +#ifdef __linux__ file_descriptor = open(port_name, O_RDWR | O_NOCTTY | O_NDELAY); @@ -116,7 +118,7 @@ bool serial_port::serial_open() //} //fcntl(file_descriptor, F_SETFL, 0); - #endif +#endif /* __linux__ */ // printf("SerialPort: Serial port %s opened successfully.\n", port_name); return true; @@ -143,12 +145,15 @@ bool serial_port::serial_open(const char* name, unsigned int baud) void serial_port::serial_close() { // printf("SerialPort: Closing port %s.\n", port_name); - #ifdef WIN32 +#ifdef _WIN32 - #else +#endif /* _WIN32 */ + +#ifdef __linux__ close(file_descriptor); - #endif + +#endif /* __linux__ */ } // read @@ -158,18 +163,24 @@ void serial_port::serial_close() // available bytes int serial_port::serial_read(char * buffer, int length) { - #ifdef WIN32 +#ifdef _WIN32 + DWORD bytesread; ReadFile(file_descriptor, buffer, length, &bytesread, NULL); + return bytesread; - #else +#endif /* _WIN32 */ + +#ifdef __linux__ int bytesread; bytesread = read(file_descriptor, buffer, length); - #endif + return bytesread; + +#endif /* __linux__ */ //printf("SerialPort: Read %d bytes on port %s.\n", bytesread, port_name); - return bytesread; + return 0; } //write @@ -180,40 +191,53 @@ int serial_port::serial_read(char * buffer, int length) // past and may cause a segfault int serial_port::serial_write(char * buffer, int length) { - #ifdef WIN32 +#ifdef _WIN32 + DWORD byteswritten; WriteFile(file_descriptor, buffer, length, &byteswritten, NULL); + return byteswritten; - #else +#endif /* _WIN32 */ + +#ifdef __linux__ int byteswritten; byteswritten = write(file_descriptor, buffer, length); - #endif + return byteswritten; + +#endif /* __linux__ */ //printf("SerialPort: Wrote %d bytes on port %s.\n", byteswritten, port_name); - return byteswritten; + return 0; } //flush void serial_port::serial_flush_rx() { - #ifdef WIN32 +#ifdef _WIN32 + PurgeComm(file_descriptor, PURGE_RXABORT | PURGE_RXCLEAR); - #else +#endif /* _WIN32 */ + +#ifdef __linux__ tcflush(file_descriptor, TCIFLUSH); - #endif + +#endif /* __linux__ */ } void serial_port::serial_flush_tx() { +#ifdef _WIN32 - #ifdef WIN32 PurgeComm(file_descriptor, PURGE_TXABORT | PURGE_TXCLEAR); - #else +#endif /* _WIN32 */ + +#ifdef __linux__ tcflush(file_descriptor, TCOFLUSH); - #endif + +#endif /* __linux__ */ } diff --git a/serial_port/serial_port.h b/serial_port/serial_port.h index 4986ea59..73fb9311 100644 --- a/serial_port/serial_port.h +++ b/serial_port/serial_port.h @@ -13,10 +13,13 @@ #include #include -#ifdef WIN32 +#ifdef _WIN32 + #include -#else +#endif /* _WIN32 */ + +#ifdef __linux__ #include #include @@ -35,7 +38,7 @@ #include -#endif +#endif /* __linux__ */ //Serial Port Class