mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-12-06 07:12:28 +01:00
sys_usbd: Small tidyups
This commit is contained in:
parent
8a9b15dee3
commit
b435deac9d
|
|
@ -544,9 +544,7 @@ std::optional<std::array<u8, 32>> dimensions_toypad::pop_added_removed_response(
|
|||
std::lock_guard lock(m_dimensions_mutex);
|
||||
|
||||
if (m_figure_added_removed_responses.empty())
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
std::array<u8, 32> response = m_figure_added_removed_responses.front();
|
||||
m_figure_added_removed_responses.pop();
|
||||
|
|
@ -597,7 +595,6 @@ void usb_device_dimensions::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoi
|
|||
{
|
||||
// Read Endpoint, if a request has not been sent via the write endpoint, set expected result as
|
||||
// EHCI_CC_HALTED so the game doesn't report the Toypad as being disconnected.
|
||||
std::lock_guard lock(m_query_mutex);
|
||||
std::optional<std::array<u8, 32>> response = g_dimensionstoypad.pop_added_removed_response();
|
||||
if (response)
|
||||
{
|
||||
|
|
@ -696,7 +693,6 @@ void usb_device_dimensions::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoi
|
|||
break;
|
||||
}
|
||||
}
|
||||
std::lock_guard lock(m_query_mutex);
|
||||
m_queries.push(q_result);
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -79,6 +79,5 @@ public:
|
|||
void isochronous_transfer(UsbTransfer* transfer) override;
|
||||
|
||||
protected:
|
||||
shared_mutex m_query_mutex;
|
||||
std::queue<std::array<u8, 32>> m_queries;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -258,13 +258,13 @@ void infinity_base::get_figure_identifier(u8 fig_num, u8 sequence, std::array<u8
|
|||
reply_buf[11] = generate_checksum(reply_buf, 11);
|
||||
}
|
||||
|
||||
bool infinity_base::has_figure_been_added_removed() const
|
||||
std::optional<std::array<u8, 32>> infinity_base::pop_added_removed_response()
|
||||
{
|
||||
return !m_figure_added_removed_responses.empty();
|
||||
}
|
||||
std::lock_guard lock(infinity_mutex);
|
||||
|
||||
if (m_figure_added_removed_responses.empty())
|
||||
return std::nullopt;
|
||||
|
||||
std::array<u8, 32> infinity_base::pop_added_removed_response()
|
||||
{
|
||||
std::array<u8, 32> response = m_figure_added_removed_responses.front();
|
||||
m_figure_added_removed_responses.pop();
|
||||
return response;
|
||||
|
|
@ -399,9 +399,10 @@ void usb_device_infinity::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoint
|
|||
{
|
||||
// Respond after FF command
|
||||
transfer->expected_time = get_timestamp() + 1000;
|
||||
if (g_infinitybase.has_figure_been_added_removed())
|
||||
std::optional<std::array<u8, 32>> response = g_infinitybase.pop_added_removed_response();
|
||||
if (response)
|
||||
{
|
||||
memcpy(buf, g_infinitybase.pop_added_removed_response().data(), 0x20);
|
||||
memcpy(buf, response.value().data(), 0x20);
|
||||
}
|
||||
else if (!m_queries.empty())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "Emu/Io/usb_device.h"
|
||||
#include "Utilities/mutex.h"
|
||||
#include <array>
|
||||
#include <optional>
|
||||
#include <queue>
|
||||
|
||||
struct infinity_figure
|
||||
|
|
@ -24,8 +25,7 @@ public:
|
|||
void query_block(u8 fig_num, u8 block, std::array<u8, 32>& reply_buf, u8 sequence);
|
||||
void write_block(u8 fig_num, u8 block, const u8* to_write_buf, std::array<u8, 32>& reply_buf, u8 sequence);
|
||||
void get_figure_identifier(u8 fig_num, u8 sequence, std::array<u8, 32>& reply_buf);
|
||||
bool has_figure_been_added_removed() const;
|
||||
std::array<u8, 32> pop_added_removed_response();
|
||||
std::optional<std::array<u8, 32>> pop_added_removed_response();
|
||||
|
||||
bool remove_figure(u8 position);
|
||||
u32 load_figure(const std::array<u8, 0x14 * 0x10>& buf, fs::file in_file, u8 position);
|
||||
|
|
|
|||
Loading…
Reference in a new issue