diff --git a/Controllers/PolychromeController/PolychromeController.cpp b/Controllers/PolychromeController/PolychromeController.cpp index 678a04a5..35e527e5 100644 --- a/Controllers/PolychromeController/PolychromeController.cpp +++ b/Controllers/PolychromeController/PolychromeController.cpp @@ -15,65 +15,25 @@ PolychromeController::PolychromeController(i2c_smbus_interface* bus, polychrome_ this->bus = bus; this->dev = dev; - switch (GetFirmwareVersion()) + unsigned short fw_version = GetFirmwareVersion(); + + /*-----------------------------------------------------*\ + | Determine whether the device uses ASR LED or | + | Polychrome protocol by checking firmware version. | + | Versions 1.xx and 2.xx use ASR LED, 3.xx uses | + | Polychrome | + \*-----------------------------------------------------*/ + if((fw_version >> 8) < 0x03) { - case FIRMWARE_VER_1_PT_5: - led_count = 1; - asr_led = true; - strcpy(device_name, "ASRock ASR LED FW 1.5"); - break; - - case FIRMWARE_VER_1_PT_10: - led_count = 1; - asr_led = true; - strcpy(device_name, "ASRock ASR LED FW 1.10"); - break; - - case FIRMWARE_VER_2_PT_00: - led_count = 1; - asr_led = true; - strcpy(device_name, "ASRock ASR LED FW 2.00"); - break; - - case FIRMWARE_VER_2_PT_08: - led_count = 1; - asr_led = true; - strcpy(device_name, "ASRock ASR LED FW 2.08"); - break; - - case FIRMWARE_VER_2_PT_10: - led_count = 1; - asr_led = true; - strcpy(device_name, "ASRock ASR LED FW 2.10"); - break; - - case FIRMWARE_VER_3_PT_00: - led_count = 1; - asr_led = false; - strcpy(device_name, "ASRock Polychrome FW 3.00"); - break; - - case FIRMWARE_VER_3_PT_04: - led_count = 1; - asr_led = false; - strcpy(device_name, "ASRock Polychrome FW 3.04"); - break; - - default: - unsigned short fw_version = GetFirmwareVersion(); - printf("Polychrome FW Version: %04X\r\n", fw_version); - - led_count = 1; - strcpy(device_name, "ASRock ASR LED/Polychrome Device"); - if((fw_version >> 8) < 0x03) - { - asr_led = true; - } - else - { - asr_led = false; - } - break; + snprintf(device_name, 32, "ASRock ASR LED FW %d.%02d", (fw_version >> 8), (fw_version & 0xFF)); + led_count = 1; + asr_led = true; + } + else + { + snprintf(device_name, 32, "ASRock Polychrome FW %d.%02d", (fw_version >> 8), (fw_version & 0xFF)); + led_count = 1; + asr_led = false; } } diff --git a/Controllers/PolychromeController/PolychromeController.h b/Controllers/PolychromeController/PolychromeController.h index 52414a60..c6d0bf0b 100644 --- a/Controllers/PolychromeController/PolychromeController.h +++ b/Controllers/PolychromeController/PolychromeController.h @@ -14,17 +14,6 @@ typedef unsigned char polychrome_dev_id; -enum -{ - FIRMWARE_VER_1_PT_5 = 0x0105, /* Firmware nu51_1.5 */ - FIRMWARE_VER_1_PT_10 = 0x010A, /* Firmware nu51_1.10 */ - FIRMWARE_VER_2_PT_00 = 0x0200, /* Firmware nu51_2.00 */ - FIRMWARE_VER_2_PT_08 = 0x0208, /* Firmware nu51_2.08 */ - FIRMWARE_VER_2_PT_10 = 0x020A, /* Firmware nu51_2.10 */ - FIRMWARE_VER_3_PT_00 = 0x0300, /* Firmware nu51_3.00 */ - FIRMWARE_VER_3_PT_04 = 0x0304, /* Firmware nu51_3.04 */ -}; - enum { ASRLED_REG_FIRMWARE_VER = 0x00, /* Firmware version Major.Minor */