From 41d75bcfa213248697a64aec13d38bd56cfa7d3f Mon Sep 17 00:00:00 2001 From: Wohlstand Date: Thu, 23 May 2024 01:43:56 +0300 Subject: Serial: Fixed initialization on macOS --- src/chips/opl_serial_misc.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/chips/opl_serial_misc.h') diff --git a/src/chips/opl_serial_misc.h b/src/chips/opl_serial_misc.h index 6972a1e..2583a4b 100644 --- a/src/chips/opl_serial_misc.h +++ b/src/chips/opl_serial_misc.h @@ -28,6 +28,11 @@ #include #include #include +#include +#endif + +#ifdef __APPLE__ +#include #endif #ifdef _WIN32 @@ -171,7 +176,12 @@ public: m_portSetup.c_cflag &= ~CBAUD; #endif +#if defined (BSD) || defined(__FreeBSD__) + cfsetispeed(&m_portSetup, baudRate); + cfsetospeed(&m_portSetup, baudRate); +#elif !defined(__APPLE__) cfsetospeed(&m_portSetup, baud2enum(baudRate)); +#endif if(tcsetattr(m_port, TCSANOW, &m_portSetup) != 0) { @@ -181,6 +191,16 @@ public: return false; } +#ifdef __APPLE__ + if(ioctl(m_port, IOSSIOSPEED, &baudRate) == -1) + { + std::fprintf(stderr, "-- OPL Serial ERROR: Failed to set MacOS specific tty attributes for `%s': %s", portPath.c_str(), strerror(errno)); + std::fflush(stderr); + close(); + return false; + } +#endif + return true; } -- cgit v1.2.3