mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2026-02-01 02:41:09 -05:00
Rework to use only a single hid_device
This commit is contained in:
@@ -12,9 +12,11 @@
|
||||
#include <cstring>
|
||||
#include "HIDLampArrayController.h"
|
||||
|
||||
HIDLampArrayController::HIDLampArrayController(lamparray_hid_devs *devs_handle)
|
||||
HIDLampArrayController::HIDLampArrayController(hid_device *dev_handle, const char *path, std::string dev_name)
|
||||
{
|
||||
devs = devs_handle;
|
||||
dev = dev_handle;
|
||||
location = path;
|
||||
name = dev_name;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Get LampArrayAttributesReport |
|
||||
@@ -39,12 +41,17 @@ HIDLampArrayController::HIDLampArrayController(lamparray_hid_devs *devs_handle)
|
||||
|
||||
HIDLampArrayController::~HIDLampArrayController()
|
||||
{
|
||||
|
||||
hid_close(dev);
|
||||
}
|
||||
|
||||
std::string HIDLampArrayController::GetDeviceLocation()
|
||||
{
|
||||
return("");
|
||||
return("HID: " + location);
|
||||
}
|
||||
|
||||
std::string HIDLampArrayController::GetDeviceName()
|
||||
{
|
||||
return(name);
|
||||
}
|
||||
|
||||
std::string HIDLampArrayController::GetSerialString()
|
||||
@@ -72,7 +79,7 @@ void HIDLampArrayController::GetLampArrayAttributesReport()
|
||||
/*-----------------------------------------------------*\
|
||||
| Get the report |
|
||||
\*-----------------------------------------------------*/
|
||||
report_size = hid_get_feature_report(devs->hid_dev_LampArrayAttributesReport, usb_buf, sizeof(usb_buf));
|
||||
report_size = hid_get_feature_report(dev, usb_buf, sizeof(usb_buf));
|
||||
|
||||
memcpy(&LampArray, &usb_buf[1], sizeof(LampArray));
|
||||
}
|
||||
@@ -93,7 +100,7 @@ void HIDLampArrayController::GetLampAttributesResponseReport()
|
||||
/*-----------------------------------------------------*\
|
||||
| Get the report |
|
||||
\*-----------------------------------------------------*/
|
||||
report_size = hid_get_feature_report(devs->hid_dev_LampAttributesResponseReport, usb_buf, sizeof(usb_buf));
|
||||
report_size = hid_get_feature_report(dev, usb_buf, sizeof(usb_buf));
|
||||
|
||||
memcpy(&attributes, &usb_buf[1], sizeof(attributes));
|
||||
|
||||
@@ -122,7 +129,7 @@ void HIDLampArrayController::SetLampArrayControlReport(unsigned char AutonomousM
|
||||
/*-----------------------------------------------------*\
|
||||
| Send the report |
|
||||
\*-----------------------------------------------------*/
|
||||
hid_send_feature_report(devs->hid_dev_LampArrayControlReport, usb_buf, sizeof(usb_buf));
|
||||
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
|
||||
}
|
||||
|
||||
void HIDLampArrayController::SetLampAttributesRequestReport(unsigned short LampId)
|
||||
@@ -144,7 +151,7 @@ void HIDLampArrayController::SetLampAttributesRequestReport(unsigned short LampI
|
||||
/*-----------------------------------------------------*\
|
||||
| Send the report |
|
||||
\*-----------------------------------------------------*/
|
||||
hid_send_feature_report(devs->hid_dev_LampAttributesRequestReport, usb_buf, sizeof(usb_buf));
|
||||
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
|
||||
}
|
||||
|
||||
void HIDLampArrayController::SetLampMultiUpdateReport(unsigned char LampCount, unsigned char LampUpdateFlags, unsigned short * LampIds, LampArrayColor * UpdateColors)
|
||||
@@ -173,5 +180,5 @@ void HIDLampArrayController::SetLampMultiUpdateReport(unsigned char LampCount, u
|
||||
/*-----------------------------------------------------*\
|
||||
| Send the report |
|
||||
\*-----------------------------------------------------*/
|
||||
hid_send_feature_report(devs->hid_dev_LampMultiUpdateReport, usb_buf, sizeof(usb_buf));
|
||||
hid_send_feature_report(dev, usb_buf, sizeof(usb_buf));
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <hidapi/hidapi.h>
|
||||
#include <hidapi.h>
|
||||
|
||||
#include "RGBController.h"
|
||||
|
||||
@@ -27,17 +27,6 @@
|
||||
#define PACK( __Declaration__ ) __pragma( pack(push, 1) ) __Declaration__ __pragma( pack(pop))
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
hid_device * hid_dev_LampArray;
|
||||
hid_device * hid_dev_LampArrayAttributesReport;
|
||||
hid_device * hid_dev_LampAttributesRequestReport;
|
||||
hid_device * hid_dev_LampAttributesResponseReport;
|
||||
hid_device * hid_dev_LampMultiUpdateReport;
|
||||
hid_device * hid_dev_LampRangeUpdateReport;
|
||||
hid_device * hid_dev_LampArrayControlReport;
|
||||
} lamparray_hid_devs;
|
||||
|
||||
PACK(struct LampArrayAttributes
|
||||
{
|
||||
unsigned short LampCount;
|
||||
@@ -119,24 +108,20 @@ enum
|
||||
class HIDLampArrayController
|
||||
{
|
||||
public:
|
||||
HIDLampArrayController(lamparray_hid_devs *devs_handle);
|
||||
HIDLampArrayController(hid_device *dev_handle, const char *path, std::string dev_name);
|
||||
~HIDLampArrayController();
|
||||
|
||||
std::string GetDeviceLocation();
|
||||
std::string GetDeviceName();
|
||||
std::string GetSerialString();
|
||||
|
||||
unsigned int GetLampCount();
|
||||
void SetLampMultiUpdateReport(unsigned char LampCount, unsigned char LampUpdateFlags, unsigned short * LampIds, LampArrayColor * UpdateColors);
|
||||
void SetLampMultiUpdateReport(unsigned char LampCount, unsigned char LampUpdateFlags, unsigned short * LampIds, LampArrayColor * UpdateColors);
|
||||
|
||||
private:
|
||||
|
||||
void GetLampArrayAttributesReport();
|
||||
void GetLampAttributesResponseReport();
|
||||
void SetLampArrayControlReport(unsigned char AutonomousMode);
|
||||
void SetLampAttributesRequestReport(unsigned short LampId);
|
||||
|
||||
|
||||
lamparray_hid_devs * devs;
|
||||
std::string location;
|
||||
hid_device * dev;
|
||||
std::string location;
|
||||
std::string name;
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Vector to store lamp attributes for each lamp |
|
||||
@@ -147,4 +132,9 @@ private:
|
||||
| Parameters from LampArrayAttributesReport |
|
||||
\*-----------------------------------------------------*/
|
||||
LampArrayAttributes LampArray;
|
||||
|
||||
void GetLampArrayAttributesReport();
|
||||
void GetLampAttributesResponseReport();
|
||||
void SetLampArrayControlReport(unsigned char AutonomousMode);
|
||||
void SetLampAttributesRequestReport(unsigned short LampId);
|
||||
};
|
||||
|
||||
@@ -14,9 +14,7 @@
|
||||
#include "RGBController.h"
|
||||
#include "RGBController_HIDLampArray.h"
|
||||
#include <vector>
|
||||
#include <hidapi/hidapi.h>
|
||||
|
||||
static lamparray_hid_devs devs;
|
||||
#include <hidapi.h>
|
||||
|
||||
void DetectHIDLampArrayControllers(hid_device_info* info, const std::string& name)
|
||||
{
|
||||
@@ -24,56 +22,11 @@ void DetectHIDLampArrayControllers(hid_device_info* info, const std::string& nam
|
||||
|
||||
if(dev)
|
||||
{
|
||||
if(info->usage_page == 0x59 && info->usage == 0x01)
|
||||
{
|
||||
devs.hid_dev_LampArray = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x02)
|
||||
{
|
||||
devs.hid_dev_LampArrayAttributesReport = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x20)
|
||||
{
|
||||
devs.hid_dev_LampAttributesRequestReport = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x22)
|
||||
{
|
||||
devs.hid_dev_LampAttributesResponseReport = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x50)
|
||||
{
|
||||
devs.hid_dev_LampMultiUpdateReport = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x60)
|
||||
{
|
||||
devs.hid_dev_LampRangeUpdateReport = dev;
|
||||
}
|
||||
|
||||
if(info->usage_page == 0x59 && info->usage == 0x70)
|
||||
{
|
||||
devs.hid_dev_LampArrayControlReport = dev;
|
||||
}
|
||||
}
|
||||
|
||||
if(devs.hid_dev_LampArray
|
||||
&& devs.hid_dev_LampArrayAttributesReport
|
||||
&& devs.hid_dev_LampAttributesRequestReport
|
||||
&& devs.hid_dev_LampAttributesResponseReport
|
||||
&& devs.hid_dev_LampMultiUpdateReport
|
||||
&& devs.hid_dev_LampRangeUpdateReport
|
||||
&& devs.hid_dev_LampArrayControlReport)
|
||||
{
|
||||
HIDLampArrayController* controller = new HIDLampArrayController(&devs);
|
||||
HIDLampArrayController* controller = new HIDLampArrayController(dev, info->path, name);
|
||||
RGBController_HIDLampArray* rgb_controller = new RGBController_HIDLampArray(controller);
|
||||
rgb_controller->name = name;
|
||||
|
||||
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
||||
}
|
||||
} /* DetectHIDLampArrayControllers() */
|
||||
}
|
||||
|
||||
REGISTER_HID_DETECTOR("Arduino Zero HID Lamp Array Demo", DetectHIDLampArrayControllers, 0x2341, 0x804D);
|
||||
REGISTER_HID_DETECTOR_PU("Arduino Zero HID Lamp Array Demo", DetectHIDLampArrayControllers, 0x2341, 0x804D, 0x59, 0x01);
|
||||
|
||||
@@ -15,7 +15,7 @@ RGBController_HIDLampArray::RGBController_HIDLampArray(HIDLampArrayController* c
|
||||
{
|
||||
controller = controller_ptr;
|
||||
|
||||
name = "HID LampArray Device";
|
||||
name = controller->GetDeviceName();
|
||||
vendor = "Generic";
|
||||
type = DEVICE_TYPE_MOUSEMAT;
|
||||
description = "HID LampArray Device";
|
||||
@@ -34,7 +34,7 @@ RGBController_HIDLampArray::RGBController_HIDLampArray(HIDLampArrayController* c
|
||||
|
||||
RGBController_HIDLampArray::~RGBController_HIDLampArray()
|
||||
{
|
||||
|
||||
delete controller;
|
||||
}
|
||||
|
||||
void RGBController_HIDLampArray::SetupZones()
|
||||
|
||||
Reference in New Issue
Block a user