@@ -93,12 +93,11 @@ unsigned short PolychromeController::ReadFirmwareVersion()
93
93
{
94
94
// The firmware register holds two bytes, so the first read should return 2
95
95
// 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 )
97
98
{
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 ];
102
101
103
102
return ((major << 8 ) | minor);
104
103
}
@@ -114,20 +113,15 @@ void PolychromeController::ReadLEDConfiguration()
114
113
| The LED configuration register holds 6 bytes, so the first read should return 6 |
115
114
| If not, set all zone sizes to zero |
116
115
\*---------------------------------------------------------------------------------*/
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 )
118
118
{
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 ];
131
125
}
132
126
else
133
127
{
0 commit comments