summaryrefslogtreecommitdiffstats
path: root/src/shared/libosmocore/src/serial.c
diff options
context:
space:
mode:
authorSylvain Munaut <tnt@246tNt.com>2011-10-21 22:14:52 +0200
committerSylvain Munaut <tnt@246tNt.com>2011-10-21 22:14:52 +0200
commit02d469ad67459c8d28c808a19802613a5666364c (patch)
tree137bf0649440b0f1ac9a72c168c7996484deda91 /src/shared/libosmocore/src/serial.c
parent2a64b42111e50d71198bfec1ab28d01e6d1cfd2b (diff)
parent07f1103782a94090c2cef46de8a3f6d03ddfeef7 (diff)
Merge commit '07f1103782a94090c2cef46de8a3f6d03ddfeef7'
Diffstat (limited to 'src/shared/libosmocore/src/serial.c')
-rw-r--r--src/shared/libosmocore/src/serial.c24
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;
}