/* DataSheet: https://www.lumissil.com/assets/pdf/core/IS31FL3195_DS.pdf ./Tools/autotest/sim_vehicle.py -v ArduCopter --gdb --debug --rgbled param set NTF_LED_TYPES 32772 # enable ToshibaLED and IS31FL3195 reboot param set NTF_LED_OVERRIDE 1 led 255 0 0 # red led 0 255 0 # green led 0 0 255 # blue */ #include "SIM_config.h" #if AP_SIM_IS31FL3195_ENABLED #include "SIM_I2CDevice.h" #include "SIM_RGBLED.h" namespace SITL { class IS31FL3195DevReg : public I2CRegEnum { public: static constexpr uint8_t PRODUCT_ID = 0x00; // not really; actually i2c addr! static constexpr uint8_t SHUTDOWN_CONTROL = 0x01; // . // . static constexpr uint8_t P1_STATE = 0x0C; static constexpr uint8_t P2_STATE = 0x0D; static constexpr uint8_t P3_STATE = 0x0E; static constexpr uint8_t P4_STATE = 0x0F; static constexpr uint8_t OUT1 = 0x10; // . // . static constexpr uint8_t OUT2 = 0x21; // . // . static constexpr uint8_t OUT3 = 0x32; // . // . static constexpr uint8_t OUT4 = 0x40; // . // . static constexpr uint8_t COLOUR_UPDATE = 0x50; // . // . static constexpr uint8_t RESET_REGISTER = 0x5f; // reset the registers value to default }; class IS31FL3195 : public I2CDevice, protected I2CRegisters_8Bit { public: void init() override; void set_product_id(uint8_t product_id); void update(const class Aircraft &aircraft) override; void rdwr_store_register_value(uint8_t reg, uint8_t value) override; int rdwr(I2C::i2c_rdwr_ioctl_data *&data) override; private: void reset_registers(); bool colour_update_register_poked; SIM_RGBLED rgbled{"IS31FL3195"}; }; } // namespace SITL #endif // AP_SIM_IS31FL3195_ENABLED