From 1eecf07e684fb57e905b8fb88c57f5d1b68154f0 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 18 Apr 2018 13:33:48 +1000 Subject: [PATCH] AP_HAL_SITL: use a 16-bit mask for GPIO out This allows Relay pins to be represented (typically pin 13) --- libraries/AP_HAL_SITL/GPIO.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/AP_HAL_SITL/GPIO.cpp b/libraries/AP_HAL_SITL/GPIO.cpp index 6de3a401bd..6b2500bbfa 100644 --- a/libraries/AP_HAL_SITL/GPIO.cpp +++ b/libraries/AP_HAL_SITL/GPIO.cpp @@ -21,8 +21,8 @@ uint8_t GPIO::read(uint8_t pin) if (!_sitlState->_sitl) { return 0; } - uint8_t mask = static_cast(_sitlState->_sitl->pin_mask.get()); - return static_cast((mask & (1U << pin)) ? 1 : 0); + uint16_t mask = static_cast(_sitlState->_sitl->pin_mask.get()); + return static_cast((mask & (1U << pin)) ? 1 : 0); } void GPIO::write(uint8_t pin, uint8_t value) @@ -30,8 +30,8 @@ void GPIO::write(uint8_t pin, uint8_t value) if (!_sitlState->_sitl) { return; } - uint8_t mask = static_cast(_sitlState->_sitl->pin_mask.get()); - uint8_t new_mask = mask; + uint16_t mask = static_cast(_sitlState->_sitl->pin_mask.get()); + uint16_t new_mask = mask; if (value) { new_mask |= (1U << pin); } else { @@ -49,7 +49,7 @@ void GPIO::toggle(uint8_t pin) /* Alternative interface: */ AP_HAL::DigitalSource* GPIO::channel(uint16_t n) { - if (n < 8) { // (ie. sizeof(pin_mask)*8) + if (n < 16) { // (ie. sizeof(pin_mask)*8) return new DigitalSource(static_cast(n)); } else { return nullptr;