Nollie32 bug fixes, and new controllers

This commit is contained in:
诺诺 2024-01-13 19:32:32 +00:00 committed by Adam Honse
parent 16938483a1
commit ccec0828f9
4 changed files with 35 additions and 13 deletions

View file

@ -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);
}

View file

@ -13,7 +13,6 @@
#include <vector>
#include <hidapi/hidapi.h>
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);

View file

@ -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);
}

View file

@ -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
{