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);
|
std::lock_guard lock(m_dimensions_mutex);
|
||||||
|
|
||||||
if (m_figure_added_removed_responses.empty())
|
if (m_figure_added_removed_responses.empty())
|
||||||
{
|
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
|
||||||
|
|
||||||
std::array<u8, 32> response = m_figure_added_removed_responses.front();
|
std::array<u8, 32> response = m_figure_added_removed_responses.front();
|
||||||
m_figure_added_removed_responses.pop();
|
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
|
// 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.
|
// 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();
|
std::optional<std::array<u8, 32>> response = g_dimensionstoypad.pop_added_removed_response();
|
||||||
if (response)
|
if (response)
|
||||||
{
|
{
|
||||||
|
|
@ -696,7 +693,6 @@ void usb_device_dimensions::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoi
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::lock_guard lock(m_query_mutex);
|
|
||||||
m_queries.push(q_result);
|
m_queries.push(q_result);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,6 +79,5 @@ public:
|
||||||
void isochronous_transfer(UsbTransfer* transfer) override;
|
void isochronous_transfer(UsbTransfer* transfer) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
shared_mutex m_query_mutex;
|
|
||||||
std::queue<std::array<u8, 32>> m_queries;
|
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);
|
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();
|
std::array<u8, 32> response = m_figure_added_removed_responses.front();
|
||||||
m_figure_added_removed_responses.pop();
|
m_figure_added_removed_responses.pop();
|
||||||
return response;
|
return response;
|
||||||
|
|
@ -399,9 +399,10 @@ void usb_device_infinity::interrupt_transfer(u32 buf_size, u8* buf, u32 endpoint
|
||||||
{
|
{
|
||||||
// Respond after FF command
|
// Respond after FF command
|
||||||
transfer->expected_time = get_timestamp() + 1000;
|
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())
|
else if (!m_queries.empty())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
#include "Emu/Io/usb_device.h"
|
#include "Emu/Io/usb_device.h"
|
||||||
#include "Utilities/mutex.h"
|
#include "Utilities/mutex.h"
|
||||||
#include <array>
|
#include <array>
|
||||||
|
#include <optional>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
struct infinity_figure
|
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 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 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);
|
void get_figure_identifier(u8 fig_num, u8 sequence, std::array<u8, 32>& reply_buf);
|
||||||
bool has_figure_been_added_removed() const;
|
std::optional<std::array<u8, 32>> pop_added_removed_response();
|
||||||
std::array<u8, 32> pop_added_removed_response();
|
|
||||||
|
|
||||||
bool remove_figure(u8 position);
|
bool remove_figure(u8 position);
|
||||||
u32 load_figure(const std::array<u8, 0x14 * 0x10>& buf, fs::file in_file, u8 position);
|
u32 load_figure(const std::array<u8, 0x14 * 0x10>& buf, fs::file in_file, u8 position);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue