mirror of
https://git.suyu.dev/suyu/suyu
synced 2024-12-25 10:52:48 -06:00
hid: Reorder all HID commands
Reorders all HID commands in command id order.
This commit is contained in:
parent
b92bf51ae1
commit
e3c2749986
5 changed files with 266 additions and 251 deletions
|
@ -33,13 +33,13 @@ void DefaultControllerApplet::ReconfigureControllers(std::function<void()> callb
|
||||||
parameters.enable_single_mode ? 1 : parameters.min_players;
|
parameters.enable_single_mode ? 1 : parameters.min_players;
|
||||||
|
|
||||||
// Disconnect Handheld first.
|
// Disconnect Handheld first.
|
||||||
npad.DisconnectNPadAtIndex(8);
|
npad.DisconnectNpadAtIndex(8);
|
||||||
|
|
||||||
// Deduce the best configuration based on the input parameters.
|
// Deduce the best configuration based on the input parameters.
|
||||||
for (std::size_t index = 0; index < players.size() - 2; ++index) {
|
for (std::size_t index = 0; index < players.size() - 2; ++index) {
|
||||||
// First, disconnect all controllers regardless of the value of keep_controllers_connected.
|
// First, disconnect all controllers regardless of the value of keep_controllers_connected.
|
||||||
// This makes it easy to connect the desired controllers.
|
// This makes it easy to connect the desired controllers.
|
||||||
npad.DisconnectNPadAtIndex(index);
|
npad.DisconnectNpadAtIndex(index);
|
||||||
|
|
||||||
// Only connect the minimum number of required players.
|
// Only connect the minimum number of required players.
|
||||||
if (index >= min_supported_players) {
|
if (index >= min_supported_players) {
|
||||||
|
|
|
@ -139,7 +139,7 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) {
|
||||||
controller.properties.is_vertical.Assign(1);
|
controller.properties.is_vertical.Assign(1);
|
||||||
controller.properties.use_plus.Assign(1);
|
controller.properties.use_plus.Assign(1);
|
||||||
controller.properties.use_minus.Assign(1);
|
controller.properties.use_minus.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Single;
|
controller.pad_assignment = NpadAssignments::Single;
|
||||||
break;
|
break;
|
||||||
case NPadControllerType::Handheld:
|
case NPadControllerType::Handheld:
|
||||||
controller.joy_styles.handheld.Assign(1);
|
controller.joy_styles.handheld.Assign(1);
|
||||||
|
@ -147,7 +147,7 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) {
|
||||||
controller.properties.is_vertical.Assign(1);
|
controller.properties.is_vertical.Assign(1);
|
||||||
controller.properties.use_plus.Assign(1);
|
controller.properties.use_plus.Assign(1);
|
||||||
controller.properties.use_minus.Assign(1);
|
controller.properties.use_minus.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Dual;
|
controller.pad_assignment = NpadAssignments::Dual;
|
||||||
break;
|
break;
|
||||||
case NPadControllerType::JoyDual:
|
case NPadControllerType::JoyDual:
|
||||||
controller.joy_styles.joycon_dual.Assign(1);
|
controller.joy_styles.joycon_dual.Assign(1);
|
||||||
|
@ -156,26 +156,26 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) {
|
||||||
controller.properties.is_vertical.Assign(1);
|
controller.properties.is_vertical.Assign(1);
|
||||||
controller.properties.use_plus.Assign(1);
|
controller.properties.use_plus.Assign(1);
|
||||||
controller.properties.use_minus.Assign(1);
|
controller.properties.use_minus.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Dual;
|
controller.pad_assignment = NpadAssignments::Dual;
|
||||||
break;
|
break;
|
||||||
case NPadControllerType::JoyLeft:
|
case NPadControllerType::JoyLeft:
|
||||||
controller.joy_styles.joycon_left.Assign(1);
|
controller.joy_styles.joycon_left.Assign(1);
|
||||||
controller.device_type.joycon_left.Assign(1);
|
controller.device_type.joycon_left.Assign(1);
|
||||||
controller.properties.is_horizontal.Assign(1);
|
controller.properties.is_horizontal.Assign(1);
|
||||||
controller.properties.use_minus.Assign(1);
|
controller.properties.use_minus.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Single;
|
controller.pad_assignment = NpadAssignments::Single;
|
||||||
break;
|
break;
|
||||||
case NPadControllerType::JoyRight:
|
case NPadControllerType::JoyRight:
|
||||||
controller.joy_styles.joycon_right.Assign(1);
|
controller.joy_styles.joycon_right.Assign(1);
|
||||||
controller.device_type.joycon_right.Assign(1);
|
controller.device_type.joycon_right.Assign(1);
|
||||||
controller.properties.is_horizontal.Assign(1);
|
controller.properties.is_horizontal.Assign(1);
|
||||||
controller.properties.use_plus.Assign(1);
|
controller.properties.use_plus.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Single;
|
controller.pad_assignment = NpadAssignments::Single;
|
||||||
break;
|
break;
|
||||||
case NPadControllerType::Pokeball:
|
case NPadControllerType::Pokeball:
|
||||||
controller.joy_styles.pokeball.Assign(1);
|
controller.joy_styles.pokeball.Assign(1);
|
||||||
controller.device_type.pokeball.Assign(1);
|
controller.device_type.pokeball.Assign(1);
|
||||||
controller.pad_assignment = NPadAssignments::Single;
|
controller.pad_assignment = NpadAssignments::Single;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -202,7 +202,7 @@ void Controller_NPad::InitNewlyAddedController(std::size_t controller_idx) {
|
||||||
|
|
||||||
void Controller_NPad::OnInit() {
|
void Controller_NPad::OnInit() {
|
||||||
auto& kernel = system.Kernel();
|
auto& kernel = system.Kernel();
|
||||||
for (std::size_t i = 0; i < styleset_changed_events.size(); i++) {
|
for (std::size_t i = 0; i < styleset_changed_events.size(); ++i) {
|
||||||
styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair(
|
styleset_changed_events[i] = Kernel::WritableEvent::CreateEventPair(
|
||||||
kernel, fmt::format("npad:NpadStyleSetChanged_{}", i));
|
kernel, fmt::format("npad:NpadStyleSetChanged_{}", i));
|
||||||
}
|
}
|
||||||
|
@ -357,7 +357,7 @@ void Controller_NPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8*
|
||||||
if (!IsControllerActivated()) {
|
if (!IsControllerActivated()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (std::size_t i = 0; i < shared_memory_entries.size(); i++) {
|
for (std::size_t i = 0; i < shared_memory_entries.size(); ++i) {
|
||||||
auto& npad = shared_memory_entries[i];
|
auto& npad = shared_memory_entries[i];
|
||||||
const std::array<NPadGeneric*, 7> controller_npads{&npad.main_controller_states,
|
const std::array<NPadGeneric*, 7> controller_npads{&npad.main_controller_states,
|
||||||
&npad.handheld_states,
|
&npad.handheld_states,
|
||||||
|
@ -499,7 +499,7 @@ void Controller_NPad::OnMotionUpdate(const Core::Timing::CoreTiming& core_timing
|
||||||
if (!IsControllerActivated()) {
|
if (!IsControllerActivated()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (std::size_t i = 0; i < shared_memory_entries.size(); i++) {
|
for (std::size_t i = 0; i < shared_memory_entries.size(); ++i) {
|
||||||
auto& npad = shared_memory_entries[i];
|
auto& npad = shared_memory_entries[i];
|
||||||
|
|
||||||
const auto& controller_type = connected_controllers[i].type;
|
const auto& controller_type = connected_controllers[i].type;
|
||||||
|
@ -627,7 +627,7 @@ Controller_NPad::NpadStyleSet Controller_NPad::GetSupportedStyleSet() const {
|
||||||
return style;
|
return style;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) {
|
void Controller_NPad::SetSupportedNpadIdTypes(u8* data, std::size_t length) {
|
||||||
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));
|
||||||
|
@ -639,7 +639,7 @@ void Controller_NPad::GetSupportedNpadIdTypes(u32* data, std::size_t max_length)
|
||||||
std::memcpy(data, supported_npad_id_types.data(), supported_npad_id_types.size());
|
std::memcpy(data, supported_npad_id_types.data(), supported_npad_id_types.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::size_t Controller_NPad::GetSupportedNPadIdTypesSize() const {
|
std::size_t Controller_NPad::GetSupportedNpadIdTypesSize() const {
|
||||||
return supported_npad_id_types.size();
|
return supported_npad_id_types.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,7 +659,7 @@ Controller_NPad::NpadHandheldActivationMode Controller_NPad::GetNpadHandheldActi
|
||||||
return handheld_activation_mode;
|
return handheld_activation_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode) {
|
void Controller_NPad::SetNpadMode(u32 npad_id, NpadAssignments assignment_mode) {
|
||||||
const std::size_t npad_index = NPadIdToIndex(npad_id);
|
const std::size_t npad_index = NPadIdToIndex(npad_id);
|
||||||
ASSERT(npad_index < shared_memory_entries.size());
|
ASSERT(npad_index < shared_memory_entries.size());
|
||||||
if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) {
|
if (shared_memory_entries[npad_index].pad_assignment != assignment_mode) {
|
||||||
|
@ -714,7 +714,7 @@ void Controller_NPad::AddNewControllerAt(NPadControllerType controller, std::siz
|
||||||
void Controller_NPad::UpdateControllerAt(NPadControllerType controller, std::size_t npad_index,
|
void Controller_NPad::UpdateControllerAt(NPadControllerType controller, std::size_t npad_index,
|
||||||
bool connected) {
|
bool connected) {
|
||||||
if (!connected) {
|
if (!connected) {
|
||||||
DisconnectNPadAtIndex(npad_index);
|
DisconnectNpadAtIndex(npad_index);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -734,11 +734,11 @@ void Controller_NPad::UpdateControllerAt(NPadControllerType controller, std::siz
|
||||||
InitNewlyAddedController(npad_index);
|
InitNewlyAddedController(npad_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller_NPad::DisconnectNPad(u32 npad_id) {
|
void Controller_NPad::DisconnectNpad(u32 npad_id) {
|
||||||
DisconnectNPadAtIndex(NPadIdToIndex(npad_id));
|
DisconnectNpadAtIndex(NPadIdToIndex(npad_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Controller_NPad::DisconnectNPadAtIndex(std::size_t npad_index) {
|
void Controller_NPad::DisconnectNpadAtIndex(std::size_t npad_index) {
|
||||||
Settings::values.players.GetValue()[npad_index].connected = false;
|
Settings::values.players.GetValue()[npad_index].connected = false;
|
||||||
connected_controllers[npad_index].is_connected = false;
|
connected_controllers[npad_index].is_connected = false;
|
||||||
|
|
||||||
|
@ -777,7 +777,7 @@ void Controller_NPad::MergeSingleJoyAsDualJoy(u32 npad_id_1, u32 npad_id_2) {
|
||||||
(connected_controllers[npad_index_2].type == NPadControllerType::JoyLeft &&
|
(connected_controllers[npad_index_2].type == NPadControllerType::JoyLeft &&
|
||||||
connected_controllers[npad_index_1].type == NPadControllerType::JoyRight)) {
|
connected_controllers[npad_index_1].type == NPadControllerType::JoyRight)) {
|
||||||
// Disconnect the joycon at the second id and connect the dual joycon at the first index.
|
// Disconnect the joycon at the second id and connect the dual joycon at the first index.
|
||||||
DisconnectNPad(npad_id_2);
|
DisconnectNpad(npad_id_2);
|
||||||
AddNewControllerAt(NPadControllerType::JoyDual, npad_index_1);
|
AddNewControllerAt(NPadControllerType::JoyDual, npad_index_1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,7 @@ public:
|
||||||
Horizontal = 1,
|
Horizontal = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class NPadAssignments : u32 {
|
enum class NpadAssignments : u32 {
|
||||||
Dual = 0,
|
Dual = 0,
|
||||||
Single = 1,
|
Single = 1,
|
||||||
};
|
};
|
||||||
|
@ -136,9 +136,9 @@ public:
|
||||||
void SetSupportedStyleSet(NpadStyleSet style_set);
|
void SetSupportedStyleSet(NpadStyleSet style_set);
|
||||||
NpadStyleSet GetSupportedStyleSet() const;
|
NpadStyleSet GetSupportedStyleSet() const;
|
||||||
|
|
||||||
void SetSupportedNPadIdTypes(u8* data, std::size_t length);
|
void SetSupportedNpadIdTypes(u8* data, std::size_t length);
|
||||||
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;
|
||||||
|
|
||||||
void SetHoldType(NpadHoldType joy_hold_type);
|
void SetHoldType(NpadHoldType joy_hold_type);
|
||||||
NpadHoldType GetHoldType() const;
|
NpadHoldType GetHoldType() const;
|
||||||
|
@ -146,7 +146,7 @@ public:
|
||||||
void SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode);
|
void SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode);
|
||||||
NpadHandheldActivationMode GetNpadHandheldActivationMode() const;
|
NpadHandheldActivationMode GetNpadHandheldActivationMode() const;
|
||||||
|
|
||||||
void SetNpadMode(u32 npad_id, NPadAssignments assignment_mode);
|
void SetNpadMode(u32 npad_id, NpadAssignments assignment_mode);
|
||||||
|
|
||||||
void VibrateController(const std::vector<u32>& controllers,
|
void VibrateController(const std::vector<u32>& controllers,
|
||||||
const std::vector<Vibration>& vibrations);
|
const std::vector<Vibration>& vibrations);
|
||||||
|
@ -161,8 +161,8 @@ public:
|
||||||
// Adds a new controller at an index with connection status.
|
// Adds a new controller at an index with connection status.
|
||||||
void UpdateControllerAt(NPadControllerType controller, std::size_t npad_index, bool connected);
|
void UpdateControllerAt(NPadControllerType controller, std::size_t npad_index, bool connected);
|
||||||
|
|
||||||
void DisconnectNPad(u32 npad_id);
|
void DisconnectNpad(u32 npad_id);
|
||||||
void DisconnectNPadAtIndex(std::size_t index);
|
void DisconnectNpadAtIndex(std::size_t index);
|
||||||
|
|
||||||
void SetGyroscopeZeroDriftMode(GyroscopeZeroDriftMode drift_mode);
|
void SetGyroscopeZeroDriftMode(GyroscopeZeroDriftMode drift_mode);
|
||||||
GyroscopeZeroDriftMode GetGyroscopeZeroDriftMode() const;
|
GyroscopeZeroDriftMode GetGyroscopeZeroDriftMode() const;
|
||||||
|
@ -348,7 +348,7 @@ private:
|
||||||
|
|
||||||
struct NPadEntry {
|
struct NPadEntry {
|
||||||
NpadStyleSet joy_styles;
|
NpadStyleSet joy_styles;
|
||||||
NPadAssignments pad_assignment;
|
NpadAssignments pad_assignment;
|
||||||
|
|
||||||
ColorReadError single_color_error;
|
ColorReadError single_color_error;
|
||||||
ControllerColor single_color;
|
ControllerColor single_color;
|
||||||
|
|
|
@ -328,15 +328,74 @@ void Hid::CreateAppletResource(Kernel::HLERequestContext& ctx) {
|
||||||
rb.PushIpcInterface<IAppletResource>(applet_resource);
|
rb.PushIpcInterface<IAppletResource>(applet_resource);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateDebugPad(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::DebugPad);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateTouchScreen(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::Touchscreen);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateMouse(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::Mouse);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateKeyboard(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::Keyboard);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::SendKeyboardLockKeyEvent(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto flags{rp.Pop<u32>()};
|
||||||
|
|
||||||
|
LOG_WARNING(Service_HID, "(STUBBED) called. flags={}", flags);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
void Hid::ActivateXpad(Kernel::HLERequestContext& ctx) {
|
void Hid::ActivateXpad(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto basic_xpad_id{rp.Pop<u32>()};
|
const auto basic_xpad_id{rp.Pop<u32>()};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::XPad);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, basic_xpad_id={}, applet_resource_user_id={}", basic_xpad_id,
|
LOG_DEBUG(Service_HID, "called, basic_xpad_id={}, applet_resource_user_id={}", basic_xpad_id,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::XPad);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -356,7 +415,9 @@ void Hid::ActivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto handle{rp.Pop<u32>()};
|
const auto handle{rp.Pop<u32>()};
|
||||||
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).SetSixAxisEnabled(true);
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetSixAxisEnabled(true);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
|
@ -368,6 +429,7 @@ void Hid::DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto handle{rp.Pop<u32>()};
|
const auto handle{rp.Pop<u32>()};
|
||||||
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).SetSixAxisEnabled(false);
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetSixAxisEnabled(false);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
LOG_DEBUG(Service_HID, "called, handle={}, applet_resource_user_id={}", handle,
|
||||||
|
@ -377,86 +439,6 @@ void Hid::DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::ActivateDebugPad(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::DebugPad);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::ActivateTouchScreen(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::Touchscreen);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::ActivateMouse(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::Mouse);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::ActivateKeyboard(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::Keyboard);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::SendKeyboardLockKeyEvent(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto flags{rp.Pop<u32>()};
|
|
||||||
LOG_WARNING(Service_HID, "(STUBBED) called. flags={}", flags);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto unknown{rp.Pop<u32>()};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, unknown={}, applet_resource_user_id={}", unknown,
|
|
||||||
applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::Gesture);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::ActivateNpadWithRevision(Kernel::HLERequestContext& ctx) {
|
|
||||||
// Should have no effect with how our npad sets up the data
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto unknown{rp.Pop<u32>()};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, unknown={}, applet_resource_user_id={}", unknown,
|
|
||||||
applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->ActivateController(HidController::NPad);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::StartSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
void Hid::StartSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto handle{rp.Pop<u32>()};
|
const auto handle{rp.Pop<u32>()};
|
||||||
|
@ -487,8 +469,8 @@ void Hid::EnableSixAxisSensorFusion(Kernel::HLERequestContext& ctx) {
|
||||||
const auto handle{rp.Pop<u32>()};
|
const auto handle{rp.Pop<u32>()};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
LOG_WARNING(Service_HID, "(STUBBED) called, handle={}, applet_resource_user_id={}", handle,
|
LOG_WARNING(Service_HID, "(STUBBED) called, handle={}, applet_resource_user_id={}", enable,
|
||||||
applet_resource_user_id);
|
handle, applet_resource_user_id);
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
@ -501,7 +483,7 @@ void Hid::SetGyroscopeZeroDriftMode(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)
|
||||||
.SetGyroscopeZeroDriftMode(Controller_NPad::GyroscopeZeroDriftMode{drift_mode});
|
.SetGyroscopeZeroDriftMode({drift_mode});
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, handle={}, drift_mode={}, applet_resource_user_id={}", handle,
|
LOG_DEBUG(Service_HID, "called, handle={}, drift_mode={}, applet_resource_user_id={}", handle,
|
||||||
drift_mode, applet_resource_user_id);
|
drift_mode, applet_resource_user_id);
|
||||||
|
@ -520,9 +502,8 @@ void Hid::GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder rb{ctx, 3};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u32>(
|
rb.PushEnum(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
static_cast<u32>(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
.GetGyroscopeZeroDriftMode());
|
||||||
.GetGyroscopeZeroDriftMode()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
void Hid::ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -554,15 +535,29 @@ void Hid::IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx) {
|
||||||
.IsSixAxisSensorAtRest());
|
.IsSixAxisSensorAtRest());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateGesture(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto unknown{rp.Pop<u32>()};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::Gesture);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, unknown={}, applet_resource_user_id={}", unknown,
|
||||||
|
applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
void Hid::SetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx) {
|
void Hid::SetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto supported_styleset{rp.Pop<u32>()};
|
const auto supported_styleset{rp.Pop<u32>()};
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, supported_styleset={}", supported_styleset);
|
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
.SetSupportedStyleSet({supported_styleset});
|
.SetSupportedStyleSet({supported_styleset});
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, supported_styleset={}", supported_styleset);
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -573,21 +568,22 @@ void Hid::GetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder rb{ctx, 3};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u32>(controller.GetSupportedStyleSet().raw);
|
rb.Push(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.GetSupportedStyleSet()
|
||||||
|
.raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) {
|
void Hid::SetSupportedNpadIdType(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{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)
|
||||||
|
.SetSupportedNpadIdTypes(ctx.ReadBuffer().data(), ctx.GetReadBufferSize());
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
||||||
.SetSupportedNPadIdTypes(ctx.ReadBuffer().data(), ctx.GetReadBufferSize());
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -596,22 +592,24 @@ void Hid::ActivateNpad(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::NPad);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
applet_resource->ActivateController(HidController::NPad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::DeactivateNpad(Kernel::HLERequestContext& ctx) {
|
void Hid::DeactivateNpad(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->DeactivateController(HidController::NPad);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
applet_resource->DeactivateController(HidController::NPad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx) {
|
void Hid::AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -634,10 +632,11 @@ void Hid::DisconnectNpad(Kernel::HLERequestContext& ctx) {
|
||||||
const auto npad_id{rp.Pop<u32>()};
|
const auto npad_id{rp.Pop<u32>()};
|
||||||
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).DisconnectNpad(npad_id);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", npad_id,
|
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", npad_id,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad).DisconnectNPad(npad_id);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -650,22 +649,36 @@ void Hid::GetPlayerLedPattern(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
IPC::ResponseBuilder rb{ctx, 4};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushRaw<u64>(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
rb.Push(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
.GetLedPattern(npad_id)
|
.GetLedPattern(npad_id)
|
||||||
.raw);
|
.raw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hid::ActivateNpadWithRevision(Kernel::HLERequestContext& ctx) {
|
||||||
|
// Should have no effect with how our npad sets up the data
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto unknown{rp.Pop<u32>()};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->ActivateController(HidController::NPad);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, unknown={}, applet_resource_user_id={}", unknown,
|
||||||
|
applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
void Hid::SetNpadJoyHoldType(Kernel::HLERequestContext& ctx) {
|
void Hid::SetNpadJoyHoldType(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
const auto hold_type{rp.Pop<u64>()};
|
const auto hold_type{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetHoldType({hold_type});
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, hold_type={}",
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, hold_type={}",
|
||||||
applet_resource_user_id, hold_type);
|
applet_resource_user_id, hold_type);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.SetHoldType(Controller_NPad::NpadHoldType{hold_type});
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -676,10 +689,9 @@ void Hid::GetNpadJoyHoldType(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
const auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
IPC::ResponseBuilder rb{ctx, 4};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u64>(static_cast<u64>(controller.GetHoldType()));
|
rb.PushEnum(applet_resource->GetController<Controller_NPad>(HidController::NPad).GetHoldType()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx) {
|
void Hid::SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -687,12 +699,12 @@ void Hid::SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx
|
||||||
const auto npad_id{rp.Pop<u32>()};
|
const auto npad_id{rp.Pop<u32>()};
|
||||||
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)
|
||||||
|
.SetNpadMode(npad_id, Controller_NPad::NpadAssignments::Single);
|
||||||
|
|
||||||
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id,
|
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.SetNpadMode(npad_id, Controller_NPad::NPadAssignments::Single);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -704,13 +716,13 @@ void Hid::SetNpadJoyAssignmentModeSingle(Kernel::HLERequestContext& ctx) {
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
const auto npad_joy_device_type{rp.Pop<u64>()};
|
const auto npad_joy_device_type{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.SetNpadMode(npad_id, Controller_NPad::NpadAssignments::Single);
|
||||||
|
|
||||||
LOG_WARNING(Service_HID,
|
LOG_WARNING(Service_HID,
|
||||||
"(STUBBED) called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
|
"(STUBBED) called, npad_id={}, applet_resource_user_id={}, npad_joy_device_type={}",
|
||||||
npad_id, applet_resource_user_id, npad_joy_device_type);
|
npad_id, applet_resource_user_id, npad_joy_device_type);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.SetNpadMode(npad_id, Controller_NPad::NPadAssignments::Single);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -720,12 +732,12 @@ void Hid::SetNpadJoyAssignmentModeDual(Kernel::HLERequestContext& ctx) {
|
||||||
const auto npad_id{rp.Pop<u32>()};
|
const auto npad_id{rp.Pop<u32>()};
|
||||||
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)
|
||||||
|
.SetNpadMode(npad_id, Controller_NPad::NpadAssignments::Dual);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", npad_id,
|
LOG_DEBUG(Service_HID, "called, npad_id={}, applet_resource_user_id={}", npad_id,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.SetNpadMode(npad_id, Controller_NPad::NPadAssignments::Dual);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -736,12 +748,12 @@ void Hid::MergeSingleJoyAsDualJoy(Kernel::HLERequestContext& ctx) {
|
||||||
const auto npad_id_2{rp.Pop<u32>()};
|
const auto npad_id_2{rp.Pop<u32>()};
|
||||||
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)
|
||||||
|
.MergeSingleJoyAsDualJoy(npad_id_1, npad_id_2);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, npad_id_1={}, npad_id_2={}, applet_resource_user_id={}",
|
LOG_DEBUG(Service_HID, "called, npad_id_1={}, npad_id_2={}, applet_resource_user_id={}",
|
||||||
npad_id_1, npad_id_2, applet_resource_user_id);
|
npad_id_1, npad_id_2, applet_resource_user_id);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.MergeSingleJoyAsDualJoy(npad_id_1, npad_id_2);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -750,9 +762,9 @@ void Hid::StartLrAssignmentMode(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{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).StartLRAssignmentMode();
|
||||||
|
|
||||||
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);
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.StartLRAssignmentMode();
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
@ -762,9 +774,9 @@ void Hid::StopLrAssignmentMode(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{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).StopLRAssignmentMode();
|
||||||
|
|
||||||
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);
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.StopLRAssignmentMode();
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
@ -775,12 +787,12 @@ void Hid::SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) {
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
const auto mode{rp.Pop<u64>()};
|
const auto mode{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.SetNpadHandheldActivationMode({mode});
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, mode={}", applet_resource_user_id,
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, mode={}", applet_resource_user_id,
|
||||||
mode);
|
mode);
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
||||||
.SetNpadHandheldActivationMode(Controller_NPad::NpadHandheldActivationMode{mode});
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -793,23 +805,24 @@ void Hid::GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
IPC::ResponseBuilder rb{ctx, 4};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<u64>(
|
rb.PushEnum(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
static_cast<u64>(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
.GetNpadHandheldActivationMode());
|
||||||
.GetNpadHandheldActivationMode()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) {
|
void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto npad_1{rp.Pop<u32>()};
|
const auto npad_id_1{rp.Pop<u32>()};
|
||||||
const auto npad_2{rp.Pop<u32>()};
|
const auto npad_id_2{rp.Pop<u32>()};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, npad_1={}, npad_2={}",
|
const bool res = applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
applet_resource_user_id, npad_1, npad_2);
|
.SwapNpadAssignment(npad_id_1, npad_id_2);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, npad_id_1={}, npad_id_2={}",
|
||||||
|
applet_resource_user_id, npad_id_1, npad_id_2);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
if (controller.SwapNpadAssignment(npad_1, npad_2)) {
|
if (res) {
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
} else {
|
} else {
|
||||||
LOG_ERROR(Service_HID, "Npads are not connected!");
|
LOG_ERROR(Service_HID, "Npads are not connected!");
|
||||||
|
@ -825,11 +838,10 @@ void Hid::IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext
|
||||||
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id,
|
LOG_WARNING(Service_HID, "(STUBBED) called, npad_id={}, applet_resource_user_id={}", npad_id,
|
||||||
applet_resource_user_id);
|
applet_resource_user_id);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 3};
|
IPC::ResponseBuilder rb{ctx, 3};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.Push<bool>(controller.IsUnintendedHomeButtonInputProtectionEnabled(npad_id));
|
rb.Push(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.IsUnintendedHomeButtonInputProtectionEnabled(npad_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) {
|
void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -838,91 +850,19 @@ void Hid::EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& c
|
||||||
const auto npad_id{rp.Pop<u32>()};
|
const auto npad_id{rp.Pop<u32>()};
|
||||||
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)
|
||||||
|
.SetUnintendedHomeButtonInputProtectionEnabled(unintended_home_button_input_protection,
|
||||||
|
npad_id);
|
||||||
|
|
||||||
LOG_WARNING(Service_HID,
|
LOG_WARNING(Service_HID,
|
||||||
"(STUBBED) called, unintended_home_button_input_protection={}, npad_id={},"
|
"(STUBBED) called, unintended_home_button_input_protection={}, npad_id={},"
|
||||||
"applet_resource_user_id={}",
|
"applet_resource_user_id={}",
|
||||||
npad_id, unintended_home_button_input_protection, applet_resource_user_id);
|
unintended_home_button_input_protection, npad_id, applet_resource_user_id);
|
||||||
|
|
||||||
auto& controller = applet_resource->GetController<Controller_NPad>(HidController::NPad);
|
|
||||||
controller.SetUnintendedHomeButtonInputProtectionEnabled(
|
|
||||||
unintended_home_button_input_protection, npad_id);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetVibrationEnabled(true);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::EndPermitVibrationSession(Kernel::HLERequestContext& ctx) {
|
|
||||||
LOG_DEBUG(Service_HID, "called");
|
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetVibrationEnabled(false);
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::SendVibrationValue(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto controller{rp.Pop<u32>()};
|
|
||||||
const auto vibration_values{rp.PopRaw<Controller_NPad::Vibration>()};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, controller={}, applet_resource_user_id={}", controller,
|
|
||||||
applet_resource_user_id);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
||||||
.VibrateController({controller}, {vibration_values});
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::SendVibrationValues(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
|
||||||
|
|
||||||
const auto controllers = ctx.ReadBuffer(0);
|
|
||||||
const auto vibrations = ctx.ReadBuffer(1);
|
|
||||||
|
|
||||||
std::vector<u32> controller_list(controllers.size() / sizeof(u32));
|
|
||||||
std::vector<Controller_NPad::Vibration> vibration_list(vibrations.size() /
|
|
||||||
sizeof(Controller_NPad::Vibration));
|
|
||||||
|
|
||||||
std::memcpy(controller_list.data(), controllers.data(), controllers.size());
|
|
||||||
std::memcpy(vibration_list.data(), vibrations.data(), vibrations.size());
|
|
||||||
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
||||||
.VibrateController(controller_list, vibration_list);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 2};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::GetActualVibrationValue(Kernel::HLERequestContext& ctx) {
|
|
||||||
IPC::RequestParser rp{ctx};
|
|
||||||
const auto controller_id{rp.Pop<u32>()};
|
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, controller_id={}, applet_resource_user_id={}", controller_id,
|
|
||||||
applet_resource_user_id);
|
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 6};
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
|
||||||
rb.PushRaw<Controller_NPad::Vibration>(
|
|
||||||
applet_resource->GetController<Controller_NPad>(HidController::NPad).GetLastVibration());
|
|
||||||
}
|
|
||||||
|
|
||||||
void Hid::GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx) {
|
void Hid::GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto vibration_device_handle{rp.PopRaw<Controller_NPad::DeviceHandle>()};
|
const auto vibration_device_handle{rp.PopRaw<Controller_NPad::DeviceHandle>()};
|
||||||
|
@ -949,7 +889,37 @@ void Hid::GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
IPC::ResponseBuilder rb{ctx, 4};
|
IPC::ResponseBuilder rb{ctx, 4};
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushRaw<VibrationDeviceInfo>(vibration_device_info);
|
rb.PushRaw(vibration_device_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::SendVibrationValue(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto controller{rp.Pop<u32>()};
|
||||||
|
const auto vibration_values{rp.PopRaw<Controller_NPad::Vibration>()};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.VibrateController({controller}, {vibration_values});
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, controller={}, applet_resource_user_id={}", controller,
|
||||||
|
applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::GetActualVibrationValue(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto controller_id{rp.Pop<u32>()};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, controller_id={}, applet_resource_user_id={}", controller_id,
|
||||||
|
applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 6};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
rb.PushRaw(
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).GetLastVibration());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) {
|
void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) {
|
||||||
|
@ -963,6 +933,7 @@ void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) {
|
||||||
void Hid::PermitVibration(Kernel::HLERequestContext& ctx) {
|
void Hid::PermitVibration(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto can_vibrate{rp.Pop<bool>()};
|
const auto can_vibrate{rp.Pop<bool>()};
|
||||||
|
|
||||||
Settings::values.vibration_enabled.SetValue(can_vibrate);
|
Settings::values.vibration_enabled.SetValue(can_vibrate);
|
||||||
|
|
||||||
LOG_DEBUG(Service_HID, "called, can_vibrate={}", can_vibrate);
|
LOG_DEBUG(Service_HID, "called, can_vibrate={}", can_vibrate);
|
||||||
|
@ -979,6 +950,50 @@ void Hid::IsVibrationPermitted(Kernel::HLERequestContext& ctx) {
|
||||||
rb.Push(Settings::values.vibration_enabled.GetValue());
|
rb.Push(Settings::values.vibration_enabled.GetValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hid::SendVibrationValues(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
const auto controllers = ctx.ReadBuffer(0);
|
||||||
|
const auto vibrations = ctx.ReadBuffer(1);
|
||||||
|
|
||||||
|
std::vector<u32> controller_list(controllers.size() / sizeof(u32));
|
||||||
|
std::vector<Controller_NPad::Vibration> vibration_list(vibrations.size() /
|
||||||
|
sizeof(Controller_NPad::Vibration));
|
||||||
|
|
||||||
|
std::memcpy(controller_list.data(), controllers.data(), controllers.size());
|
||||||
|
std::memcpy(vibration_list.data(), vibrations.data(), vibrations.size());
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
||||||
|
.VibrateController(controller_list, vibration_list);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::BeginPermitVibrationSession(Kernel::HLERequestContext& ctx) {
|
||||||
|
IPC::RequestParser rp{ctx};
|
||||||
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetVibrationEnabled(true);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id);
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hid::EndPermitVibrationSession(Kernel::HLERequestContext& ctx) {
|
||||||
|
applet_resource->GetController<Controller_NPad>(HidController::NPad).SetVibrationEnabled(false);
|
||||||
|
|
||||||
|
LOG_DEBUG(Service_HID, "called");
|
||||||
|
|
||||||
|
IPC::ResponseBuilder rb{ctx, 2};
|
||||||
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
void Hid::ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
void Hid::ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const auto applet_resource_user_id{rp.Pop<u64>()};
|
const auto applet_resource_user_id{rp.Pop<u64>()};
|
||||||
|
|
|
@ -86,17 +86,15 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void CreateAppletResource(Kernel::HLERequestContext& ctx);
|
void CreateAppletResource(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateXpad(Kernel::HLERequestContext& ctx);
|
|
||||||
void GetXpadIDs(Kernel::HLERequestContext& ctx);
|
|
||||||
void ActivateSixAxisSensor(Kernel::HLERequestContext& ctx);
|
|
||||||
void DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx);
|
|
||||||
void ActivateDebugPad(Kernel::HLERequestContext& ctx);
|
void ActivateDebugPad(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateTouchScreen(Kernel::HLERequestContext& ctx);
|
void ActivateTouchScreen(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateMouse(Kernel::HLERequestContext& ctx);
|
void ActivateMouse(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateKeyboard(Kernel::HLERequestContext& ctx);
|
void ActivateKeyboard(Kernel::HLERequestContext& ctx);
|
||||||
void SendKeyboardLockKeyEvent(Kernel::HLERequestContext& ctx);
|
void SendKeyboardLockKeyEvent(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateGesture(Kernel::HLERequestContext& ctx);
|
void ActivateXpad(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateNpadWithRevision(Kernel::HLERequestContext& ctx);
|
void GetXpadIDs(Kernel::HLERequestContext& ctx);
|
||||||
|
void ActivateSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
|
void DeactivateSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
void StartSixAxisSensor(Kernel::HLERequestContext& ctx);
|
void StartSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
void StopSixAxisSensor(Kernel::HLERequestContext& ctx);
|
void StopSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
void EnableSixAxisSensorFusion(Kernel::HLERequestContext& ctx);
|
void EnableSixAxisSensorFusion(Kernel::HLERequestContext& ctx);
|
||||||
|
@ -104,6 +102,7 @@ private:
|
||||||
void GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx);
|
void GetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx);
|
||||||
void ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx);
|
void ResetGyroscopeZeroDriftMode(Kernel::HLERequestContext& ctx);
|
||||||
void IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx);
|
void IsSixAxisSensorAtRest(Kernel::HLERequestContext& ctx);
|
||||||
|
void ActivateGesture(Kernel::HLERequestContext& ctx);
|
||||||
void SetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx);
|
void SetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx);
|
||||||
void GetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx);
|
void GetSupportedNpadStyleSet(Kernel::HLERequestContext& ctx);
|
||||||
void SetSupportedNpadIdType(Kernel::HLERequestContext& ctx);
|
void SetSupportedNpadIdType(Kernel::HLERequestContext& ctx);
|
||||||
|
@ -112,6 +111,7 @@ private:
|
||||||
void AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx);
|
void AcquireNpadStyleSetUpdateEventHandle(Kernel::HLERequestContext& ctx);
|
||||||
void DisconnectNpad(Kernel::HLERequestContext& ctx);
|
void DisconnectNpad(Kernel::HLERequestContext& ctx);
|
||||||
void GetPlayerLedPattern(Kernel::HLERequestContext& ctx);
|
void GetPlayerLedPattern(Kernel::HLERequestContext& ctx);
|
||||||
|
void ActivateNpadWithRevision(Kernel::HLERequestContext& ctx);
|
||||||
void SetNpadJoyHoldType(Kernel::HLERequestContext& ctx);
|
void SetNpadJoyHoldType(Kernel::HLERequestContext& ctx);
|
||||||
void GetNpadJoyHoldType(Kernel::HLERequestContext& ctx);
|
void GetNpadJoyHoldType(Kernel::HLERequestContext& ctx);
|
||||||
void SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx);
|
void SetNpadJoyAssignmentModeSingleByDefault(Kernel::HLERequestContext& ctx);
|
||||||
|
@ -125,15 +125,15 @@ private:
|
||||||
void SwapNpadAssignment(Kernel::HLERequestContext& ctx);
|
void SwapNpadAssignment(Kernel::HLERequestContext& ctx);
|
||||||
void IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx);
|
void IsUnintendedHomeButtonInputProtectionEnabled(Kernel::HLERequestContext& ctx);
|
||||||
void EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx);
|
void EnableUnintendedHomeButtonInputProtection(Kernel::HLERequestContext& ctx);
|
||||||
void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx);
|
|
||||||
void EndPermitVibrationSession(Kernel::HLERequestContext& ctx);
|
|
||||||
void SendVibrationValue(Kernel::HLERequestContext& ctx);
|
|
||||||
void SendVibrationValues(Kernel::HLERequestContext& ctx);
|
|
||||||
void GetActualVibrationValue(Kernel::HLERequestContext& ctx);
|
|
||||||
void GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx);
|
void GetVibrationDeviceInfo(Kernel::HLERequestContext& ctx);
|
||||||
|
void SendVibrationValue(Kernel::HLERequestContext& ctx);
|
||||||
|
void GetActualVibrationValue(Kernel::HLERequestContext& ctx);
|
||||||
void CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx);
|
void CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx);
|
||||||
void PermitVibration(Kernel::HLERequestContext& ctx);
|
void PermitVibration(Kernel::HLERequestContext& ctx);
|
||||||
void IsVibrationPermitted(Kernel::HLERequestContext& ctx);
|
void IsVibrationPermitted(Kernel::HLERequestContext& ctx);
|
||||||
|
void SendVibrationValues(Kernel::HLERequestContext& ctx);
|
||||||
|
void BeginPermitVibrationSession(Kernel::HLERequestContext& ctx);
|
||||||
|
void EndPermitVibrationSession(Kernel::HLERequestContext& ctx);
|
||||||
void ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
void ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
void StartConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
void StartConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
void StopConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
void StopConsoleSixAxisSensor(Kernel::HLERequestContext& ctx);
|
||||||
|
|
Loading…
Reference in a new issue