DS3: fix battery_level aquisition

This commit is contained in:
Megamouse 2021-03-01 09:24:30 +01:00
parent 805d52987f
commit 2dc798d539
2 changed files with 16 additions and 16 deletions

View File

@ -334,6 +334,20 @@ ds3_pad_handler::DataStatus ds3_pad_handler::get_data(ds3_device* ds3dev)
if (ds3dev->padData[0] == 0x01 && ds3dev->padData[1] != 0xFF) if (ds3dev->padData[0] == 0x01 && ds3dev->padData[1] != 0xFF)
#endif #endif
{ {
const u8 battery_status = ds3dev->padData[12 + DS3_HID_OFFSET];
if (battery_status >= 0xEE)
{
// Charging (0xEE) or full (0xEF). Let's set the level to 100%.
ds3dev->battery_level = 100;
ds3dev->cable_state = 1;
}
else
{
ds3dev->battery_level = battery_capacity[std::min<u8>(battery_status, 5)];
ds3dev->cable_state = 0;
}
return DataStatus::NewData; return DataStatus::NewData;
} }
else else
@ -423,20 +437,6 @@ void ds3_pad_handler::get_extended_info(const std::shared_ptr<PadDevice>& device
if (!ds3dev || !pad) if (!ds3dev || !pad)
return; return;
const u8 battery_status = ds3dev->padData[12 + DS3_HID_OFFSET];
if (battery_status >= 0xEE)
{
// Charging (0xEE) or full (0xEF). Let's set the level to 100%.
ds3dev->battery_level = 100;
ds3dev->cable_state = 1;
}
else
{
ds3dev->battery_level = battery_capacity[std::min<u8>(battery_status, 5)];
ds3dev->cable_state = 0;
}
pad->m_battery_level = ds3dev->battery_level; pad->m_battery_level = ds3dev->battery_level;
pad->m_cable_state = ds3dev->cable_state; pad->m_cable_state = ds3dev->cable_state;

View File

@ -575,8 +575,8 @@ void dualsense_pad_handler::get_extended_info(const std::shared_ptr<PadDevice>&
auto buf = dualsense_device->padData; auto buf = dualsense_device->padData;
//pad->m_battery_level = dualsense_device->batteryLevel; pad->m_battery_level = dualsense_device->battery_level;
//pad->m_cable_state = dualsense_device->cableState; pad->m_cable_state = dualsense_device->cable_state;
// these values come already calibrated, all we need to do is convert to ds3 range // these values come already calibrated, all we need to do is convert to ds3 range