This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit fab8b081c0b1167a114bd4eca278e208b241c706 Author: Xiang Xiao <xiaoxi...@xiaomi.com> AuthorDate: Sun Oct 2 03:20:15 2022 +0800 bluetooth: Implement btuart_close for btuart upperhalf driver Signed-off-by: Xiang Xiao <xiaoxi...@xiaomi.com> --- drivers/wireless/bluetooth/bt_uart.c | 22 ++++++++++++++++++---- drivers/wireless/bluetooth/bt_uart.h | 1 + drivers/wireless/bluetooth/bt_uart_bcm4343x.c | 1 + drivers/wireless/bluetooth/bt_uart_cc2564.c | 1 + drivers/wireless/bluetooth/bt_uart_generic.c | 1 + 5 files changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/wireless/bluetooth/bt_uart.c b/drivers/wireless/bluetooth/bt_uart.c index d0e3a89687..a50f1b0498 100644 --- a/drivers/wireless/bluetooth/bt_uart.c +++ b/drivers/wireless/bluetooth/bt_uart.c @@ -275,10 +275,6 @@ int btuart_open(FAR struct bt_driver_s *dev) DEBUGASSERT(upper != NULL && upper->lower != NULL); lower = upper->lower; - /* Disable Rx callbacks */ - - lower->rxenable(lower, false); - /* Drain any cached Rx data */ lower->rxdrain(lower); @@ -292,3 +288,21 @@ int btuart_open(FAR struct bt_driver_s *dev) lower->rxenable(lower, true); return OK; } + +void btuart_close(FAR struct bt_driver_s *dev) +{ + FAR struct btuart_upperhalf_s *upper; + FAR const struct btuart_lowerhalf_s *lower; + + upper = (FAR struct btuart_upperhalf_s *)dev; + DEBUGASSERT(upper != NULL && upper->lower != NULL); + lower = upper->lower; + + /* Disable Rx callbacks */ + + lower->rxenable(lower, false); + + /* Detach the Rx event handler */ + + lower->rxattach(lower, NULL, NULL); +} diff --git a/drivers/wireless/bluetooth/bt_uart.h b/drivers/wireless/bluetooth/bt_uart.h index 0b8bcc0f45..1abaa507ef 100644 --- a/drivers/wireless/bluetooth/bt_uart.h +++ b/drivers/wireless/bluetooth/bt_uart.h @@ -91,5 +91,6 @@ int btuart_send(FAR struct bt_driver_s *dev, enum bt_buf_type_e type, FAR void *data, size_t len); int btuart_open(FAR struct bt_driver_s *dev); +void btuart_close(FAR struct bt_driver_s *dev); #endif /* __DRIVER_WIRELESS_BLUETOOTH_BT_UART_H */ diff --git a/drivers/wireless/bluetooth/bt_uart_bcm4343x.c b/drivers/wireless/bluetooth/bt_uart_bcm4343x.c index 503719cd56..b19252c89b 100644 --- a/drivers/wireless/bluetooth/bt_uart_bcm4343x.c +++ b/drivers/wireless/bluetooth/bt_uart_bcm4343x.c @@ -423,6 +423,7 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower) upper->dev.head_reserve = H4_HEADER_SIZE; upper->dev.open = btuart_open; upper->dev.send = btuart_send; + upper->dev.close = btuart_close; upper->lower = lower; /* Load firmware */ diff --git a/drivers/wireless/bluetooth/bt_uart_cc2564.c b/drivers/wireless/bluetooth/bt_uart_cc2564.c index 2e9d514c8b..ff39218d54 100644 --- a/drivers/wireless/bluetooth/bt_uart_cc2564.c +++ b/drivers/wireless/bluetooth/bt_uart_cc2564.c @@ -189,6 +189,7 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower) upper->dev.head_reserve = H4_HEADER_SIZE; upper->dev.open = btuart_open; upper->dev.send = btuart_send; + upper->dev.close = btuart_close; upper->lower = lower; /* Load firmware */ diff --git a/drivers/wireless/bluetooth/bt_uart_generic.c b/drivers/wireless/bluetooth/bt_uart_generic.c index a2a5e01e7a..d194360d36 100644 --- a/drivers/wireless/bluetooth/bt_uart_generic.c +++ b/drivers/wireless/bluetooth/bt_uart_generic.c @@ -83,6 +83,7 @@ int btuart_register(FAR const struct btuart_lowerhalf_s *lower) upper->dev.head_reserve = H4_HEADER_SIZE; upper->dev.open = btuart_open; upper->dev.send = btuart_send; + upper->dev.close = btuart_close; upper->lower = lower; /* And register the driver with the network and the Bluetooth stack. */