nfc: pass an NfpuInitConfig when initializing

This commit is contained in:
averne 2019-02-15 12:03:05 +09:00 committed by fincs
parent c3b934b69a
commit 246c6267f4
2 changed files with 8 additions and 10 deletions

View File

@ -128,7 +128,7 @@ typedef enum {
NfpuMountTarget_All = 3, NfpuMountTarget_All = 3,
} NfpuMountTarget; } NfpuMountTarget;
Result nfpuInitialize(const void *config, size_t config_size); Result nfpuInitialize(const NfpuInitConfig *config);
void nfpuExit(void); void nfpuExit(void);
Service* nfpuGetInterface(void); Service* nfpuGetInterface(void);

View File

@ -21,7 +21,7 @@ static const NfpuInitConfig g_nfpuDefaultInitConfig = {
}; };
static Result _nfpuCreateInterface(Service* srv, Service* out); static Result _nfpuCreateInterface(Service* srv, Service* out);
static Result _nfpuInterfaceInitialize(Service* srv, u64 cmd_id, u64 aruid, const void *config, size_t config_size); static Result _nfpuInterfaceInitialize(Service* srv, u64 cmd_id, u64 aruid, const NfpuInitConfig *config);
static Result _nfpuInterfaceFinalize(Service* srv, u64 cmd_id); static Result _nfpuInterfaceFinalize(Service* srv, u64 cmd_id);
static Result _nfpuInterfaceCmdNoInOut(Service* srv, u64 cmd_id); static Result _nfpuInterfaceCmdNoInOut(Service* srv, u64 cmd_id);
@ -29,16 +29,14 @@ static Result _nfpuInterfaceCmdInIdNoOut(Service* srv, u64 cmd_id, HidController
static Result _nfpuInterfaceCmdInIdOutEvent(Service* srv, u64 cmd_id, HidControllerID id, Event *out); static Result _nfpuInterfaceCmdInIdOutEvent(Service* srv, u64 cmd_id, HidControllerID id, Event *out);
static Result _nfpuInterfaceCmdInIdOutBuffer(Service* srv, u64 cmd_id, HidControllerID id, void* buf, size_t buf_size); static Result _nfpuInterfaceCmdInIdOutBuffer(Service* srv, u64 cmd_id, HidControllerID id, void* buf, size_t buf_size);
Result nfpuInitialize(const void *config, size_t config_size) { Result nfpuInitialize(const NfpuInitConfig *config) {
atomicIncrement64(&g_refCnt); atomicIncrement64(&g_refCnt);
if (serviceIsActive(&g_nfpuInterface) && serviceIsActive(&g_nfcuInterface)) if (serviceIsActive(&g_nfpuInterface) && serviceIsActive(&g_nfcuInterface))
return 0; return 0;
if (config == NULL) { if (config == NULL)
config = &g_nfpuDefaultInitConfig; config = &g_nfpuDefaultInitConfig;
config_size = sizeof(g_nfpuDefaultInitConfig);
}
// If this fails (for example because we're a sysmodule) aruid stays zero // If this fails (for example because we're a sysmodule) aruid stays zero
u64 aruid = 0; u64 aruid = 0;
@ -54,7 +52,7 @@ Result nfpuInitialize(const void *config, size_t config_size) {
rc = _nfpuCreateInterface(&g_nfpuSrv, &g_nfpuInterface); rc = _nfpuCreateInterface(&g_nfpuSrv, &g_nfpuInterface);
if (R_SUCCEEDED(rc)) if (R_SUCCEEDED(rc))
rc = _nfpuInterfaceInitialize(&g_nfpuInterface, 0, aruid, config, config_size); rc = _nfpuInterfaceInitialize(&g_nfpuInterface, 0, aruid, config);
// nfc:user // nfc:user
if (R_SUCCEEDED(rc)) if (R_SUCCEEDED(rc))
@ -67,7 +65,7 @@ Result nfpuInitialize(const void *config, size_t config_size) {
rc = _nfpuCreateInterface(&g_nfcuSrv, &g_nfcuInterface); rc = _nfpuCreateInterface(&g_nfcuSrv, &g_nfcuInterface);
if (R_SUCCEEDED(rc)) if (R_SUCCEEDED(rc))
rc = _nfpuInterfaceInitialize(&g_nfcuInterface, kernelAbove400() ? 0 : 400, aruid, config, config_size); rc = _nfpuInterfaceInitialize(&g_nfcuInterface, kernelAbove400() ? 0 : 400, aruid, config);
if (R_FAILED(rc)) if (R_FAILED(rc))
nfpuExit(); nfpuExit();
@ -264,11 +262,11 @@ static Result _nfpuInterfaceCmdInIdOutBuffer(Service* srv, u64 cmd_id, HidContro
return rc; return rc;
} }
static Result _nfpuInterfaceInitialize(Service* srv, u64 cmd_id, u64 aruid, const void *config, size_t config_size) { static Result _nfpuInterfaceInitialize(Service* srv, u64 cmd_id, u64 aruid, const NfpuInitConfig *config) {
IpcCommand c; IpcCommand c;
ipcInitialize(&c); ipcInitialize(&c);
ipcAddSendBuffer(&c, config, config_size, BufferType_Normal); ipcAddSendBuffer(&c, config, sizeof(NfpuInitConfig), BufferType_Normal);
ipcSendPid(&c); ipcSendPid(&c);
struct { struct {