aboutsummaryrefslogtreecommitdiff
path: root/src/modules/mavlink/mavlink_main.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-03-12 09:36:12 +0100
committerLorenz Meier <lm@inf.ethz.ch>2014-03-12 09:36:12 +0100
commit023c7069c4a340aa1b7c9f05963a066cee368b2a (patch)
tree6ea3ab6d0e08017a40b82b752428ac7bedec7c16 /src/modules/mavlink/mavlink_main.cpp
parentf66b0ad8ac926a79608cf872c8e49ea7ace92288 (diff)
downloadpx4-firmware-023c7069c4a340aa1b7c9f05963a066cee368b2a.tar.gz
px4-firmware-023c7069c4a340aa1b7c9f05963a066cee368b2a.tar.bz2
px4-firmware-023c7069c4a340aa1b7c9f05963a066cee368b2a.zip
Fix FIONWRITE usage
Diffstat (limited to 'src/modules/mavlink/mavlink_main.cpp')
-rw-r--r--src/modules/mavlink/mavlink_main.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp
index ed3b265f9..9a6e1130e 100644
--- a/src/modules/mavlink/mavlink_main.cpp
+++ b/src/modules/mavlink/mavlink_main.cpp
@@ -158,13 +158,17 @@ mavlink_send_uart_bytes(mavlink_channel_t channel, const uint8_t *ch, int length
*/
int buf_free = 0;
- if (ioctl(uart, FIONWRITE, (unsigned long)&buf_free) == 0 &&
- hrt_elapsed_time(&last_write_times[(unsigned)channel]) > 500*1000UL) {
- struct termios uart_config;
- (void)tcgetattr(uart, &uart_config);
- uart_config.c_cflag &= ~CRTSCTS;
- (void)tcsetattr(uart, TCSANOW, &uart_config);
- warnx("DISABLING HARDWARE FLOW CONTROL");
+ if (ioctl(uart, FIONWRITE, (unsigned long)&buf_free) == 0) {
+
+ if (buf_free == 0 && last_write_times[(unsigned)channel] != 0 &&
+ hrt_elapsed_time(&last_write_times[(unsigned)channel]) > 500*1000UL) {
+
+ struct termios uart_config;
+ (void)tcgetattr(uart, &uart_config);
+ uart_config.c_cflag &= ~CRTSCTS;
+ (void)tcsetattr(uart, TCSANOW, &uart_config);
+ warnx("DISABLING HARDWARE FLOW CONTROL");
+ }
}
ssize_t ret = write(uart, ch, desired);