mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-10-02 22:29:14 +00:00
DS3: fix other report size check.
The Report size also seems to be generic here, so let's only check if anything got returned at all. Also add missing logging for result < 0.
This commit is contained in:
parent
1738b38536
commit
a2623b1a9a
1 changed files with 14 additions and 12 deletions
|
@ -334,11 +334,21 @@ ds3_pad_handler::DataStatus ds3_pad_handler::get_data(ds3_device* ds3dev)
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
ds3dev->padData[0] = ds3dev->report_id;
|
ds3dev->padData[0] = ds3dev->report_id;
|
||||||
const int result = hid_get_feature_report(ds3dev->hidDevice, ds3dev->padData.data(), ds3dev->padData.size());
|
const int result = hid_get_feature_report(ds3dev->hidDevice, ds3dev->padData.data(), ds3dev->padData.size());
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
ds3_log.error("get_data: hid_get_feature_report 0x%02x failed! result=%d, buf[0]=0x%x, error=%s", ds3dev->report_id, result, ds3dev->padData[0], hid_error(ds3dev->hidDevice));
|
||||||
|
return DataStatus::ReadError;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
const int result = hid_read(ds3dev->hidDevice, ds3dev->padData.data(), ds3dev->padData.size());
|
const int result = hid_read(ds3dev->hidDevice, ds3dev->padData.data(), ds3dev->padData.size());
|
||||||
|
if (result < 0)
|
||||||
|
{
|
||||||
|
ds3_log.error("get_data: hid_read failed! result=%d, error=%s", result, hid_error(ds3dev->hidDevice));
|
||||||
|
return DataStatus::ReadError;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (result == static_cast<int>(ds3dev->padData.size()))
|
if (result > 0)
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (ds3dev->padData[0] == ds3dev->report_id)
|
if (ds3dev->padData[0] == ds3dev->report_id)
|
||||||
|
@ -362,19 +372,11 @@ ds3_pad_handler::DataStatus ds3_pad_handler::get_data(ds3_device* ds3dev)
|
||||||
|
|
||||||
return DataStatus::NewData;
|
return DataStatus::NewData;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
ds3_log.warning("get_data: Unknown packet received: 0x%02x", ds3dev->padData[0]);
|
||||||
ds3_log.warning("Unknown packet received: 0x%02x", ds3dev->padData[0]);
|
|
||||||
return DataStatus::NoNewData;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (result == 0)
|
|
||||||
return DataStatus::NoNewData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return DataStatus::ReadError;
|
return DataStatus::NoNewData;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unordered_map<u64, u16> ds3_pad_handler::get_button_values(const std::shared_ptr<PadDevice>& device)
|
std::unordered_map<u64, u16> ds3_pad_handler::get_button_values(const std::shared_ptr<PadDevice>& device)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue