mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Ensure SdCardService and MmcService are updated for 13.1.0
This commit is contained in:
parent
91e1e65aff
commit
2fb3d88261
3 changed files with 42 additions and 23 deletions
|
@ -11,13 +11,29 @@ using IStorageSf = LibHac.FsSrv.Sf.IStorage;
|
|||
|
||||
namespace LibHac.FsSrv.Storage;
|
||||
|
||||
/// <summary>
|
||||
/// Contains global MMC-storage-related functions.
|
||||
/// </summary>
|
||||
/// <remarks>Based on FS 13.1.0 (nnSdk 13.4.0)</remarks>
|
||||
public static class MmcServiceGlobalMethods
|
||||
{
|
||||
public static Result GetAndClearPatrolReadAllocateBufferCount(this FileSystemServer fsSrv, out long successCount,
|
||||
out long failureCount)
|
||||
{
|
||||
return fsSrv.Storage.GetAndClearPatrolReadAllocateBufferCount(out successCount, out failureCount);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Contains functions for interacting with the MMC storage device.
|
||||
/// </summary>
|
||||
/// <remarks>Based on FS 13.1.0 (nnSdk 13.4.0)</remarks>
|
||||
internal static class MmcService
|
||||
{
|
||||
private static int MakeOperationId(MmcManagerOperationIdValue operation) => (int)operation;
|
||||
private static int MakeOperationId(MmcOperationIdValue operation) => (int)operation;
|
||||
|
||||
private static Result GetMmcManager(this StorageService service,
|
||||
ref SharedRef<IStorageDeviceManager> outManager)
|
||||
private static Result GetMmcManager(this StorageService service, ref SharedRef<IStorageDeviceManager> outManager)
|
||||
{
|
||||
return service.CreateStorageDeviceManager(ref outManager, StorageDevicePortId.Mmc);
|
||||
}
|
||||
|
@ -146,7 +162,7 @@ internal static class MmcService
|
|||
public static Result EraseMmc(this StorageService service, MmcPartition partition)
|
||||
{
|
||||
using var mmcOperator = new SharedRef<IStorageDeviceOperator>();
|
||||
Result rc = service.GetMmcOperator(ref mmcOperator.Ref(), MmcPartition.UserData);
|
||||
Result rc = service.GetMmcOperator(ref mmcOperator.Ref(), partition);
|
||||
if (rc.IsFailure()) return rc;
|
||||
|
||||
return mmcOperator.Get.Operate(MakeOperationId(MmcOperationIdValue.Erase));
|
||||
|
@ -157,7 +173,7 @@ internal static class MmcService
|
|||
UnsafeHelpers.SkipParamInit(out size);
|
||||
|
||||
using var mmcOperator = new SharedRef<IStorageDeviceOperator>();
|
||||
Result rc = service.GetMmcOperator(ref mmcOperator.Ref(), MmcPartition.UserData);
|
||||
Result rc = service.GetMmcOperator(ref mmcOperator.Ref(), partition);
|
||||
if (rc.IsFailure()) return rc;
|
||||
|
||||
int operationId = MakeOperationId(MmcOperationIdValue.GetPartitionSize);
|
||||
|
@ -242,7 +258,7 @@ internal static class MmcService
|
|||
return mmcOperator.Get.OperateOut2(out _, successCountBuffer, out _, failureCountBuffer, operationId);
|
||||
}
|
||||
|
||||
public static Result SuspendSdmmcControl(this StorageService service)
|
||||
public static Result SuspendMmcControl(this StorageService service)
|
||||
{
|
||||
using var mmcOperator = new SharedRef<IStorageDeviceOperator>();
|
||||
Result rc = service.GetMmcManagerOperator(ref mmcOperator.Ref());
|
||||
|
@ -259,4 +275,4 @@ internal static class MmcService
|
|||
|
||||
return mmcOperator.Get.Operate(MakeOperationId(MmcManagerOperationIdValue.ResumeControl));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -14,13 +14,16 @@ using IStorageSf = LibHac.FsSrv.Sf.IStorage;
|
|||
|
||||
namespace LibHac.FsSrv.Storage;
|
||||
|
||||
/// <summary>
|
||||
/// Contains functions for interacting with the SD card storage device.
|
||||
/// </summary>
|
||||
/// <remarks>Based on FS 13.1.0 (nnSdk 13.4.0)</remarks>
|
||||
internal static class SdCardService
|
||||
{
|
||||
private static int MakeOperationId(SdCardManagerOperationIdValue operation) => (int)operation;
|
||||
private static int MakeOperationId(SdCardOperationIdValue operation) => (int)operation;
|
||||
|
||||
private static Result GetSdCardManager(this StorageService service,
|
||||
ref SharedRef<IStorageDeviceManager> outManager)
|
||||
private static Result GetSdCardManager(this StorageService service, ref SharedRef<IStorageDeviceManager> outManager)
|
||||
{
|
||||
return service.CreateStorageDeviceManager(ref outManager, StorageDevicePortId.SdCard);
|
||||
}
|
||||
|
@ -280,4 +283,4 @@ internal static class SdCardService
|
|||
|
||||
return sdCardOperator.Get.Operate(MakeOperationId(SdCardManagerOperationIdValue.ResumeControl));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -10,23 +10,23 @@ public enum SdCardManagerOperationIdValue
|
|||
|
||||
public enum SdCardOperationIdValue
|
||||
{
|
||||
GetSpeedMode = 0x1,
|
||||
GetCid = 0x2,
|
||||
GetUserAreaNumSectors = 0x3,
|
||||
GetUserAreaSize = 0x4,
|
||||
GetProtectedAreaNumSectors = 0x5,
|
||||
GetProtectedAreaSize = 0x6
|
||||
GetSpeedMode = 1,
|
||||
GetCid = 2,
|
||||
GetUserAreaNumSectors = 3,
|
||||
GetUserAreaSize = 4,
|
||||
GetProtectedAreaNumSectors = 5,
|
||||
GetProtectedAreaSize = 6
|
||||
}
|
||||
|
||||
public enum MmcManagerOperationIdValue
|
||||
{
|
||||
GetAndClearErrorInfo = 0x1,
|
||||
SuspendControl = 0x2,
|
||||
ResumeControl = 0x3,
|
||||
GetAndClearPatrolReadAllocateBufferCount = 0x4,
|
||||
GetPatrolCount = 0x5,
|
||||
SuspendPatrol = 0x6,
|
||||
ResumePatrol = 0x7
|
||||
GetAndClearErrorInfo = 1,
|
||||
SuspendControl = 2,
|
||||
ResumeControl = 3,
|
||||
GetAndClearPatrolReadAllocateBufferCount = 4,
|
||||
GetPatrolCount = 5,
|
||||
SuspendPatrol = 6,
|
||||
ResumePatrol = 7
|
||||
}
|
||||
|
||||
public enum MmcOperationIdValue
|
||||
|
@ -36,4 +36,4 @@ public enum MmcOperationIdValue
|
|||
GetPartitionSize = 3,
|
||||
GetExtendedCsd = 4,
|
||||
Erase = 5
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue