diff --git a/Tools/AP_Periph/AP_Periph.h b/Tools/AP_Periph/AP_Periph.h index 9f07a931ac..c7426ac9f5 100644 --- a/Tools/AP_Periph/AP_Periph.h +++ b/Tools/AP_Periph/AP_Periph.h @@ -13,7 +13,7 @@ #include "../AP_Bootloader/app_comms.h" #include "hwing_esc.h" -#if defined(HAL_PERIPH_NEOPIXEL_COUNT) || defined(HAL_PERIPH_ENABLE_NCP5623_LED) +#if defined(HAL_PERIPH_NEOPIXEL_COUNT) || defined(HAL_PERIPH_ENABLE_NCP5623_LED) || defined(HAL_PERIPH_ENABLE_NCP5623_BGR_LED) #define AP_PERIPH_HAVE_LED #endif diff --git a/Tools/AP_Periph/can.cpp b/Tools/AP_Periph/can.cpp index 3364b6997f..b66ddcefb2 100644 --- a/Tools/AP_Periph/can.cpp +++ b/Tools/AP_Periph/can.cpp @@ -550,6 +550,25 @@ static void set_rgb_led(uint8_t red, uint8_t green, uint8_t blue) dev->transfer(&v, 1, nullptr, 0); } #endif // HAL_PERIPH_ENABLE_NCP5623_LED +#ifdef HAL_PERIPH_ENABLE_NCP5623_BGR_LED + { + const uint8_t i2c_address = 0x38; + static AP_HAL::OwnPtr dev; + if (!dev) { + dev = std::move(hal.i2c_mgr->get_device(0, i2c_address)); + } + WITH_SEMAPHORE(dev->get_semaphore()); + dev->set_retries(0); + uint8_t v = 0x3f; // enable LED + dev->transfer(&v, 1, nullptr, 0); + v = 0x40 | blue >> 3; // blue + dev->transfer(&v, 1, nullptr, 0); + v = 0x60 | green >> 3; // green + dev->transfer(&v, 1, nullptr, 0); + v = 0x80 | red >> 3; // red + dev->transfer(&v, 1, nullptr, 0); + } +#endif // HAL_PERIPH_ENABLE_NCP5623_BGR_LED } /* diff --git a/libraries/AP_HAL_ChibiOS/hwdef/f303-M10025/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/f303-M10025/hwdef.dat index 03c35c9709..aedb0b8656 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/f303-M10025/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/f303-M10025/hwdef.dat @@ -15,7 +15,7 @@ BARO DPS280 I2C:0:0x77 # GPS+MAG+LED+Baro define HAL_PERIPH_ENABLE_GPS define HAL_PERIPH_ENABLE_MAG -define HAL_PERIPH_ENABLE_NCP5623_LED +define HAL_PERIPH_ENABLE_NCP5623_BGR_LED define HAL_PERIPH_ENABLE_BARO # I2C Airspeed sensor must use a different address than 0x77 define HAL_PERIPH_ENABLE_AIRSPEED diff --git a/libraries/AP_HAL_ChibiOS/hwdef/f303-M10070/hwdef.dat b/libraries/AP_HAL_ChibiOS/hwdef/f303-M10070/hwdef.dat index 48cde207d6..d2df6f48f9 100644 --- a/libraries/AP_HAL_ChibiOS/hwdef/f303-M10070/hwdef.dat +++ b/libraries/AP_HAL_ChibiOS/hwdef/f303-M10070/hwdef.dat @@ -18,7 +18,7 @@ BARO DPS280 I2C:0:0x77 # GPS+MAG+LED+Baro define HAL_PERIPH_ENABLE_GPS define HAL_PERIPH_ENABLE_MAG -define HAL_PERIPH_ENABLE_NCP5623_LED +define HAL_PERIPH_ENABLE_NCP5623_BGR_LED define HAL_PERIPH_ENABLE_BARO # Optional I2C Airspeed sensor connected to I2C connector