Fix name and version parsing for SteelSeries Aerox devices

This commit is contained in:
morg 2024-01-03 10:02:28 +01:00 committed by Adam Honse
parent 46095ce609
commit c54a268e19
7 changed files with 12 additions and 16 deletions

View file

@ -24,7 +24,6 @@ RGBController_SteelSeriesRival3::RGBController_SteelSeriesRival3(SteelSeriesMous
{
controller = controller_ptr;
name = controller->GetDeviceName();
vendor = "SteelSeries";
type = DEVICE_TYPE_MOUSE;
description = "SteelSeries Mouse Device";

View file

@ -37,7 +37,7 @@ std::string SteelSeriesAerox3Controller::GetFirmwareVersion()
uint8_t result = 0;
const uint8_t CMD = 0x90;
const uint8_t sz = 16;
char version[sz];
char version[sz + 1];
uint8_t buffer[STEELSERIES_AEORX3_PACKET_SIZE] = { 0x00, CMD, 0x00 };
@ -45,7 +45,7 @@ std::string SteelSeriesAerox3Controller::GetFirmwareVersion()
do
{
result = hid_read_timeout(dev, buffer, STEELSERIES_AEORX3_PACKET_SIZE, STEELSERIES_AEORX3_TIMEOUT);
LOG_DEBUG("[%s] Reading version buffer: Bytes Read %d Buffer %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", device_name, result,
LOG_DEBUG("[%s] Reading version buffer: Bytes Read %d Buffer %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", STEELSERIES_AEORX3_NAME, result,
buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5], buffer[6], buffer[7], buffer[8], buffer[9], buffer[10]);
} while(result > 0 && buffer[0] != CMD);
@ -55,14 +55,15 @@ std::string SteelSeriesAerox3Controller::GetFirmwareVersion()
| Read the version from the second character |
\*-----------------------------------------------------------------*/
memcpy(version, &buffer[1], sz);
version[sz] = 0;
std::string tmp = std::string(version);
LOG_DEBUG("[%s] Version: %s as string %s", device_name, version, tmp.c_str());
LOG_DEBUG("[%s] Version: %s as string %s", STEELSERIES_AEORX3_NAME, version, tmp.c_str());
return tmp;
}
else
{
LOG_DEBUG("[%s] Unable to get version: giving up!", device_name);
LOG_DEBUG("[%s] Unable to get version: giving up!", STEELSERIES_AEORX3_NAME);
return "";
}
}

View file

@ -16,6 +16,7 @@
#pragma once
#define STEELSERIES_AEORX3_NAME "SteelSeries Aerox 3"
#define STEELSERIES_AEORX3_PACKET_SIZE 65
#define STEELSERIES_AEORX3_TIMEOUT 250

View file

@ -37,7 +37,7 @@ std::string SteelSeriesAerox9Controller::GetFirmwareVersion()
uint8_t result = 0;
const uint8_t CMD = 0x90;
const uint8_t sz = 16;
char version[sz];
char version[sz + 1];
uint8_t buffer[STEELSERIES_AEORX9_PACKET_SIZE] = { 0x00, CMD, 0x00 };
@ -45,7 +45,7 @@ std::string SteelSeriesAerox9Controller::GetFirmwareVersion()
do
{
result = hid_read_timeout(dev, buffer, STEELSERIES_AEORX9_PACKET_SIZE, STEELSERIES_AEORX9_TIMEOUT);
LOG_DEBUG("[%s] Reading version buffer: Bytes Read %d Buffer %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", device_name, result,
LOG_DEBUG("[%s] Reading version buffer: Bytes Read %d Buffer %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", STEELSERIES_AEORX9_NAME, result,
buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5], buffer[6], buffer[7], buffer[8], buffer[9], buffer[10]);
} while(result > 0 && buffer[0] != CMD);
@ -55,14 +55,15 @@ std::string SteelSeriesAerox9Controller::GetFirmwareVersion()
| Read the version from the second character |
\*-----------------------------------------------------------------*/
memcpy(version, &buffer[1], sz);
version[sz] = 0;
std::string tmp = std::string(version);
LOG_DEBUG("[%s] Version: %s as string %s", device_name, version, tmp.c_str());
LOG_DEBUG("[%s] Version: %s as string %s", STEELSERIES_AEORX9_NAME, version, tmp.c_str());
return tmp;
}
else
{
LOG_DEBUG("[%s] Unable to get version: giving up!", device_name);
LOG_DEBUG("[%s] Unable to get version: giving up!", STEELSERIES_AEORX9_NAME);
return "";
}
}

View file

@ -15,6 +15,7 @@
#pragma once
#define STEELSERIES_AEORX9_NAME "SteelSeries Aerox 9"
#define STEELSERIES_AEORX9_PACKET_SIZE 65
#define STEELSERIES_AEORX9_TIMEOUT 250

View file

@ -26,11 +26,6 @@ std::string SteelSeriesMouseController::GetDeviceLocation()
return("HID: " + location);
}
char* SteelSeriesMouseController::GetDeviceName()
{
return device_name;
}
std::string SteelSeriesMouseController::GetSerialString()
{
wchar_t serial_string[128];

View file

@ -49,7 +49,6 @@ public:
virtual ~SteelSeriesMouseController();
std::string GetDeviceLocation();
char* GetDeviceName();
std::string GetSerialString();
steelseries_type GetMouseType();
@ -71,7 +70,6 @@ public:
) = 0;
protected:
char device_name[32];
hid_device* dev;
std::string location;
steelseries_type proto;