finish setting up palma interface calls

This commit is contained in:
Narr the Reg 2023-08-20 11:10:54 -06:00
parent c695166391
commit 4f5b1fe41f
4 changed files with 251 additions and 67 deletions

View File

@ -211,6 +211,18 @@ IHidServer::IHidServer(Core::System& system_, std::shared_ptr<ResourceManager> r
{1002, &IHidServer::SetTouchScreenConfiguration, "SetTouchScreenConfiguration"},
{1003, &IHidServer::IsFirmwareUpdateNeededForNotification, "IsFirmwareUpdateNeededForNotification"},
{2000, nullptr, "ActivateDigitizer"},
{3000, nullptr, "GetDebugPadGenericPadMap"},
{3001, nullptr, "SetDebugPadGenericPadMap"},
{3002, nullptr, "ResetDebugPadGenericPadMap"},
{3003, nullptr, "GetDebugPadKeyboardMap"},
{3004, nullptr, "SetDebugPadKeyboardMap"},
{3005, nullptr, "ResetDebugPadKeyboardMap"},
{3006, nullptr, "GetFullKeyGenericPadMap"},
{3007, nullptr, "SetFullKeyGenericPadMap"},
{3008, nullptr, "ResetFullKeyGenericPadMap"},
{3009, nullptr, "GetFullKeyKeyboardMap"},
{3010, nullptr, "SetFullKeyKeyboardMap"},
{3011, nullptr, "ResetFullKeyKeyboardMap"},
};
// clang-format on
@ -2053,7 +2065,6 @@ void IHidServer::EndPermitVibrationSession(HLERequestContext& ctx) {}
void IHidServer::IsVibrationDeviceMounted(HLERequestContext& ctx) {}
void IHidServer::SendVibrationValueInBool(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
struct Parameters {
VibrationDeviceHandle handle;
@ -2154,7 +2165,7 @@ void IHidServer::InitializePalma(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result = GetResourceManager()->GetPalma()->Initialize(connection_handle);
const auto result = GetResourceManager()->GetPalma()->Initialize(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2168,10 +2179,10 @@ void IHidServer::AcquirePalmaOperationCompleteEvent(HLERequestContext& ctx) {
Kernel::KReadableEvent* out_event = nullptr;
const auto result = GetResourceManager()->GetPalma()->AcquirePalmaOperationCompleteEvent(
connection_handle, &out_event);
connection_handle.npad_id, &out_event);
IPC::ResponseBuilder rb{ctx, 2, 1};
rb.Push(ResultSuccess);
rb.Push(result);
rb.PushCopyObjects(out_event);
}
@ -2183,18 +2194,16 @@ void IHidServer::GetPalmaOperationInfo(HLERequestContext& ctx) {
PalmaOperationType operation_type{};
PalmaOperationData data{};
const auto result = GetResourceManager()->GetPalma()->GetPalmaOperationInfo(
connection_handle, operation_type, data);
const Result result = GetResourceManager()->GetPalma()->GetPalmaOperationInfo(
connection_handle.npad_id, operation_type, data);
if (result.IsError()) {
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
if (result.IsSuccess()) {
ctx.WriteBuffer(data);
}
ctx.WriteBuffer(data);
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(result);
rb.Push(static_cast<u64>(operation_type));
rb.PushEnum(operation_type);
}
void IHidServer::PlayPalmaActivity(HLERequestContext& ctx) {
@ -2205,8 +2214,8 @@ void IHidServer::PlayPalmaActivity(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, palma_activity={}",
connection_handle.npad_id, palma_activity);
const auto result =
GetResourceManager()->GetPalma()->PlayPalmaActivity(connection_handle, palma_activity);
const auto result = GetResourceManager()->GetPalma()->PlayPalmaActivity(
connection_handle.npad_id, palma_activity);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2221,7 +2230,7 @@ void IHidServer::SetPalmaFrModeType(HLERequestContext& ctx) {
connection_handle.npad_id, fr_mode);
const auto result =
GetResourceManager()->GetPalma()->SetPalmaFrModeType(connection_handle, fr_mode);
GetResourceManager()->GetPalma()->SetPalmaFrModeType(connection_handle.npad_id, fr_mode);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2233,7 +2242,7 @@ void IHidServer::ReadPalmaStep(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result = GetResourceManager()->GetPalma()->ReadPalmaStep(connection_handle);
const auto result = GetResourceManager()->GetPalma()->ReadPalmaStep(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2254,7 +2263,7 @@ void IHidServer::EnablePalmaStep(HLERequestContext& ctx) {
parameters.connection_handle.npad_id, parameters.is_enabled);
const auto result = GetResourceManager()->GetPalma()->EnablePalmaStep(
parameters.connection_handle, parameters.is_enabled);
parameters.connection_handle.npad_id, parameters.is_enabled);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2266,15 +2275,44 @@ void IHidServer::ResetPalmaStep(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result = GetResourceManager()->GetPalma()->ResetPalmaStep(connection_handle);
const auto result = GetResourceManager()->GetPalma()->ResetPalmaStep(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
void IHidServer::ReadPalmaApplicationSection(HLERequestContext& ctx) {}
void IHidServer::ReadPalmaApplicationSection(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
const auto starting_index{rp.PopRaw<u64>()};
const auto size{rp.PopRaw<u64>()};
void IHidServer::WritePalmaApplicationSection(HLERequestContext& ctx) {}
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, starting_index={}, size={}",
connection_handle.npad_id, starting_index, size);
const auto result = GetResourceManager()->GetPalma()->ReadPalmaApplicationSection(
connection_handle.npad_id, starting_index, size);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
void IHidServer::WritePalmaApplicationSection(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
const auto starting_index{rp.PopRaw<u64>()};
const auto size{rp.PopRaw<u64>()};
const auto buffer = ctx.ReadBuffer();
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, starting_index={}, size={}",
connection_handle.npad_id, starting_index, size);
const auto result = GetResourceManager()->GetPalma()->WritePalmaApplicationSection(
connection_handle.npad_id, starting_index, size, buffer);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
void IHidServer::ReadPalmaUniqueCode(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
@ -2282,7 +2320,8 @@ void IHidServer::ReadPalmaUniqueCode(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result = GetResourceManager()->GetPalma()->ReadPalmaUniqueCode(connection_handle);
const auto result =
GetResourceManager()->GetPalma()->ReadPalmaUniqueCode(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@ -2295,29 +2334,45 @@ void IHidServer::SetPalmaUniqueCodeInvalid(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result =
GetResourceManager()->GetPalma()->SetPalmaUniqueCodeInvalid(connection_handle);
GetResourceManager()->GetPalma()->SetPalmaUniqueCodeInvalid(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
void IHidServer::WritePalmaActivityEntry(HLERequestContext& ctx) {}
void IHidServer::WritePalmaActivityEntry(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
const auto a{rp.PopRaw<u64>()};
const auto b{rp.PopRaw<u64>()};
const auto c{rp.PopRaw<u64>()};
const auto d{rp.PopRaw<u64>()};
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, a={}, b={}, c={}, d={}",
connection_handle.npad_id, a, b, c, d);
const auto result = GetResourceManager()->GetPalma()->WritePalmaActivityEntry(
connection_handle.npad_id, a, b, c, d);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
void IHidServer::WritePalmaRgbLedPatternEntry(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
const auto unknown{rp.Pop<u64>()};
const auto pattern_type{rp.Pop<u64>()};
[[maybe_unused]] const auto buffer = ctx.ReadBuffer();
const auto buffer = ctx.ReadBuffer();
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, unknown={}",
connection_handle.npad_id, unknown);
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, pattern_type={}",
connection_handle.npad_id, pattern_type);
const auto result =
GetResourceManager()->GetPalma()->WritePalmaRgbLedPatternEntry(connection_handle, unknown);
const auto result = GetResourceManager()->GetPalma()->WritePalmaRgbLedPatternEntry(
connection_handle.npad_id, pattern_type, buffer);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::WritePalmaWaveEntry(HLERequestContext& ctx) {
@ -2349,10 +2404,10 @@ void IHidServer::WritePalmaWaveEntry(HLERequestContext& ctx) {
connection_handle.npad_id, wave_set, unknown, t_mem_handle, t_mem_size, size);
const auto result = GetResourceManager()->GetPalma()->WritePalmaWaveEntry(
connection_handle, wave_set, t_mem->GetSourceAddress(), t_mem_size);
connection_handle.npad_id, wave_set, t_mem->GetSourceAddress(), t_mem_size);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::SetPalmaDataBaseIdentificationVersion(HLERequestContext& ctx) {
@ -2370,7 +2425,7 @@ void IHidServer::SetPalmaDataBaseIdentificationVersion(HLERequestContext& ctx) {
parameters.connection_handle.npad_id, parameters.database_id_version);
const auto result = GetResourceManager()->GetPalma()->SetPalmaDataBaseIdentificationVersion(
parameters.connection_handle, parameters.database_id_version);
parameters.connection_handle.npad_id, parameters.database_id_version);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
@ -2382,18 +2437,32 @@ void IHidServer::GetPalmaDataBaseIdentificationVersion(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result =
GetResourceManager()->GetPalma()->GetPalmaDataBaseIdentificationVersion(connection_handle);
const auto result = GetResourceManager()->GetPalma()->GetPalmaDataBaseIdentificationVersion(
connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::SuspendPalmaFeature(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
struct Parameters {
s32 palma_feature;
INSERT_PADDING_WORDS_NOINIT(1);
PalmaConnectionHandle connection_handle;
};
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, database_id_version={}",
parameters.connection_handle.npad_id, parameters.palma_feature);
const auto result = GetResourceManager()->GetPalma()->SuspendPalmaFeature(
parameters.connection_handle.npad_id, parameters.palma_feature);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::GetPalmaOperationResult(HLERequestContext& ctx) {
@ -2402,25 +2471,53 @@ void IHidServer::GetPalmaOperationResult(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result = applet_resource->GetController<Controller_Palma>(HidController::Palma)
.GetPalmaOperationResult(connection_handle);
const auto result =
GetResourceManager()->GetPalma()->GetPalmaOperationResult(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(result);
}
void IHidServer::ReadPalmaPlayLog(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
struct Parameters {
u16 entries;
INSERT_PADDING_BYTES_NOINIT(6);
PalmaConnectionHandle connection_handle;
};
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, entries={}",
parameters.connection_handle.npad_id, parameters.entries);
const auto result = GetResourceManager()->GetPalma()->ReadPalmaPlayLog(
parameters.connection_handle.npad_id, parameters.entries);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::ResetPalmaPlayLog(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
struct Parameters {
u32 entries;
INSERT_PADDING_BYTES_NOINIT(4);
PalmaConnectionHandle connection_handle;
};
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}, entries={}",
parameters.connection_handle.npad_id, parameters.entries);
const auto result = GetResourceManager()->GetPalma()->ResetPalmaPlayLog(
parameters.connection_handle.npad_id, parameters.entries);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::SetIsPalmaAllConnectable(HLERequestContext& ctx) {
@ -2438,15 +2535,30 @@ void IHidServer::SetIsPalmaAllConnectable(HLERequestContext& ctx) {
"(STUBBED) called, is_palma_all_connectable={},applet_resource_user_id={}",
parameters.is_palma_all_connectable, parameters.applet_resource_user_id);
applet_resource->GetController<Controller_Palma>(HidController::Palma)
.SetIsPalmaAllConnectable(parameters.is_palma_all_connectable);
GetResourceManager()->GetPalma()->SetIsPalmaAllConnectable(parameters.applet_resource_user_id,
parameters.is_palma_all_connectable);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
void IHidServer::SetIsPalmaPairedConnectable(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
struct Parameters {
bool is_palma_paired_connectable;
INSERT_PADDING_BYTES_NOINIT(7);
u64 applet_resource_user_id;
};
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(Service_HID,
"(STUBBED) called, is_palma_paired_connectable={},applet_resource_user_id={}",
parameters.is_palma_paired_connectable, parameters.applet_resource_user_id);
GetResourceManager()->GetPalma()->SetIsPalmaPairedConnectable(
parameters.applet_resource_user_id, parameters.is_palma_paired_connectable);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
@ -2458,49 +2570,83 @@ void IHidServer::PairPalma(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
applet_resource->GetController<Controller_Palma>(HidController::Palma)
.PairPalma(connection_handle);
const auto result = GetResourceManager()->GetPalma()->PairPalma(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::SetPalmaBoostMode(HLERequestContext& ctx) {
IPC::RequestParser rp{ctx};
const auto palma_boost_mode{rp.Pop<bool>()};
LOG_WARNING(Service_HID, "(STUBBED) called, palma_boost_mode={}", palma_boost_mode);
LOG_INFO(Service_HID, "called, palma_boost_mode={}", palma_boost_mode);
applet_resource->GetController<Controller_Palma>(HidController::Palma)
.SetPalmaBoostMode(palma_boost_mode);
// This no longer does anything. Use EnablePalmaBoostMode instead
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
void IHidServer::CancelWritePalmaWaveEntry(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
const auto result =
GetResourceManager()->GetPalma()->CancelWritePalmaWaveEntry(connection_handle.npad_id);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
rb.Push(result);
}
void IHidServer::EnablePalmaBoostMode(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
struct Parameters {
bool is_enabled;
INSERT_PADDING_BYTES_NOINIT(7);
u64 applet_resource_user_id;
};
static_assert(sizeof(Parameters) == 0x10, "Parameters has incorrect size.");
const auto parameters{rp.PopRaw<Parameters>()};
LOG_WARNING(Service_HID, "(STUBBED) called, is_enabled={},applet_resource_user_id={}",
parameters.is_enabled, parameters.applet_resource_user_id);
GetResourceManager()->GetPalma()->EnablePalmaBoostMode(parameters.applet_resource_user_id,
parameters.is_enabled);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
}
void IHidServer::GetPalmaBluetoothAddress(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
const auto connection_handle{rp.PopRaw<PalmaConnectionHandle>()};
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);
LOG_WARNING(Service_HID, "(STUBBED) called, connection_handle={}", connection_handle.npad_id);
std::array<u8, 6> address{};
const auto result = GetResourceManager()->GetPalma()->GetPalmaBluetoothAddress(
connection_handle.npad_id, address);
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(result);
rb.PushRaw(address);
}
void IHidServer::SetDisallowedPalmaConnection(HLERequestContext& ctx) {
LOG_WARNING(Service_HID, "(STUBBED) called");
IPC::RequestParser rp{ctx};
const auto applet_resource_user_id{rp.PopRaw<u64>()};
const auto address_buffer = ctx.ReadBuffer();
LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}",
applet_resource_user_id);
GetResourceManager()->GetPalma()->SetDisallowedPalmaConnection(applet_resource_user_id,
address_buffer);
IPC::ResponseBuilder rb{ctx, 2};
rb.Push(ResultSuccess);

View File

@ -877,9 +877,8 @@ struct MouseState {
};
static_assert(sizeof(MouseState) == 0x28, "MouseState is an invalid size");
// This is nn::hid::PalmaOperationType
enum class PalmaOperationType {
// This is nn::hid::PalmaOperationType
enum class PalmaOperationType : u32 {
PlayActivity,
SetFrModeType,
ReadStep,
@ -923,7 +922,8 @@ enum class PalmaFeature : u64 {
MuteSwitch,
};
using PalmaOperationData = std::array<u8, 0x140>;
using PalmaOperationData = std::array<u8, 0x140>;
// This is nn::hid::PalmaOperationInfo
struct PalmaOperationInfo {
PalmaOperationType operation{};

View File

@ -21,8 +21,7 @@ Result Palma::Activate() {
return ResultSuccess;
}
Result Palma::EnablePalmaBoostMode(const u64 aruid, const bool is_enabled) {
return ResultSuccess;
void Palma::EnablePalmaBoostMode(const u64 aruid, const bool is_enabled) {
}
} // namespace Service::HID

View File

@ -11,6 +11,10 @@ namespace Core {
class System;
}
namespace Kernel {
class KReadableEvent;
}
namespace Service::HID {} // namespace Service::HID
namespace Service::HID {
@ -23,8 +27,43 @@ public:
Result Activate(const u64 aruid);
Result Activate();
Result EnablePalmaBoostMode(const u64 aruid, const bool is_enabled);
Result GetPalmaConnectionHandle(PalmaConnectionHandle& out_handle,const u64 aruid) const;
Result Initialize(const NpadIdType handle);
Result GetPalmaConnectionHandle(PalmaConnectionHandle& out_handle, const u64 aruid) const;
Result AcquirePalmaOperationCompleteEvent(const NpadIdType handle,
Kernel::KReadableEvent** out_event) const;
Result GetPalmaOperationInfo(const NpadIdType handle, PalmaOperationType& out_type,
PalmaOperationData& out_data) const;
Result PlayPalmaActivity(const NpadIdType handle, const u32 activity) const;
Result SetPalmaFrModeType(const NpadIdType handle, const PalmaFrModeType type) const;
Result ReadPalmaStep(const NpadIdType handle) const;
Result EnablePalmaStep(const NpadIdType handle, const bool is_enabled) const;
Result ResetPalmaStep(const NpadIdType handle) const;
Result ReadPalmaApplicationSection(const NpadIdType handle, const u32 starting_index,
u32 size) const;
Result WritePalmaApplicationSection(const NpadIdType handle, const u32 starting_index, u32 size,
std::span<const u8> buffer) const;
Result ReadPalmaUniqueCode(const NpadIdType handle) const;
Result SetPalmaUniqueCodeInvalid(const NpadIdType handle) const;
Result WritePalmaActivityEntry(const NpadIdType handle, const u64 a, const u64 b, const u64 c,
const u64 d) const;
Result WritePalmaRgbLedPatternEntry(const NpadIdType handle, const u16 pattern_type,
std::span<const u8> buffer) const;
Result WritePalmaWaveEntry(const NpadIdType handle, const PalmaWaveSet wave_set,
const Common::ProcessAddress t_mem, const std::size_t size) const;
Result SetPalmaDataBaseIdentificationVersion(const NpadIdType handle, const s32 version) const;
Result GetPalmaDataBaseIdentificationVersion(const NpadIdType handle) const;
Result SuspendPalmaFeature(const NpadIdType handle, const s32 feature) const;
Result GetPalmaOperationResult(const NpadIdType handle) const;
Result ReadPalmaPlayLog(const NpadIdType handle, const u32 entries) const;
Result ResetPalmaPlayLog(const NpadIdType handle, const u32 entries) const;
void SetIsPalmaAllConnectable(const u64 aruid, const bool is_connectable) const;
void SetIsPalmaPairedConnectable(const u64 aruid, const bool is_connectable) const;
Result PairPalma(const NpadIdType handle) const;
Result CancelWritePalmaWaveEntry(const NpadIdType handle) const;
void EnablePalmaBoostMode(const u64 aruid, const bool is_enabled);
Result GetPalmaBluetoothAddress(const NpadIdType handle, std::span<u8> out_address) const;
void SetDisallowedPalmaConnection(const u64 aruid, std::span<const u8> address) const;
private:
bool is_activated;