Esempio n. 1
0
        public long SetNpadJoyAssignmentModeDual(ServiceCtx Context)
        {
            HidControllerId HidControllerId      = (HidControllerId)Context.RequestData.ReadInt32();
            long            AppletUserResourseId = Context.RequestData.ReadInt64();

            return(0);
        }
Esempio n. 2
0
        public static NpadIdType GetNpadIdTypeFromIndex(HidControllerId index)
        {
            switch (index)
            {
            case HidControllerId.ControllerPlayer1:  return(NpadIdType.Player1);

            case HidControllerId.ControllerPlayer2:  return(NpadIdType.Player2);

            case HidControllerId.ControllerPlayer3:  return(NpadIdType.Player3);

            case HidControllerId.ControllerPlayer4:  return(NpadIdType.Player4);

            case HidControllerId.ControllerPlayer5:  return(NpadIdType.Player5);

            case HidControllerId.ControllerPlayer6:  return(NpadIdType.Player6);

            case HidControllerId.ControllerPlayer7:  return(NpadIdType.Player7);

            case HidControllerId.ControllerPlayer8:  return(NpadIdType.Player8);

            case HidControllerId.ControllerHandheld: return(NpadIdType.Handheld);

            case HidControllerId.ControllerUnknown:  return(NpadIdType.Unknown);

            default: throw new ArgumentOutOfRangeException(nameof(index));
            }
        }
Esempio n. 3
0
        public long SetNpadJoyAssignmentModeDual(ServiceCtx Context)
        {
            HidControllerId HidControllerId      = (HidControllerId)Context.RequestData.ReadInt32();
            long            AppletUserResourceId = Context.RequestData.ReadInt64();

            Logging.Stub(LogClass.ServiceHid, "Stubbed");

            return(0);
        }
Esempio n. 4
0
        public virtual void Connect(HidControllerId controllerId)
        {
            ControllerId = controllerId;

            Offset = Device.Hid.HidPosition + HidControllersOffset + (int)controllerId * HidControllerSize;

            Device.Memory.FillWithZeros(Offset, 0x5000);

            Device.Memory.WriteInt32(Offset + 0x00, (int)HidControllerType);
        }
Esempio n. 5
0
        public long SetNpadJoyAssignmentModeSingleByDefault(ServiceCtx Context)
        {
            HidControllerId HidControllerId = (HidControllerId)Context.RequestData.ReadInt32();

            long AppletUserResourceId = Context.RequestData.ReadInt64();

            Context.Ns.Log.PrintStub(LogClass.ServiceHid, "Stubbed.");

            return(0);
        }
Esempio n. 6
0
        public void SetJoyconButton(
            HidControllerId ControllerId,
            HidControllerLayouts ControllerLayout,
            HidControllerButtons Buttons,
            HidJoystickPosition LeftStick,
            HidJoystickPosition RightStick)
        {
            Buttons |= UpdateStickButtons(LeftStick, RightStick);

            long ControllerOffset = HidPosition + HidControllersOffset;

            ControllerOffset += (int)ControllerId * HidControllerSize;

            ControllerOffset += HidControllerHeaderSize;

            ControllerOffset += (int)ControllerLayout * HidControllerLayoutsSize;

            long LastEntry = Device.Memory.ReadInt64(ControllerOffset + 0x10);

            long CurrEntry = (LastEntry + 1) % HidEntryCount;

            long Timestamp = GetTimestamp();

            Device.Memory.WriteInt64(ControllerOffset + 0x0, Timestamp);
            Device.Memory.WriteInt64(ControllerOffset + 0x8, HidEntryCount);
            Device.Memory.WriteInt64(ControllerOffset + 0x10, CurrEntry);
            Device.Memory.WriteInt64(ControllerOffset + 0x18, HidEntryCount - 1);

            ControllerOffset += HidControllersLayoutHeaderSize;

            long LastEntryOffset = ControllerOffset + LastEntry * HidControllersInputEntrySize;

            ControllerOffset += CurrEntry * HidControllersInputEntrySize;

            long SampleCounter = Device.Memory.ReadInt64(LastEntryOffset) + 1;

            Device.Memory.WriteInt64(ControllerOffset + 0x0, SampleCounter);
            Device.Memory.WriteInt64(ControllerOffset + 0x8, SampleCounter);

            Device.Memory.WriteInt64(ControllerOffset + 0x10, (uint)Buttons);

            Device.Memory.WriteInt32(ControllerOffset + 0x18, LeftStick.DX);
            Device.Memory.WriteInt32(ControllerOffset + 0x1c, LeftStick.DY);

            Device.Memory.WriteInt32(ControllerOffset + 0x20, RightStick.DX);
            Device.Memory.WriteInt32(ControllerOffset + 0x24, RightStick.DY);

            Device.Memory.WriteInt64(ControllerOffset + 0x28,
                                     (uint)HidControllerConnState.Controller_State_Connected |
                                     (uint)HidControllerConnState.Controller_State_Wired);
        }
