aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_main_posix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/mavlink/mavlink_main_posix.cpp')
-rw-r--r--src/modules/mavlink/mavlink_main_posix.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/modules/mavlink/mavlink_main_posix.cpp b/src/modules/mavlink/mavlink_main_posix.cpp
index 784118916..b4dbd58d4 100644
--- a/src/modules/mavlink/mavlink_main_posix.cpp
+++ b/src/modules/mavlink/mavlink_main_posix.cpp
@@ -590,8 +590,16 @@ int Mavlink::mavlink_open_uart(int baud, const char *uart_name, struct termios *
case 230400: speed = B230400; break;
+ #ifndef B460800
+ #define B460800 460800
+ #endif
+
case 460800: speed = B460800; break;
+ #ifndef B921600
+ #define B921600 921600
+ #endif
+
case 921600: speed = B921600; break;
default:
@@ -729,9 +737,12 @@ Mavlink::get_free_tx_buf()
*/
int buf_free = 0;
-// No FIONWRITE on Linux
-#ifndef __PX4_LINUX
- (void) ioctl(_uart_fd, FIONWRITE, (unsigned long)&buf_free);
+// No FIONWRITE on POSIX
+#ifdef __PX4_POSIX
+ // fake a big buffer on larger systems
+ buf_free = 1000;
+#else
+ (void) ioctl(_uart_fd, FIONWRITESIOCOUTQ, (unsigned long)&buf_free);
#endif
if (get_flow_control_enabled() && buf_free < FLOW_CONTROL_DISABLE_THRESHOLD) {