diff --git a/drivers/wireless/bluetooth/bt_uart_bridge.c b/drivers/wireless/bluetooth/bt_uart_bridge.c index d98032e67fb..f6abf4ca108 100644 --- a/drivers/wireless/bluetooth/bt_uart_bridge.c +++ b/drivers/wireless/bluetooth/bt_uart_bridge.c @@ -177,7 +177,7 @@ static int bt_uart_bridge_open(FAR struct file *filep) FAR struct inode *inode = filep->f_inode; FAR struct bt_uart_bridge_device_s *device = inode->i_private; - if (filep->f_inode->i_crefs == 1) + if (inode->i_crefs == 1) { device->sendlen = 0; circbuf_reset(&device->recvbuf); @@ -291,6 +291,12 @@ static ssize_t bt_uart_bridge_read(FAR struct file *filep, } } + if (!circbuf_is_empty(&device->recvbuf)) + { + nxsem_post(&bridge->recvlock); + break; + } + nxsem_post(&bridge->recvlock); }