From a7d641c70529d176c3b528c3c3650c68215af27c Mon Sep 17 00:00:00 2001 From: Siddharth Purohit Date: Sun, 31 May 2020 17:48:59 +0530 Subject: [PATCH] AP_HAL_ChibiOS: add available method for locked state --- libraries/AP_HAL_ChibiOS/UARTDriver.cpp | 16 ++++++++++++++++ libraries/AP_HAL_ChibiOS/UARTDriver.h | 2 ++ 2 files changed, 18 insertions(+) diff --git a/libraries/AP_HAL_ChibiOS/UARTDriver.cpp b/libraries/AP_HAL_ChibiOS/UARTDriver.cpp index 9f277fec11..1cfed5c348 100644 --- a/libraries/AP_HAL_ChibiOS/UARTDriver.cpp +++ b/libraries/AP_HAL_ChibiOS/UARTDriver.cpp @@ -556,6 +556,22 @@ uint32_t UARTDriver::available() { return _readbuf.available(); } +uint32_t UARTDriver::available_locked(uint32_t key) +{ + if (lock_read_key != 0 && key != lock_read_key) { + return -1; + } + if (sdef.is_usb) { +#ifdef HAVE_USB_SERIAL + + if (((SerialUSBDriver*)sdef.serial)->config->usbp->state != USB_ACTIVE) { + return 0; + } +#endif + } + return _readbuf.available(); +} + uint32_t UARTDriver::txspace() { if (!_initialised) { diff --git a/libraries/AP_HAL_ChibiOS/UARTDriver.h b/libraries/AP_HAL_ChibiOS/UARTDriver.h index 10581ff234..ab2b51aa4d 100644 --- a/libraries/AP_HAL_ChibiOS/UARTDriver.h +++ b/libraries/AP_HAL_ChibiOS/UARTDriver.h @@ -42,6 +42,8 @@ public: uint32_t available() override; + uint32_t available_locked(uint32_t key) override; + uint32_t txspace() override; int16_t read() override; ssize_t read(uint8_t *buffer, uint16_t count) override;