iridiumsbd: discard all pending data for flow control enabled

This commit is contained in:
Igor Mišić 2021-11-19 15:08:55 +01:00 committed by Beat Küng
parent 7653bd1757
commit c73028bb1b
2 changed files with 12 additions and 1 deletions

View File

@ -60,7 +60,7 @@ IridiumSBD::IridiumSBD()
IridiumSBD::~IridiumSBD()
{
::close(_uart_fd);
deinit();
}
int IridiumSBD::task_spawn(int argc, char *argv[])
@ -214,6 +214,16 @@ int IridiumSBD::init(int argc, char *argv[])
return PX4_OK;
}
void IridiumSBD::deinit()
{
if (_uart_fd >= 0) {
/* discard all pending data, as close() might block otherwise on NuttX with flow control enabled */
tcflush(_uart_fd, TCIOFLUSH);
::close(_uart_fd);
_uart_fd = -1;
}
}
int IridiumSBD::print_status()
{
PX4_INFO("started");

View File

@ -141,6 +141,7 @@ public:
private:
int init(int argc, char *argv[]);
void deinit();
/*
* Loop executed while in SATCOM_STATE_STANDBY