sys_usbd: Small tidyups

This commit is contained in:
Joshua de Reeper 2025-11-06 14:01:13 +01:00 committed by Elad
parent 8a9b15dee3
commit b435deac9d
4 changed files with 10 additions and 14 deletions

View file

@ -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;
}

View file

@ -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;
};

View file

@ -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())
{

View file

@ -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);