AP_HAL_ChibiOS: add and use a "bool read(c)" method to AP_HAL

this is much less likely to not work vs the int16_t equivalent
This commit is contained in:
Peter Barker 2023-02-21 20:35:57 +11:00 committed by Peter Barker
parent 74207ea687
commit 130f2c3bc8
2 changed files with 11 additions and 10 deletions

View File

@ -736,31 +736,32 @@ ssize_t UARTDriver::read(uint8_t *buffer, uint16_t count)
return ret; return ret;
} }
int16_t UARTDriver::read() bool UARTDriver::read(uint8_t &b)
{ {
if (_uart_owner_thd != chThdGetSelfX()) { if (_uart_owner_thd != chThdGetSelfX()) {
return -1; return false;
} }
return UARTDriver::read_locked(0); return UARTDriver::read_locked(0, b);
} }
int16_t UARTDriver::read_locked(uint32_t key) bool UARTDriver::read_locked(uint32_t key, uint8_t &b)
{ {
if (lock_read_key != 0 && key != lock_read_key) { if (lock_read_key != 0 && key != lock_read_key) {
return -1; return false;
} }
if (!_rx_initialised) { if (!_rx_initialised) {
return -1; return false;
} }
uint8_t byte; uint8_t byte;
if (!_readbuf.read_byte(&byte)) { if (!_readbuf.read_byte(&byte)) {
return -1; return false;
} }
if (!_rts_is_active) { if (!_rts_is_active) {
update_rts_line(); update_rts_line();
} }
return byte; b = byte;
return true;
} }
/* write one byte to the port */ /* write one byte to the port */

View File

@ -52,9 +52,9 @@ public:
uint32_t available_locked(uint32_t key) override; uint32_t available_locked(uint32_t key) override;
uint32_t txspace() override; uint32_t txspace() override;
int16_t read() override; bool read(uint8_t &data) override WARN_IF_UNUSED;
ssize_t read(uint8_t *buffer, uint16_t count) override; ssize_t read(uint8_t *buffer, uint16_t count) override;
int16_t read_locked(uint32_t key) override; bool read_locked(uint32_t key, uint8_t &b) override WARN_IF_UNUSED;
void _rx_timer_tick(void); void _rx_timer_tick(void);
void _tx_timer_tick(void); void _tx_timer_tick(void);