hidbus: Use ReadBufferSpan

This commit is contained in:
ameerj 2022-12-25 14:00:20 -05:00
parent 32d01a39b0
commit e7032d9e64
11 changed files with 16 additions and 12 deletions

View File

@ -737,11 +737,12 @@ Core::HID::NpadStyleTag Controller_NPad::GetSupportedStyleSet() const {
return hid_core.GetSupportedStyleTag(); return hid_core.GetSupportedStyleTag();
} }
void Controller_NPad::SetSupportedNpadIdTypes(const u8* const data, std::size_t length) { void Controller_NPad::SetSupportedNpadIdTypes(std::span<const u8> data) {
const auto length = data.size();
ASSERT(length > 0 && (length % sizeof(u32)) == 0); ASSERT(length > 0 && (length % sizeof(u32)) == 0);
supported_npad_id_types.clear(); supported_npad_id_types.clear();
supported_npad_id_types.resize(length / sizeof(u32)); supported_npad_id_types.resize(length / sizeof(u32));
std::memcpy(supported_npad_id_types.data(), data, length); std::memcpy(supported_npad_id_types.data(), data.data(), length);
} }
void Controller_NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length) { void Controller_NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length) {

View File

@ -6,6 +6,7 @@
#include <array> #include <array>
#include <atomic> #include <atomic>
#include <mutex> #include <mutex>
#include <span>
#include "common/bit_field.h" #include "common/bit_field.h"
#include "common/common_types.h" #include "common/common_types.h"
@ -95,7 +96,7 @@ public:
void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set); void SetSupportedStyleSet(Core::HID::NpadStyleTag style_set);
Core::HID::NpadStyleTag GetSupportedStyleSet() const; Core::HID::NpadStyleTag GetSupportedStyleSet() const;
void SetSupportedNpadIdTypes(const u8* const data, std::size_t length); void SetSupportedNpadIdTypes(std::span<const u8> data);
void GetSupportedNpadIdTypes(u32* data, std::size_t max_length); void GetSupportedNpadIdTypes(u32* data, std::size_t max_length);
std::size_t GetSupportedNpadIdTypesSize() const; std::size_t GetSupportedNpadIdTypesSize() const;

View File

@ -1026,7 +1026,7 @@ void Hid::SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) {
const auto applet_resource_user_id{rp.Pop<u64>()}; const auto applet_resource_user_id{rp.Pop<u64>()};
applet_resource->GetController<Controller_NPad>(HidController::NPad) applet_resource->GetController<Controller_NPad>(HidController::NPad)
.SetSupportedNpadIdTypes(ctx.ReadBufferSpan().data(), ctx.GetReadBufferSize()); .SetSupportedNpadIdTypes(ctx.ReadBufferSpan());
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);

View File

@ -351,7 +351,7 @@ void HidBus::GetExternalDeviceId(Kernel::HLERequestContext& ctx) {
void HidBus::SendCommandAsync(Kernel::HLERequestContext& ctx) { void HidBus::SendCommandAsync(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
const auto data = ctx.ReadBuffer(); const auto data = ctx.ReadBufferSpan();
const auto bus_handle_{rp.PopRaw<BusHandle>()}; const auto bus_handle_{rp.PopRaw<BusHandle>()};
LOG_DEBUG(Service_HID, LOG_DEBUG(Service_HID,

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#include <array> #include <array>
#include <span>
#include "common/common_types.h" #include "common/common_types.h"
#include "core/hle/result.h" #include "core/hle/result.h"
@ -150,7 +151,7 @@ public:
} }
// Assigns a command from data // Assigns a command from data
virtual bool SetCommand(const std::vector<u8>& data) { virtual bool SetCommand(std::span<const u8> data) {
return {}; return {};
} }

View File

@ -112,7 +112,7 @@ std::vector<u8> RingController::GetReply() const {
} }
} }
bool RingController::SetCommand(const std::vector<u8>& data) { bool RingController::SetCommand(std::span<const u8> data) {
if (data.size() < 4) { if (data.size() < 4) {
LOG_ERROR(Service_HID, "Command size not supported {}", data.size()); LOG_ERROR(Service_HID, "Command size not supported {}", data.size());
command = RingConCommands::Error; command = RingConCommands::Error;

View File

@ -4,6 +4,7 @@
#pragma once #pragma once
#include <array> #include <array>
#include <span>
#include "common/common_types.h" #include "common/common_types.h"
#include "core/hle/service/hid/hidbus/hidbus_base.h" #include "core/hle/service/hid/hidbus/hidbus_base.h"
@ -31,7 +32,7 @@ public:
u8 GetDeviceId() const override; u8 GetDeviceId() const override;
// Assigns a command from data // Assigns a command from data
bool SetCommand(const std::vector<u8>& data) override; bool SetCommand(std::span<const u8> data) override;
// Returns a reply from a command // Returns a reply from a command
std::vector<u8> GetReply() const override; std::vector<u8> GetReply() const override;

View File

@ -42,7 +42,7 @@ std::vector<u8> Starlink::GetReply() const {
return {}; return {};
} }
bool Starlink::SetCommand(const std::vector<u8>& data) { bool Starlink::SetCommand(std::span<const u8> data) {
LOG_ERROR(Service_HID, "Command not implemented"); LOG_ERROR(Service_HID, "Command not implemented");
return false; return false;
} }

View File

@ -29,7 +29,7 @@ public:
u8 GetDeviceId() const override; u8 GetDeviceId() const override;
// Assigns a command from data // Assigns a command from data
bool SetCommand(const std::vector<u8>& data) override; bool SetCommand(std::span<const u8> data) override;
// Returns a reply from a command // Returns a reply from a command
std::vector<u8> GetReply() const override; std::vector<u8> GetReply() const override;

View File

@ -43,7 +43,7 @@ std::vector<u8> HidbusStubbed::GetReply() const {
return {}; return {};
} }
bool HidbusStubbed::SetCommand(const std::vector<u8>& data) { bool HidbusStubbed::SetCommand(std::span<const u8> data) {
LOG_ERROR(Service_HID, "Command not implemented"); LOG_ERROR(Service_HID, "Command not implemented");
return false; return false;
} }

View File

@ -29,7 +29,7 @@ public:
u8 GetDeviceId() const override; u8 GetDeviceId() const override;
// Assigns a command from data // Assigns a command from data
bool SetCommand(const std::vector<u8>& data) override; bool SetCommand(std::span<const u8> data) override;
// Returns a reply from a command // Returns a reply from a command
std::vector<u8> GetReply() const override; std::vector<u8> GetReply() const override;