Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement GcSrv and SdmmcSrv #281

Merged
merged 23 commits into from
Sep 18, 2023
Merged

Implement GcSrv and SdmmcSrv #281

merged 23 commits into from
Sep 18, 2023

Conversation

Thealexbarney
Copy link
Owner

These two namespaces act as an abstraction over the nn::gc and nn::sdmmc namespaces. Their goal is to provide a common interface for controlling different storage devices, and for attaching and detaching devices. Nintendo doesn't currently use the SetReady and UnsetReady functions on NX for anything other than setting its storage devices as being ready when FS starts up. Future consoles might or might not use these functions for attaching and detaching devices while the console is running.

There are four main interfaces:
IStorageDeviceManagerFactory: Set storage devices as ready or not ready, and create IStorageDeviceManager instances for each storage device.
IStorageDeviceManager: Query the basic status of a storage device, and open other objects for operating on the device.
IStorageDevice: Read and write to a storage device, and open an operator for the currently inserted media.
IStorageDeviceOperator: Perform device-specific operations. Opening a device operator from an IStorageDeviceManager will give you an operator for interacting with that storage device. Opening a device operator from an IStorageDevice will give you an operator for interacting with the currently inserted storage media.
The functions on this interface allow passing various combinations of an operation ID, storage offset, size, input buffers, and output buffers to the device operator. Each type of device operator defines its own operations. e.g. The GetCid operation on an SD card storage media operator takes a 16-byte output buffer and writes the CID to that buffer.

@Thealexbarney Thealexbarney merged commit 2b69ec6 into master Sep 18, 2023
2 checks passed
@Thealexbarney Thealexbarney deleted the sdmmcsrv branch October 9, 2023 01:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant