1
0
mirror of https://github.com/cathery/sys-con.git synced 2024-07-05 02:38:45 +00:00

Allow changing DS4 LED (#88)

This commit is contained in:
cathery 2019-11-22 01:03:31 +03:00
parent 60776a8cce
commit d1ccd23813
4 changed files with 16 additions and 6 deletions

View File

@ -168,6 +168,6 @@ public:
Result SendInitBytes();
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
static void LoadConfig(const ControllerConfig *config);
static void LoadConfig(const ControllerConfig *config, RGBAColor ledValue);
virtual ControllerConfig *GetConfig() override;
};

View File

@ -2,6 +2,7 @@
#include <cmath>
static ControllerConfig _dualshock4ControllerConfig{};
static RGBAColor _ledValue{0x00, 0x00, 0x40};
Dualshock4Controller::Dualshock4Controller(std::unique_ptr<IUSBDevice> &&interface)
: IController(std::move(interface))
@ -15,10 +16,10 @@ Dualshock4Controller::~Dualshock4Controller()
Result Dualshock4Controller::SendInitBytes()
{
constexpr uint8_t init_bytes[32] = {
const uint8_t init_bytes[32] = {
0x05, 0x07, 0x00, 0x00,
0x00, 0x00, //initial strong and weak rumble
0x00, 0x00, 0x40, //LED color
0x00, 0x00, //initial strong and weak rumble
_ledValue.r, _ledValue.g, _ledValue.b, //LED color
0x00, 0x00};
return m_outPipe->Write(init_bytes, sizeof(init_bytes));
@ -227,9 +228,10 @@ Result Dualshock4Controller::SetRumble(uint8_t strong_magnitude, uint8_t weak_ma
return 9;
}
void Dualshock4Controller::LoadConfig(const ControllerConfig *config)
void Dualshock4Controller::LoadConfig(const ControllerConfig *config, RGBAColor ledValue)
{
_dualshock4ControllerConfig = *config;
_ledValue = ledValue;
}
ControllerConfig *Dualshock4Controller::GetConfig()

View File

@ -3,6 +3,8 @@ left_stick_deadzone = 10 ; from 0 to 100
right_stick_deadzone = 10 ; from 0 to 100
trigger_deadzone = 0 ; from 0 to 100
color_led = 0,0,64 ; from 0 to 255
color_body = 77,77,77
color_buttons = 0,0,0

View File

@ -73,6 +73,7 @@ static RGBAColor _DecodeColorValue(const char *value)
static ControllerConfig temp_config;
static GlobalConfig global_config;
static RGBAColor temp_color;
static char firmwarePath[100];
static int _ParseConfigLine(void *dummy, const char *section, const char *name, const char *value)
@ -152,6 +153,11 @@ static int _ParseConfigLine(void *dummy, const char *section, const char *name,
temp_config.rightGripColor = _DecodeColorValue(value);
return 1;
}
else if (strcmp(name + 6, "led") == 0)
{
temp_color = _DecodeColorValue(value);
return 1;
}
}
}
@ -208,7 +214,7 @@ void LoadAllConfigs()
WriteToLog("Failed to read from dualshock 3 config!");
if (R_SUCCEEDED(_ReadFromConfig(CONFIG_PATH DUALSHOCK4CONFIG)))
Dualshock4Controller::LoadConfig(&temp_config);
Dualshock4Controller::LoadConfig(&temp_config, temp_color);
else
WriteToLog("Failed to read from dualshock 4 config!");
}