Store name in SonyDualSenseController to avoid setting it in detector

This commit is contained in:
Adam Honse 2025-08-14 20:08:31 -05:00
parent 517287117b
commit 840512751c
4 changed files with 47 additions and 37 deletions

View file

@ -25,49 +25,49 @@
RGBController_SonyDualSense::RGBController_SonyDualSense(SonyDualSenseController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "Sony DualSense";
name = controller->GetName();
if(controller->IsBluetooth())
{
name.append(" (BT)");
}
vendor = "Sony";
type = DEVICE_TYPE_GAMEPAD;
description = "Sony DualSense Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
vendor = "Sony";
type = DEVICE_TYPE_GAMEPAD;
description = "Sony DualSense Device";
location = controller->GetLocation();
serial = controller->GetSerialString();
mode Direct;
Direct.value = SONY_DUALSENSE_DIRECT_MODE_VALUE;
Direct.name = "Direct";
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Direct.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Direct.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
Direct.value = SONY_DUALSENSE_DIRECT_MODE_VALUE;
Direct.name = "Direct";
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Direct.color_mode = MODE_COLORS_PER_LED;
Direct.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Direct.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Direct.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
modes.push_back(Direct);
mode Micoff;
Micoff.value = SONY_DUALSENSE_MIC_OFF_MODE_VALUE;
Micoff.name = "Mic Off (Direct)";
Micoff.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Micoff.color_mode = MODE_COLORS_PER_LED;
Micoff.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Micoff.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Micoff.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
Micoff.value = SONY_DUALSENSE_MIC_OFF_MODE_VALUE;
Micoff.name = "Mic Off (Direct)";
Micoff.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Micoff.color_mode = MODE_COLORS_PER_LED;
Micoff.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Micoff.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Micoff.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
modes.push_back(Micoff);
mode Micpulse;
Micpulse.value = SONY_DUALSENSE_MIC_PULSE_MODE_VALUE;
Micpulse.name = "Mic Pulse (Direct)";
Micpulse.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Micpulse.color_mode = MODE_COLORS_PER_LED;
Micpulse.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Micpulse.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Micpulse.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
Micpulse.value = SONY_DUALSENSE_MIC_PULSE_MODE_VALUE;
Micpulse.name = "Mic Pulse (Direct)";
Micpulse.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS;
Micpulse.color_mode = MODE_COLORS_PER_LED;
Micpulse.brightness_min = SONY_DUALSENSE_BRIGHTNESS_MIN;
Micpulse.brightness_max = SONY_DUALSENSE_BRIGHTNESS_MAX;
Micpulse.brightness = SONY_DUALSENSE_DEFAULT_BRIGHTNESS;
modes.push_back(Micpulse);
SetupZones();

View file

@ -15,11 +15,12 @@
#include "SonyDualSenseController.h"
#include "StringUtils.h"
SonyDualSenseController::SonyDualSenseController(hid_device * device_handle, const char * device_path, bool is_bluetooth)
SonyDualSenseController::SonyDualSenseController(hid_device * device_handle, const char * device_path, bool is_bluetooth, std::string dev_name)
{
dev = device_handle;
location = device_path;
this->is_bluetooth = is_bluetooth;
dev = device_handle;
location = device_path;
name = dev_name;
this->is_bluetooth = is_bluetooth;
}
SonyDualSenseController::~SonyDualSenseController()
@ -32,6 +33,11 @@ std::string SonyDualSenseController::GetLocation()
return("HID: " + location);
}
std::string SonyDualSenseController::GetName()
{
return(name);
}
std::string SonyDualSenseController::GetSerialString()
{
wchar_t serial_string[128];

View file

@ -34,10 +34,11 @@ enum
class SonyDualSenseController
{
public:
SonyDualSenseController(hid_device * device_handle, const char * device_path, bool is_bluetooth);
SonyDualSenseController(hid_device * device_handle, const char * device_path, bool is_bluetooth, std::string dev_name);
~SonyDualSenseController();
std::string GetLocation();
std::string GetName();
std::string GetSerialString();
void SetColors(std::vector<RGBColor> colors, unsigned char brightness, unsigned char mode_value);
@ -46,5 +47,6 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
bool is_bluetooth;
};

View file

@ -28,11 +28,12 @@
void DetectSonyDS4Controllers(hid_device_info* info, const std::string&)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
SonyDS4Controller* controller = new SonyDS4Controller(dev, info->path);
RGBController_SonyDS4* rgb_controller = new RGBController_SonyDS4(controller);
// Constructor sets the name
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
@ -40,12 +41,13 @@ void DetectSonyDS4Controllers(hid_device_info* info, const std::string&)
void DetectSonyDualSenseControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
bool is_bluetooth = info->interface_number == -1;
SonyDualSenseController* controller = new SonyDualSenseController(dev, info->path, is_bluetooth);
SonyDualSenseController* controller = new SonyDualSenseController(dev, info->path, is_bluetooth, name);
RGBController_SonyDualSense* rgb_controller = new RGBController_SonyDualSense(controller);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}