diff options
author | Sylvain Munaut <tnt@246tNt.com> | 2011-10-21 22:14:52 +0200 |
---|---|---|
committer | Sylvain Munaut <tnt@246tNt.com> | 2011-10-21 22:14:52 +0200 |
commit | 02d469ad67459c8d28c808a19802613a5666364c (patch) | |
tree | 137bf0649440b0f1ac9a72c168c7996484deda91 /src/shared/libosmocore/src/serial.c | |
parent | 2a64b42111e50d71198bfec1ab28d01e6d1cfd2b (diff) | |
parent | 07f1103782a94090c2cef46de8a3f6d03ddfeef7 (diff) |
Merge commit '07f1103782a94090c2cef46de8a3f6d03ddfeef7'
Diffstat (limited to 'src/shared/libosmocore/src/serial.c')
-rw-r--r-- | src/shared/libosmocore/src/serial.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/shared/libosmocore/src/serial.c b/src/shared/libosmocore/src/serial.c index 26cf59d7..e61edb71 100644 --- a/src/shared/libosmocore/src/serial.c +++ b/src/shared/libosmocore/src/serial.c @@ -38,8 +38,9 @@ #include <sys/ioctl.h> #include <sys/types.h> #include <sys/stat.h> +#ifdef __linux__ #include <linux/serial.h> - +#endif #include <osmocom/core/serial.h> @@ -155,6 +156,7 @@ osmo_serial_set_baudrate(int fd, speed_t baudrate) int osmo_serial_set_custom_baudrate(int fd, int baudrate) { +#ifdef __linux__ int rc; struct serial_struct ser_info; @@ -174,6 +176,23 @@ osmo_serial_set_custom_baudrate(int fd, int baudrate) } return _osmo_serial_set_baudrate(fd, B38400); /* 38400 is a kind of magic ... */ +#elif defined(__APPLE__) +#ifndef IOSSIOSPEED +#define IOSSIOSPEED _IOW('T', 2, speed_t) +#endif + int rc; + + unsigned int speed = baudrate; + rc = ioctl(fd, IOSSIOSPEED, &speed); + if (rc < 0) { + dbg_perror("ioctl(IOSSIOSPEED)"); + return -errno; + } + return 0; +#else +#warning osmo_serial_set_custom_baudrate: unsupported platform + return 0; +#endif } /*! \brief Clear any custom baudrate @@ -186,6 +205,7 @@ int osmo_serial_clear_custom_baudrate(int fd) { int rc; +#ifdef __linux__ struct serial_struct ser_info; rc = ioctl(fd, TIOCGSERIAL, &ser_info); @@ -202,7 +222,7 @@ osmo_serial_clear_custom_baudrate(int fd) dbg_perror("ioctl(TIOCSSERIAL)"); return -errno; } - +#endif return 0; } |