mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-05-19 03:56:26 -04:00
Add MadCatzCyborgController for MadCatz Cyborg Gaming Light
This commit is contained in:
committed by
Adam Honse
parent
3e7ad705bb
commit
7177a534b9
@@ -0,0 +1,99 @@
|
||||
/*---------------------------------------------------------*\
|
||||
| MadCatzCyborgController.cpp |
|
||||
| |
|
||||
| Driver for MadCatz Cyborg Gaming Light |
|
||||
| |
|
||||
| This file is part of the OpenRGB project |
|
||||
| SPDX-License-Identifier: GPL-2.0-only |
|
||||
\*---------------------------------------------------------*/
|
||||
|
||||
#include "MadCatzCyborgController.h"
|
||||
#include "StringUtils.h"
|
||||
#include <cstring>
|
||||
|
||||
MadCatzCyborgController::MadCatzCyborgController(hid_device* dev_handle, const char* path)
|
||||
{
|
||||
dev = dev_handle;
|
||||
location = path;
|
||||
}
|
||||
|
||||
MadCatzCyborgController::~MadCatzCyborgController()
|
||||
{
|
||||
if(dev != nullptr)
|
||||
{
|
||||
hid_close(dev);
|
||||
dev = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
std::string MadCatzCyborgController::GetDeviceLocation()
|
||||
{
|
||||
return(location);
|
||||
}
|
||||
|
||||
std::string MadCatzCyborgController::GetSerialString()
|
||||
{
|
||||
wchar_t serial_string[128];
|
||||
int ret = hid_get_serial_number_string(dev, serial_string, 128);
|
||||
|
||||
if(ret != 0)
|
||||
{
|
||||
return("");
|
||||
}
|
||||
|
||||
return(StringUtils::wstring_to_string(serial_string));
|
||||
}
|
||||
|
||||
void MadCatzCyborgController::Initialize()
|
||||
{
|
||||
if(dev == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Enable the device
|
||||
unsigned char enable_buf[2] = { CMD_ENABLE, 0x00 };
|
||||
hid_send_feature_report(dev, enable_buf, 2);
|
||||
}
|
||||
|
||||
void MadCatzCyborgController::SetLEDColor(unsigned char red, unsigned char green, unsigned char blue)
|
||||
{
|
||||
if(dev == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Format: [CMD_COLOR][0x00][R][G][B][0x00][0x00][0x00][0x00]
|
||||
unsigned char usb_buf[9] =
|
||||
{
|
||||
CMD_COLOR,
|
||||
0x00,
|
||||
red,
|
||||
green,
|
||||
blue,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00
|
||||
};
|
||||
|
||||
hid_send_feature_report(dev, usb_buf, 9);
|
||||
}
|
||||
|
||||
void MadCatzCyborgController::SetIntensity(unsigned char intensity)
|
||||
{
|
||||
if(dev == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Clamp intensity to 0-100
|
||||
if(intensity > 100)
|
||||
{
|
||||
intensity = 100;
|
||||
}
|
||||
|
||||
// Format: [CMD_INTENSITY][0x00][intensity_value]
|
||||
unsigned char usb_buf[3] = { CMD_INTENSITY, 0x00, intensity };
|
||||
hid_send_feature_report(dev, usb_buf, 3);
|
||||
}
|
||||
Reference in New Issue
Block a user