Skip to content

Commit 806d77d

Browse files
TheRogueZetaCalcProgrammer1
authored andcommitted
Convert Polychrome read to i2c_smbus_read_block_data
1 parent b17b634 commit 806d77d

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

Controllers/ASRockPolychromeSMBusController/ASRockPolychromeSMBusController.cpp

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -93,12 +93,11 @@ unsigned short PolychromeController::ReadFirmwareVersion()
9393
{
9494
// The firmware register holds two bytes, so the first read should return 2
9595
// If not, report invalid firmware revision FFFF
96-
if (bus->i2c_smbus_read_byte_data(dev, ASROCK_REG_FIRMWARE_VER) == 0x02)
96+
unsigned char asrock_version[2] = { 0x00, 0x00};
97+
if (bus->i2c_smbus_read_block_data(dev, ASROCK_REG_FIRMWARE_VER, asrock_version) == 0x02)
9798
{
98-
std::this_thread::sleep_for(1ms);
99-
unsigned char major = bus->i2c_smbus_read_byte(dev);
100-
std::this_thread::sleep_for(1ms);
101-
unsigned char minor = bus->i2c_smbus_read_byte(dev);
99+
unsigned char major = asrock_version[0];
100+
unsigned char minor = asrock_version[1];
102101

103102
return((major << 8) | minor);
104103
}
@@ -114,20 +113,15 @@ void PolychromeController::ReadLEDConfiguration()
114113
| The LED configuration register holds 6 bytes, so the first read should return 6 |
115114
| If not, set all zone sizes to zero |
116115
\*---------------------------------------------------------------------------------*/
117-
if (bus->i2c_smbus_read_byte_data(dev, POLYCHROME_REG_LED_CONFIG) == 0x06)
116+
unsigned char asrock_zone_count[6] = { 0x0 };
117+
if (bus->i2c_smbus_read_block_data(dev, POLYCHROME_REG_LED_CONFIG, asrock_zone_count) == 0x06)
118118
{
119-
std::this_thread::sleep_for(1ms);
120-
zone_led_count[POLYCHROME_ZONE_1] = bus->i2c_smbus_read_byte(dev);
121-
std::this_thread::sleep_for(1ms);
122-
zone_led_count[POLYCHROME_ZONE_2] = bus->i2c_smbus_read_byte(dev);
123-
std::this_thread::sleep_for(1ms);
124-
zone_led_count[POLYCHROME_ZONE_3] = bus->i2c_smbus_read_byte(dev);
125-
std::this_thread::sleep_for(1ms);
126-
zone_led_count[POLYCHROME_ZONE_4] = bus->i2c_smbus_read_byte(dev);
127-
std::this_thread::sleep_for(1ms);
128-
zone_led_count[POLYCHROME_ZONE_5] = bus->i2c_smbus_read_byte(dev);
129-
std::this_thread::sleep_for(1ms);
130-
zone_led_count[POLYCHROME_ZONE_ADDRESSABLE] = bus->i2c_smbus_read_byte(dev);
119+
zone_led_count[POLYCHROME_ZONE_1] = asrock_zone_count[0];
120+
zone_led_count[POLYCHROME_ZONE_2] = asrock_zone_count[1];
121+
zone_led_count[POLYCHROME_ZONE_3] = asrock_zone_count[2];
122+
zone_led_count[POLYCHROME_ZONE_4] = asrock_zone_count[3];
123+
zone_led_count[POLYCHROME_ZONE_5] = asrock_zone_count[4];
124+
zone_led_count[POLYCHROME_ZONE_ADDRESSABLE] = asrock_zone_count[5];
131125
}
132126
else
133127
{

0 commit comments

Comments
 (0)