Esempio n. 7
0
        public void InitilizePrimaryController(HidControllerType controllerType)
        {
            HidControllerId controllerId = controllerType == HidControllerType.Handheld ?
                                           HidControllerId.ControllerHandheld : HidControllerId.ControllerPlayer1;

            if (controllerType == HidControllerType.ProController)
            {
                PrimaryController = new HidProController(_device);
            }
            else
            {
                PrimaryController = new HidNpadController(controllerType,
                                                          _device,
                                                          (NpadColor.BodyNeonRed, NpadColor.BodyNeonRed),
                                                          (NpadColor.ButtonsNeonBlue, NpadColor.ButtonsNeonBlue));
            }

            PrimaryController.Connect(controllerId);
        }
Esempio n. 8
0
        public override void Connect(HidControllerId ControllerId)
        {
            base.Connect(ControllerId);

            HidControllerColorDesc SingleColorDesc =
                HidControllerColorDesc.ColorDesc_ColorsNonexistent;

            HidControllerColorDesc SplitColorDesc = 0;

            NpadColor SingleColorBody    = NpadColor.Black;
            NpadColor SingleColorButtons = NpadColor.Black;

            Device.Memory.WriteInt32(Offset + 0x08, (int)SingleColorDesc);
            Device.Memory.WriteInt32(Offset + 0x0c, (int)SingleColorBody);
            Device.Memory.WriteInt32(Offset + 0x10, (int)SingleColorButtons);
            Device.Memory.WriteInt32(Offset + 0x14, (int)SplitColorDesc);

            Connected = true;
        }
Esempio n. 9
0
        public void InitilizePrimaryController(HidControllerType ControllerType)
        {
            HidControllerId ControllerId = ControllerType == HidControllerType.Handheld ?
                                           HidControllerId.CONTROLLER_HANDHELD : HidControllerId.CONTROLLER_PLAYER_1;

            if (ControllerType == HidControllerType.ProController)
            {
                PrimaryController = new HidProController(Device);
            }
            else
            {
                PrimaryController = new HidNpadController(ControllerType,
                                                          Device,
                                                          (NpadColor.Body_Neon_Red, NpadColor.Body_Neon_Red),
                                                          (NpadColor.Buttons_Neon_Blue, NpadColor.Buttons_Neon_Blue));
            }

            PrimaryController.Connect(ControllerId);
        }
Esempio n. 10
0
        // GetNpadIrCameraHandle(u32) -> nn::irsensor::IrCameraHandle
        public long GetNpadIrCameraHandle(ServiceCtx context)
        {
            NpadIdType npadIdType = (NpadIdType)context.RequestData.ReadUInt32();

            if (npadIdType > NpadIdType.Player8 &&
                npadIdType != NpadIdType.Unknown &&
                npadIdType != NpadIdType.Handheld)
            {
                return(ErrorCode.MakeError(ErrorModule.Irsensor, IrsError.NpadIdOutOfRange));
            }

            HidControllerId irCameraHandle = HidUtils.GetIndexFromNpadIdType(npadIdType);

            context.ResponseData.Write((int)irCameraHandle);

            // NOTE: If the irCameraHandle pointer is null this error is returned, Doesn't occur in our case.
            //       return ErrorCode.MakeError(ErrorModule.Irsensor, IrsError.HandlePointerIsNull);

            return(0);
        }
Esempio n. 11
0
        // GetNpadIrCameraHandle(u32) -> nn::irsensor::IrCameraHandle
        public ResultCode GetNpadIrCameraHandle(ServiceCtx context)
        {
            NpadIdType npadIdType = (NpadIdType)context.RequestData.ReadUInt32();

            if (npadIdType > NpadIdType.Player8 &&
                npadIdType != NpadIdType.Unknown &&
                npadIdType != NpadIdType.Handheld)
            {
                return(ResultCode.NpadIdOutOfRange);
            }

            HidControllerId irCameraHandle = HidUtils.GetIndexFromNpadIdType(npadIdType);

            context.ResponseData.Write((int)irCameraHandle);

            // NOTE: If the irCameraHandle pointer is null this error is returned, Doesn't occur in our case.
            //       return ResultCode.HandlePointerIsNull;

            return(ResultCode.Success);
        }