diff --git a/Controllers/RGBFusionController/RGBFusionController.cpp b/Controllers/RGBFusionController/RGBFusionController.cpp index b293e6bc3..b42c08ca7 100644 --- a/Controllers/RGBFusionController/RGBFusionController.cpp +++ b/Controllers/RGBFusionController/RGBFusionController.cpp @@ -22,6 +22,10 @@ RGBFusionController::RGBFusionController(i2c_smbus_interface* bus, rgb_fusion_de // Set LED count led_count = 2; + + // Enable control + switch_bank(0); + bus->i2c_smbus_write_byte_data(dev, 0x02, 0x09); } RGBFusionController::~RGBFusionController() @@ -132,37 +136,38 @@ void RGBFusionController::dump() unsigned char RGBFusionController::get_mode_ch_0() { - s32 temp = bus->i2c_smbus_read_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_0_MODE); - return(temp); + return(bus->i2c_smbus_read_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_0_MODE)); } unsigned char RGBFusionController::get_mode_ch_1() { - return(bus->i2c_smbus_read_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_1_MODE)); + return(bus->i2c_smbus_read_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_1_MODE)); } void RGBFusionController::set_color_ch_0(unsigned char red, unsigned char green, unsigned char blue) { - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_0_R, red); - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_0_G, green); - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_0_B, blue); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_0_R, red); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_0_G, green); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_0_B, blue); + bus->i2c_smbus_write_byte_data(dev, 0x03, 0x01); } void RGBFusionController::set_color_ch_1(unsigned char red, unsigned char green, unsigned char blue) { - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_1_R, red); - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_1_G, green); - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_1_B, blue); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_1_R, red); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_1_G, green); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_1_B, blue); + bus->i2c_smbus_write_byte_data(dev, 0x0B, 0x01); } void RGBFusionController::set_mode_ch_0(unsigned char mode) { - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_0_MODE, mode + RGB_FUSION_WRITE_MODE_OFST); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_0_MODE, mode + RGB_FUSION_WRITE_MODE_OFST); } void RGBFusionController::set_mode_ch_1(unsigned char mode) { - bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_1_REG_CH_1_MODE, mode + RGB_FUSION_WRITE_MODE_OFST); + bus->i2c_smbus_write_byte_data(dev, RGB_FUSION_BANK_0_REG_CH_1_MODE, mode + RGB_FUSION_WRITE_MODE_OFST); } void RGBFusionController::switch_bank(unsigned char bank) diff --git a/Controllers/RGBFusionController/RGBFusionController.h b/Controllers/RGBFusionController/RGBFusionController.h index 4f4b27845..d582c7837 100644 --- a/Controllers/RGBFusionController/RGBFusionController.h +++ b/Controllers/RGBFusionController/RGBFusionController.h @@ -16,14 +16,14 @@ typedef unsigned char rgb_fusion_dev_id; enum { - RGB_FUSION_BANK_0_REG_CH_0_R = 0x00, /* Channel 0 Red Value */ - RGB_FUSION_BANK_0_REG_CH_0_G = 0x01, /* Channel 0 Green Value */ - RGB_FUSION_BANK_0_REG_CH_0_B = 0x02, /* Channel 0 Blue Value */ - RGB_FUSION_BANK_0_REG_CH_1_R = 0x08, /* Channel 1 Red Value */ - RGB_FUSION_BANK_0_REG_CH_1_G = 0x09, /* Channel 1 Green Value */ - RGB_FUSION_BANK_0_REG_CH_1_B = 0x0A, /* Channel 1 Blue Value */ - RGB_FUSION_BANK_1_REG_CH_0_MODE = 0x03, /* Channel 0 Mode Selection */ - RGB_FUSION_BANK_1_REG_CH_1_MODE = 0x13, /* Channel 1 Mode Selection */ + RGB_FUSION_BANK_0_REG_CH_0_MODE = 0x03, /* Channel 0 Mode Selection */ + RGB_FUSION_BANK_0_REG_CH_1_MODE = 0x13, /* Channel 1 Mode Selection */ + RGB_FUSION_BANK_1_REG_CH_0_R = 0x00, /* Channel 0 Red Value */ + RGB_FUSION_BANK_1_REG_CH_0_G = 0x01, /* Channel 0 Green Value */ + RGB_FUSION_BANK_1_REG_CH_0_B = 0x02, /* Channel 0 Blue Value */ + RGB_FUSION_BANK_1_REG_CH_1_R = 0x08, /* Channel 1 Red Value */ + RGB_FUSION_BANK_1_REG_CH_1_G = 0x09, /* Channel 1 Green Value */ + RGB_FUSION_BANK_1_REG_CH_1_B = 0x0A, /* Channel 1 Blue Value */ RGB_FUSION_BANK_SWITCH_REG = 0xF0, /* Bank Switch Register */ };