|
|
@@ -139,7 +139,8 @@ void IAppletResource::UpdateMotion(std::uintptr_t user_data, std::chrono::nanose
|
|
|
|
|
|
class IActiveVibrationDeviceList final : public ServiceFramework<IActiveVibrationDeviceList> {
|
|
|
public:
|
|
|
- IActiveVibrationDeviceList() : ServiceFramework("IActiveVibrationDeviceList") {
|
|
|
+ explicit IActiveVibrationDeviceList(std::shared_ptr<IAppletResource> applet_resource_)
|
|
|
+ : ServiceFramework("IActiveVibrationDeviceList"), applet_resource(applet_resource_) {
|
|
|
// clang-format off
|
|
|
static const FunctionInfo functions[] = {
|
|
|
{0, &IActiveVibrationDeviceList::InitializeVibrationDevice, "InitializeVibrationDevice"},
|
|
|
@@ -154,13 +155,18 @@ private:
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
const auto vibration_device_handle{rp.PopRaw<Controller_NPad::DeviceHandle>()};
|
|
|
|
|
|
- LOG_WARNING(Service_HID, "(STUBBED) called, npad_type={}, npad_id={}, device_index={}",
|
|
|
- vibration_device_handle.npad_type, vibration_device_handle.npad_id,
|
|
|
- vibration_device_handle.device_index);
|
|
|
+ applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
|
+ .InitializeVibrationDevice(vibration_device_handle);
|
|
|
+
|
|
|
+ LOG_DEBUG(Service_HID, "called, npad_type={}, npad_id={}, device_index={}",
|
|
|
+ vibration_device_handle.npad_type, vibration_device_handle.npad_id,
|
|
|
+ vibration_device_handle.device_index);
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
}
|
|
|
+
|
|
|
+ std::shared_ptr<IAppletResource> applet_resource;
|
|
|
};
|
|
|
|
|
|
std::shared_ptr<IAppletResource> Hid::GetAppletResource() {
|
|
|
@@ -1062,7 +1068,7 @@ void Hid::CreateActiveVibrationDeviceList(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.PushIpcInterface<IActiveVibrationDeviceList>();
|
|
|
+ rb.PushIpcInterface<IActiveVibrationDeviceList>(applet_resource);
|
|
|
}
|
|
|
|
|
|
void Hid::PermitVibration(Kernel::HLERequestContext& ctx) {
|
|
|
@@ -1137,15 +1143,16 @@ void Hid::IsVibrationDeviceMounted(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
|
const auto parameters{rp.PopRaw<Parameters>()};
|
|
|
|
|
|
- LOG_WARNING(
|
|
|
- Service_HID,
|
|
|
- "(STUBBED) called, npad_type={}, npad_id={}, device_index={}, applet_resource_user_id={}",
|
|
|
- parameters.vibration_device_handle.npad_type, parameters.vibration_device_handle.npad_id,
|
|
|
- parameters.vibration_device_handle.device_index, parameters.applet_resource_user_id);
|
|
|
+ LOG_DEBUG(Service_HID,
|
|
|
+ "called, npad_type={}, npad_id={}, device_index={}, applet_resource_user_id={}",
|
|
|
+ parameters.vibration_device_handle.npad_type,
|
|
|
+ parameters.vibration_device_handle.npad_id,
|
|
|
+ parameters.vibration_device_handle.device_index, parameters.applet_resource_user_id);
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 3};
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
- rb.Push(true);
|
|
|
+ rb.Push(applet_resource->GetController<Controller_NPad>(HidController::NPad)
|
|
|
+ .IsVibrationDeviceMounted(parameters.vibration_device_handle));
|
|
|
}
|
|
|
|
|
|
void Hid::ActivateConsoleSixAxisSensor(Kernel::HLERequestContext& ctx) {
|