diff --git a/Controllers/NollieController/NollieController.cpp b/Controllers/NollieController/NollieController.cpp index e945595f..bb443d9a 100644 --- a/Controllers/NollieController/NollieController.cpp +++ b/Controllers/NollieController/NollieController.cpp @@ -36,7 +36,6 @@ std::string NollieController::GetSerialString() std::wstring return_wstring = serial_string; std::string return_string(return_wstring.begin(), return_wstring.end()); - return(return_string); } @@ -110,19 +109,28 @@ void NollieController::SendPacket(unsigned char channel,RGBColor* colors,unsigne | Send packet | \*-----------------------------------------------------*/ hid_write(dev, usb_buf, 1025); + if(channel == NOLLIE32_FLAG1_CHANNEL || channel == NOLLIE32_FLAG2_CHANNEL) + { + std::this_thread::sleep_for(std::chrono::milliseconds(8)); + } } void NollieController::SendPacketFS(unsigned char channel,unsigned char packet_id,RGBColor* colors,unsigned int num_colors) { unsigned char usb_buf[65]; unsigned int packet_interval; - if (GetUSBPID() == NOLLIE28_12_PID) + unsigned int dev_pid = GetUSBPID(); + switch(dev_pid) { - packet_interval = 2; - } - else - { - packet_interval = 25; + case NOLLIE28_12_PID: + packet_interval = 2; + break; + case NOLLIE8_PID: + packet_interval = 6; + break; + default: + packet_interval = 25; + break; } memset(usb_buf, 0x00, sizeof(usb_buf)); usb_buf[0x00] = 0x00; @@ -132,6 +140,11 @@ void NollieController::SendPacketFS(unsigned char channel,unsigned char packet_i usb_buf[0x02 + (color_idx * 3)] = RGBGetRValue(colors[color_idx]); usb_buf[0x03 + (color_idx * 3)] = RGBGetGValue(colors[color_idx]); usb_buf[0x04 + (color_idx * 3)] = RGBGetBValue(colors[color_idx]); + if(dev_pid == NOLLIE8_PID) + { + usb_buf[0x02 + (color_idx * 3)] = RGBGetGValue(colors[color_idx]); + usb_buf[0x03 + (color_idx * 3)] = RGBGetRValue(colors[color_idx]); + } } hid_write(dev, usb_buf, 65); } diff --git a/Controllers/NollieController/NollieControllerDetect.cpp b/Controllers/NollieController/NollieControllerDetect.cpp index 50604557..fc2d4cf4 100644 --- a/Controllers/NollieController/NollieControllerDetect.cpp +++ b/Controllers/NollieController/NollieControllerDetect.cpp @@ -13,7 +13,6 @@ #include #include - void DetectNollieControllers(hid_device_info* info, const std::string& name) { hid_device* dev = hid_open_path(info->path); @@ -36,6 +35,7 @@ void DetectNollieControllers(hid_device_info* info, const std::string& name) REGISTER_HID_DETECTOR("Nollie 32CH", DetectNollieControllers, NOLLIE32_VID, NOLLIE32_PID); REGISTER_HID_DETECTOR("Nollie 16CH", DetectNollieControllers, NOLLIE16_VID, NOLLIE16_PID); +REGISTER_HID_DETECTOR("Nollie 8CH", DetectNollieControllers, NOLLIE8_VID, NOLLIE8_PID); REGISTER_HID_DETECTOR("Nollie 28 12", DetectNollieControllers, NOLLIE28_12_VID, NOLLIE28_12_PID); REGISTER_HID_DETECTOR("Nollie 28 L1", DetectNollieControllers, NOLLIE28_12_VID, NOLLIE28_L1_PID); REGISTER_HID_DETECTOR("Nollie 28 L2", DetectNollieControllers, NOLLIE28_12_VID, NOLLIE28_L2_PID); diff --git a/Controllers/NollieController/RGBController_Nollie.cpp b/Controllers/NollieController/RGBController_Nollie.cpp index 958e5433..282d42a9 100644 --- a/Controllers/NollieController/RGBController_Nollie.cpp +++ b/Controllers/NollieController/RGBController_Nollie.cpp @@ -66,6 +66,10 @@ void RGBController_Nollie::SetupZones() channels_num = NOLLIE28_12_CHANNELS_NUM; ch_led_num = NOLLIE_12_CH_LED_NUM; break; + case NOLLIE8_PID: + channels_num = NOLLIE8_CHANNELS_NUM; + ch_led_num = NOLLIE_8_CH_LED_NUM; + break; default: channels_num = NOLLIE8_CHANNELS_NUM; ch_led_num = NOLLIE_FS_CH_LED_NUM; @@ -173,7 +177,7 @@ void RGBController_Nollie::DeviceUpdateLEDs() { ChSort.push_back(channel); } - else if(channel == 15 || channel == 31) + else if(channel == NOLLIE32_FLAG1_CHANNEL || channel == NOLLIE32_FLAG2_CHANNEL) { ChSort.push_back(channel); } @@ -208,7 +212,6 @@ void RGBController_Nollie::UpdateZoneLEDs(int zone) void RGBController_Nollie::UpdateSingleLED(int led) { unsigned int channel = leds_channel[led]; - controller->SetChannelLEDs(channel_index[channel], zones[channel].colors, zones[channel].leds_count); } diff --git a/Controllers/NollieController/RGBController_Nollie.h b/Controllers/NollieController/RGBController_Nollie.h index 3aaaf417..8b154a05 100644 --- a/Controllers/NollieController/RGBController_Nollie.h +++ b/Controllers/NollieController/RGBController_Nollie.h @@ -11,9 +11,10 @@ #include "RGBController.h" #include "NollieController.h" +#define NOLLIE_12_CH_LED_NUM 42 +#define NOLLIE_8_CH_LED_NUM 126 #define NOLLIE_HS_CH_LED_NUM 256 #define NOLLIE_FS_CH_LED_NUM 525 -#define NOLLIE_12_CH_LED_NUM 42 #define NOLLIE32_CHANNELS_NUM 32 #define NOLLIE32_PID 0x4714 @@ -23,16 +24,21 @@ #define NOLLIE16_PID 0x4716 #define NOLLIE16_VID 0x3061 +#define NOLLIE8_CHANNELS_NUM 8 +#define NOLLIE8_PID 0x1F01 +#define NOLLIE8_VID 0x16D2 + #define NOLLIE28_12_CHANNELS_NUM 12 #define NOLLIE28_12_VID 0x16D2 #define NOLLIE28_12_PID 0x1616 #define NOLLIE28_L1_PID 0x1617 #define NOLLIE28_L2_PID 0x1618 -#define NOLLIE8_CHANNELS_NUM 8 - #define NOLLIE32_MOS_TRIGGER_CH 26 #define NOLLIE32_MOS_TRIGGER_LED 20 +#define NOLLIE32_FLAG1_CHANNEL 15 +#define NOLLIE32_FLAG2_CHANNEL 31 + class RGBController_Nollie : public RGBController {