aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs
AgeCommit message (Collapse)Author
2023-02-10Treat NpadIdType < 0 as invalid. Filter invalid SupportedPlayers inside ↵Logan Stromberg
IHidServer.SetSupportedNpadIdType(). (#4377) Co-authored-by: Logan Stromberg <lostromb@microsoft.com>
2023-01-04IPC refactor part 3+4: New server HIPC message processor (#4188)gdkchan
* IPC refactor part 3 + 4: New server HIPC message processor with source generator based serialization * Make types match on calls to AlignUp/AlignDown * Formatting * Address some PR feedback * Move BitfieldExtensions to Ryujinx.Common.Utilities and consolidate implementations * Rename Reader/Writer to SpanReader/SpanWriter and move to Ryujinx.Common.Memory * Implement EventType * Address more PR feedback * Log request processing errors since they are not normal * Rename waitable to multiwait and add missing lock * PR feedback * Ac_K PR feedback
2022-05-08hid: Various fixes and cleanup (#3326)Ac_K
* hid: Various fix and cleanup * Add IsValidNpadIdType * remove ()
2022-04-07service: hid: Signal event on AcquireNpadStyleSetUpdateEventHandle (#3247)Narr the Reg
2022-02-18Implement/Stub mnpp:app service and some hid calls (#3131)Ac_K
* Implement/Stub mnpp:app service and some hid calls This PR Implement/Stub the `mnpp:app` service (closes #3107) accordingly to RE, which seems to do some telemetry for China region only, so everything is stubbed. This PR fixes some inconsistencies in the hid service too and stub EnableSixAxisSensorUnalteredPassthrough, IsSixAxisSensorUnalteredPassthroughEnabled, LoadSixAxisSensorCalibrationParameter, GetSixAxisSensorIcInformation calls (closes #3123 and closes #3124). * Addresses Thog review
2022-02-13Use Enum and Delegate.CreateDelegate generic overloads (#3111)Berkan Diler
* Use Enum generic overloads * Remove EnumExtensions.cs * Use Delegate.CreateDelegate generic overloads
2022-01-23Set _vibrationPermitted to True by default (#2985)Mary
Co-authored-by: SpookyBee123 <82302189+SpookyBee123@users.noreply.github.com>
2021-12-29hid: A little cleanup (#2950)Ac_K
While I'm looking to the code, I've found some syntax issue, and a little inconsistencie between `ActivateNpad` and `ActivateNpadWithRevision`. Nothing more.
2021-08-05Implement vibrations (#2468)mpnico
* First working vibration implementation * Fix Infinite Rumble in SDL2Mouse * Stop ignoring one vibValues every 2 * Remove RumbleInfinity as suggested * Reworked all the vibration handle / calculation * Revert HidVibrationDevicePosition changes * Add UI to enable and tune rumble * Remove some stub logs * Add PlayerIndex in rumble debug log * Fix all requested changes * Implements hid::GetVibrationDeviceInfo * Better implements HidVibrationValue.Equals/GetHashCode * Added requested changes from code review * Last fixes from review * Update configuration file version for rebase
2021-06-23hid: Cleanup and implement some calls (#2380)Ac_K
2021-06-19hid/irs: Stub IsFirmwareUpdateAvailableForSixAxisSensor and ↵LukeFZ
CheckFirmwareVersion (#2371) * Stub two services Stubs IHidServer::IsFirmwareUpdateAvailableForSixAxisSensor and IIrSensorServer::CheckFirmwareVersion * Apply suggestions from code review Also changed PackedMcuVersion to be two shorts instead of two bytes, because that's its actual type * Apply new code review suggestions Degroup field from previous assignation + Add padding after SixAxisSensorHandle
2021-05-02hid: Rewrite shared memory management (#2257)Mary
* hid: Rewrite shared memory management This entirely rewrite our ancient (and original) HID shared memory interface to be more usable and accurate. HID update logics were updated to reflect those changes but should work still the same way it previously did. This need heavy testing just in case to avoid possible regressions. * Silence warnings * Address gdkchan's comments * Address Ac_K's comments * Address one missing nit
2021-04-26Initialize hid inputs on activation (#2246)Caian Benedicto
2021-04-24HLE: Fix integer sign inconcistency accross the codebase (#2222)Mary
* Make all title id instances unsigned * Replace address and size with ulong instead of signed types Long overdue change. Also change some logics here and there to optimize with the new memory manager. * Address Ac_K's comments * Remove uneeded cast all around * Fixes some others misalignment
2021-04-14Initial support for the new 12.x IPC system (#2182)Mary
* Rename CommandAttribute as CommandHIpcAttribute to prepare for 12.x changes * Implement inital support for TIPC and adds SM command ids * *Ipc to *ipc * Missed a ref in last commit... * CommandAttributeTIpc to CommandAttributeTipc * Addresses comment and fixes some bugs around TIPC doesn't have any padding requirements as buffer C isn't a thing Fix for RegisterService inverting two argument only on TIPC
2020-12-02Create a single guest process per IPC message processor (#1769)gdkchan
2020-12-02IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special ↵gdkchan
handling from kernel (#1458) * IPC refactor part 2: Use ReplyAndReceive on HLE services and remove special handling from kernel * Fix for applet transfer memory + some nits * Keep handles if possible to avoid server handle table exhaustion * Fix IPC ZeroFill bug * am: Correctly implement CreateManagedDisplayLayer and implement CreateManagedDisplaySeparableLayer CreateManagedDisplaySeparableLayer is requires since 10.x+ when appletResourceUserId != 0 * Make it exit properly * Make ServiceNotImplementedException show the full message again * Allow yielding execution to avoid starving other threads * Only wait if active * Merge IVirtualMemoryManager and IAddressSpaceManager * Fix Ro loading data from the wrong process Co-authored-by: Thog <me@thog.eu>
2020-11-15am/lbl/hid/pctl: Enabled VR Rendering (#1688)Ac_K
* am/lbl/hid/pctl: Enabled VR Rendering This PR enable VR rendering on games which support it through the Toy-Con VR Goggles. Please remember Ryujinx currently don't support console SixAxis sensor and for now, in some games, the view can't be moved. Everything is implemented accordingly to RE: - am: ICommonStateGetter: SetVrModeEnabled, BeginVrModeEx, EndVrModeEx. - lbl: ILblController: SetBrightnessReflectionDelayLevel, GetBrightnessReflectionDelayLevel, SetCurrentAmbientLightSensorMapping, GetCurrentAmbientLightSensorMapping, SetCurrentBrightnessSettingForVrMode, GetCurrentBrightnessSettingForVrMode, EnableVrMode, DisableVrMode, IsVrModeEnabled. - pctl: IParentalControlService: ConfirmStereoVisionPermission, ConfirmStereoVisionRestrictionConfigurable, GetStereoVisionRestriction, SetStereoVisionRestriction, ResetConfirmedStereoVisionPermission, IsStereoVisionPermitted. - hid: IHidServer: ResetSevenSixAxisSensorTimestamp is stubbed because we don't support console SixAxisSensor for now. Maybe we could add a setting later to enable or disable VR. But I think it's fine to keep this always available since you have to enable it in games. * Fix permission flag check * Address gdkchan feedback
2020-09-25Isolate more services to separate threads (#1573)mageven
* Isolate more services to separate threads * Fix DisplayServer * Add explanation for vi services
2020-09-20acc/hid: Implement ListQualifiedUsers and SetTouchScreenConfiguration (#1555)Ac_K
* acc/hid: Implement ListQualifiedUsers and SetTouchScreenConfiguration * Fix symbols
2020-08-23Improve multi-controller support in HID and Controller Applet (#1453)mageven
* Initial commit Enable proper LED patterns Toggle Hotkeys only on focus Ignore Handheld on Docked mode Remove PrimaryController Validate NpadIdType Rewrite NpadDevices to process config in update loop Cleanup * Notify in log periodically when no matched controllers * Remove duplicate StructArrayHelpers in favor of Common.Memory Fix struct padding CS0169 warns in Touchscreen * Remove GTK markup from Controller Applet Use IList instead of List Explicit list capacity in 1ms loop Fix formatting * Restrict ControllerWindow to show valid controller types Add selected player name to ControllerWindow title * ControllerWindow: Fix controller type initial value NpadDevices: Simplify default battery charge * Address AcK's comments Use explicit types and fix formatting * Remove HashSet for SupportedPlayers Fixes potential exceptions due to race * Fix ControllerSupportArg struct packing Also comes with two revisions of struct for 4/8 players max.
2020-08-04Improved Logger (#1292)mageven
* Logger class changes only Now compile-time checking is possible with the help of Nullable Value types. * Misc formatting * Manual optimizations PrintGuestLog PrintGuestStackTrace Surfaceflinger DequeueBuffer * Reduce SendVibrationXX log level to Debug * Add Notice log level This level is always enabled and used to print system info, etc... Also, rewrite LogColor to switch expression as colors are static * Unify unhandled exception event handlers * Print enabled LogLevels during init * Re-add App Exit disposes in proper order nit: switch case spacing * Revert PrintGuestStackTrace to Info logs due to #1407 PrintGuestStackTrace is now called in some critical error handlers so revert to old behavior as KThread isn't part of Guest. * Batch replace Logger statements
2020-05-05set: Quick implementation of GetKeyCodeMap/GetKeyCodeMap2 (#1210)plutoo
* set: Quick implementation of GetKeyCodeMap/GetKeyCodeMap2 This fixed USB keyboard access in official titles. * hid: Stub SendKeyboardLockKeyEvent * Update Ryujinx.HLE/HOS/Services/Settings/ISettingsServer.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update Ryujinx.HLE/HOS/Services/Hid/IHidServer.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * set: KeyboardLayout bringup * set: Small bugfix * Fix GetKeyCodeMapImpl * Revert SystemRegion > RegionCode in Configuration * Fix SendKeyboardLockKeyEvent Co-authored-by: Ac_K <Acoustik666@gmail.com>
2020-05-04Move kernel state out of the Horizon class (#1107)gdkchan
* Move kernel state from Horizon to KernelContext * Merge syscalls partial classes, split 32 and 64-bit variants * Sort usings
2020-05-04Implement a new physical memory manager and replace DeviceMemory (#856)gdkchan
* Implement a new physical memory manager and replace DeviceMemory * Proper generic constraints * Fix debug build * Add memory tests * New CPU memory manager and general code cleanup * Remove host memory management from CPU project, use Ryujinx.Memory instead * Fix tests * Document exceptions on MemoryBlock * Fix leak on unix memory allocation * Proper disposal of some objects on tests * Fix JitCache not being set as initialized * GetRef without checks for 8-bits and 16-bits CAS * Add MemoryBlock destructor * Throw in separate method to improve codegen * Address PR feedback * QueryModified improvements * Fix memory write tracking not marking all pages as modified in some cases * Simplify MarkRegionAsModified * Remove XML doc for ghost param * Add back optimization to avoid useless buffer updates * Add Ryujinx.Cpu project, move MemoryManager there and remove MemoryBlockWrapper * Some nits * Do not perform address translation when size is 0 * Address PR feedback and format NativeInterface class * Remove ghost parameter description * Update Ryujinx.Cpu to .NET Core 3.1 * Address PR feedback * Fix build * Return a well defined value for GetPhysicalAddress with invalid VA, and do not return unmapped ranges as modified * Typo
2020-04-21Suppress warnings from fields never used or never assigned (CS0169 and ↵Cristallix
CS0649) (#919) * chore : disable unwanted warnings and minor code cleanup * chore : remove more warnings * fix : reorder struct correctly * fix : restore _isKernel and remove useless comment * fix : copy/paste error * fix : restore CallMethod call * fix : whitespace * chore : clean using * feat : remove warnings * fix : simplify warning removal on struct * fix : revert fields deletion and code clean up * fix : re-add RE value * fix : typo
2020-04-03HID SharedMem Rework (#1003)mageven
* Delete old HLE.Input * Add new HLE Input. git shows Hid.cs as modified because of the same name. It is new. * Change HID Service * Change Ryujinx UI to reflect new Input * Add basic ControllerApplet * Add DebugPad Should fix Kirby Star Allies * Address Ac_K's comments * Moved all of HLE.Input to Services.Hid * Separated all structs and enums each to a file * Removed vars * Made some naming changes to align with switchbrew * Added official joycon colors As an aside, fixed a mistake in touchscreen headers and added checks to important SharedMem structs at init time. * Further address Ac_K's comments * Addressed gdkchan's and some more Ac_K's comments * Address AcK's review comments * Address AcK's second review comments * Replace missed Marshal.SizeOf and address gdkchan's comments
2019-09-19Refactoring HOS folder structure (#771)Ac_K
* Refactoring HOS folder structure Refactoring HOS folder structure: - Added some subfolders when needed (Following structure decided in private). - Added some `Types` folders when needed. - Little cleanup here and there. - Add services placeholders for every HOS services (close #766 and #753). * Remove Types namespaces
2019-09-06Implement Bluetooth, Btm, Hid and Nsd services and calls. (#761)Ac_K
- Implement `btdrv` service (IBluetoothDriver). Implement call `InitializeBluetoothLe` for initialize events of `bt` service according to RE. - Implement `bt` service (IBluetoothUser). Implement call `RegisterBleEvent` according to RE. - Add a placeholder for the `btm` service (close #750). - Implement `btm:u` service (IBtmUser) (close #751). Implement call `GetCore` according to RE (close #752). - Implement `IBtmUserCore` and calls `AcquireBleScanEvent`, `AcquireBleConnectionEvent`, `AcquireBleServiceDiscoveryEvent` and `AcquireBleMtuConfigEvent` according to RE. - Implement `SetPalmaBoostMode` in `IHidServer` according to RE. - Add stub for `SetIsPalmaAllConnectable` in `IHidServer` because we will not support Palma devices soon. - Implement `nsd:a` and `nsd:u` service (IManager) (close #755). Implement call `ResolveEx` according to RE (close #756). Implement calls `GetSettingName`, `GetEnvironmentIdentifier`, `GetDeviceId`, `DeleteSettings`, `Resolve`, `ReadSaveDataFromFsForTest`, `WriteSaveDataToFsForTest` and `DeleteSaveDataOfFsForTest` according to RE.
2019-07-22Little rewrite of HID input (#723)emmauss
* change hid sharedmem writing to use structures
2019-07-14Refactoring result codes (#731)Ac_K
* refactoring result codes - Add a main enum who can handle some orphalin result codes and the default `ResultCode.Success` one. - Add sub-enum by services when it's needed. - Remove some empty line. - Recast all service calls to ResultCode. - Remove some unneeded static declaration. - Delete unused `NvHelper` class. * NvResult is back * Fix
2019-07-11Refactoring commands handling (#728)Ac_K
* Refactoring commands handling - Use Reflection to handle commands ID. - Add all symbols (from SwIPC so not all time accurate). - Re-sort some services commands methods. - Some cleanup. - Keep some empty constructor for consistency. * Fix order in IProfile
2019-07-10IPC services refactoring (#726)Ac_K
* IPC services refactoring - Use custom Attributes to handle services. - Add a way to set the permissions and fix the bsd service to use it. - Little cleanup. - C#7.1 is required. * fix var name * fix syntax * Change Permission to Parameter * Delete BsdServicePermissionLevel.cs * Fix Linq
2019-07-02Misc cleanup (#708)Alex Barney
* Fix typos * Remove unneeded using statements * Enforce var style more * Remove redundant qualifiers * Fix some indentation * Disable naming warnings on files with external enum names * Fix build * Mass find & replace for comments with no spacing * Standardize todo capitalization and for/if spacing
2019-01-11Refactor Ryujinx.Common and HLE Stub Logging (#537)jduncanator
* Refactor Ryujinx.Common and HLE Stub Logging * Resolve review comments * Rename missed loop variable * Optimize PrintStub logging function * Pass the call-sites Thread ID through to the logger * Remove superfluous lock from ConsoleLog * Process logged data objects in the logger target Pass the data object all the way to the output logger targets, to allow them to "serialize" this in whatever appropriate format they're logging in. * Use existing StringBuilder to build the properties string * Add a ServiceNotImplemented Exception Useful for printing debug information about unimplemented service calls * Resolve Style Nits * Resolve Merge Issues * Fix typo and align declarations
2018-12-18Refactor SVC handler (#540)gdkchan
* Refactor SVC handler * Get rid of KernelErr * Split kernel code files into multiple folders
2018-12-06Adjust naming conventions and general refactoring in HLE Project (#527)Alex Barney
* Rename enum fields * Naming conventions * Remove unneeded ".this" * Remove unneeded semicolons * Remove unused Usings * Don't use var * Remove unneeded enum underlying types * Explicitly label class visibility * Remove unneeded @ prefixes * Remove unneeded commas * Remove unneeded if expressions * Method doesn't use unsafe code * Remove unneeded casts * Initialized objects don't need an empty constructor * Remove settings from DotSettings * Revert "Explicitly label class visibility" This reverts commit ad5eb5787cc5b27a4631cd46ef5f551c4ae95e51. * Small changes * Revert external enum renaming * Changes from feedback * Apply previous refactorings to the merged code
2018-12-04Revert "Adjust naming conventions and general refactoring in HLE Project ↵gdkchan
(#490)" (#526) This reverts commit 85dbb9559ad317a657dafd24da27fec4b3f5250f.
2018-12-04Adjust naming conventions and general refactoring in HLE Project (#490)Alex Barney
* Rename enum fields * Naming conventions * Remove unneeded ".this" * Remove unneeded semicolons * Remove unused Usings * Don't use var * Remove unneeded enum underlying types * Explicitly label class visibility * Remove unneeded @ prefixes * Remove unneeded commas * Remove unneeded if expressions * Method doesn't use unsafe code * Remove unneeded casts * Initialized objects don't need an empty constructor * Remove settings from DotSettings * Revert "Explicitly label class visibility" This reverts commit ad5eb5787cc5b27a4631cd46ef5f551c4ae95e51. * Small changes * Revert external enum renaming * Changes from feedback * Remove unneeded property setters
2018-11-20Support other switch controller types (#487)emmauss
* Make controllers modular, support changing controller type * return readable events * signal hid events * fix style
2018-10-17Move logging to Ryujinx.Common and make it a static class (#413)ReinUsesLisp
2018-09-28fix out of handles erroremmaus
2018-09-23Improve kernel events implementation (#430)gdkchan
* Improve kernel events implementation * Some cleanup * Address PR feedback
2018-09-21Fix IHidServer code styleAc_K
2018-09-21Full 5.X stubbed IHidServer (#428)Ac_K
* Full 5.X stubbed IHidServer Since we can't support all those Hid calls in the right way, we can stub them with more information as possible in the logs. I have added all symbols in it to be more revelant as possible. It's remove some Hid spam in few games too, because we assign some var as the game want. * Fix issues * Fix code according to review
2018-09-18Thread scheduler rewrite (#393)gdkchan
* Started to rewrite the thread scheduler * Add a single core-like scheduling mode, enabled by default * Clear exclusive monitor on context switch * Add SetThreadActivity, misc fixes * Implement WaitForAddress and SignalToAddress svcs, misc fixes * Misc fixes (on SetActivity and Arbiter), other tweaks * Rebased * Add missing null check * Rename multicore key on config, fix UpdatePriorityInheritance * Make scheduling data MLQs private * nit: Ordering
2018-08-16Code style fixes and nits on the HLE project (#355)gdkchan
* Some style fixes and nits on ITimeZoneService * Remove some unneeded usings * Remove the Ryujinx.HLE.OsHle.Handles namespace * Remove hbmenu automatic load on process exit * Rename Ns to Device, rename Os to System, rename SystemState to State * Move Exceptions and Utilities out of OsHle * Rename OsHle to HOS * Rename OsHle folder to HOS * IManagerDisplayService and ISystemDisplayService style fixes * BsdError shouldn't be public * Add a empty new line before using static * Remove unused file * Some style fixes on NPDM * Exit gracefully when the application is closed * Code style fixes on IGeneralService * Add 0x prefix on values printed as hex * Small improvements on finalization code * Move ProcessId and ThreadId out of AThreadState * Rename VFs to FileSystem * FsAccessHeader shouldn't be public. Also fix file names casing * More case changes on NPDM * Remove unused files * Move using to the correct place on NPDM * Use properties on KernelAccessControlMmio * Address PR feedback