diff --git a/nx/source/services/nifm.c b/nx/source/services/nifm.c index 9b9933c4..3aab5f7e 100644 --- a/nx/source/services/nifm.c +++ b/nx/source/services/nifm.c @@ -12,140 +12,138 @@ static Service g_nifmSrv; static IGeneralService g_nifmIGS; static u64 g_refCnt; -static Result _nifmCreateGeneralService(IGeneralService * out, u64 in); -static Result _nifmCreateGeneralServiceOld(IGeneralService * out); +static Result _nifmCreateGeneralService(IGeneralService* out, u64 in); +static Result _nifmCreateGeneralServiceOld(IGeneralService* out); Result nifmInitialize(void) { - atomicIncrement64(&g_refCnt); - - if (serviceIsActive( & g_nifmSrv)) - return 0; - Result rc; + atomicIncrement64(&g_refCnt); - rc = smGetService( & g_nifmSrv, "nifm:u"); + if (serviceIsActive(&g_nifmSrv)) + return 0; + Result rc; - if (R_SUCCEEDED(rc)) { - if (kernelAbove200()) - rc = _nifmCreateGeneralService( & g_nifmIGS, 0); // What does this parameter do? - else - rc = _nifmCreateGeneralServiceOld( & g_nifmIGS); - } + rc = smGetService(&g_nifmSrv, "nifm:u"); - if (R_FAILED(rc)) - nifmExit(); + if (R_SUCCEEDED(rc)) { + if (kernelAbove200()) + rc = _nifmCreateGeneralService(&g_nifmIGS, 0); // What does this parameter do? + else + rc = _nifmCreateGeneralServiceOld(&g_nifmIGS); + } - return rc; + if (R_FAILED(rc)) + nifmExit(); + + return rc; } void nifmExit(void) { - if (atomicDecrement64(&g_refCnt) == 0){ - serviceClose( & g_nifmIGS.s); - serviceClose( & g_nifmSrv); - } + if (atomicDecrement64(&g_refCnt) == 0) { + serviceClose(&g_nifmIGS.s); + serviceClose(&g_nifmSrv); + } } -Result nifmGetCurrentIpAddress(u32 * out) { - IpcCommand c; - ipcInitialize( & c); - - struct { - u64 magic; - u64 cmd_id; - } * raw; - - raw = ipcPrepareHeader( & c, sizeof( * raw)); - - raw -> magic = SFCI_MAGIC; - raw -> cmd_id = 12; - - Result rc = serviceIpcDispatch(&g_nifmIGS.s); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse( & r); +Result nifmGetCurrentIpAddress(u32* out) { + IpcCommand c; + ipcInitialize(&c); struct { - u64 magic; - u64 result; - u32 out; - } * resp = r.Raw; + u64 magic; + u64 cmd_id; + } * raw; - rc = resp -> result; * out = resp -> out; - } + raw = ipcPrepareHeader(&c, sizeof(*raw)); - return rc; - + raw->magic = SFCI_MAGIC; + raw->cmd_id = 12; + + Result rc = serviceIpcDispatch(&g_nifmIGS.s); + + if (R_SUCCEEDED(rc)) { + IpcParsedCommand r; + ipcParse(&r); + + struct { + u64 magic; + u64 result; + u32 out; + }* resp = r.Raw; + + rc = resp->result; + *out = resp->out; + } + + return rc; } -static Result _nifmCreateGeneralService(IGeneralService * out, u64 in) { - IpcCommand c; - ipcInitialize( & c); - ipcSendPid( & c); - - struct { - u64 magic; - u64 cmd_id; - u64 param; - } - PACKED * raw; - - raw = ipcPrepareHeader( & c, sizeof( * raw)); - - raw -> magic = SFCI_MAGIC; - raw -> cmd_id = 5; - raw -> param = in ; - - Result rc = serviceIpcDispatch( & g_nifmSrv); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse(&r); +static Result _nifmCreateGeneralService(IGeneralService* out, u64 in) { + IpcCommand c; + ipcInitialize(&c); + ipcSendPid(&c); struct { - u64 magic; - u64 result; - } * resp = r.Raw; + u64 magic; + u64 cmd_id; + u64 param; + } PACKED* raw; - rc = resp -> result; + raw = ipcPrepareHeader(&c, sizeof(*raw)); - if (R_SUCCEEDED(rc)) - serviceCreate(&out->s, r.Handles[0]); - } + raw->magic = SFCI_MAGIC; + raw->cmd_id = 5; + raw->param = in; - return rc; + Result rc = serviceIpcDispatch(&g_nifmSrv); + + if (R_SUCCEEDED(rc)) { + IpcParsedCommand r; + ipcParse(&r); + + struct { + u64 magic; + u64 result; + }* resp = r.Raw; + + rc = resp->result; + + if (R_SUCCEEDED(rc)) + serviceCreate(&out->s, r.Handles[0]); + } + + return rc; } -static Result _nifmCreateGeneralServiceOld(IGeneralService * out) { - IpcCommand c; - ipcInitialize(&c); - - struct { - u64 magic; - u64 cmd_id; - } - PACKED * raw; - - raw = ipcPrepareHeader( & c, sizeof( * raw)); - - raw -> magic = SFCI_MAGIC; - raw -> cmd_id = 4; - - Result rc = serviceIpcDispatch( & g_nifmSrv); - - if (R_SUCCEEDED(rc)) { - IpcParsedCommand r; - ipcParse(&r); +static Result _nifmCreateGeneralServiceOld(IGeneralService* out) { + IpcCommand c; + ipcInitialize(&c); struct { - u64 magic; - u64 result; - } * resp = r.Raw; + u64 magic; + u64 cmd_id; + } PACKED* raw; - rc = resp -> result; + raw = ipcPrepareHeader(&c, sizeof(*raw)); - if (R_SUCCEEDED(rc)) - serviceCreate(&out->s, r.Handles[0]); - } + raw->magic = SFCI_MAGIC; + raw->cmd_id = 4; - return rc; + Result rc = serviceIpcDispatch(&g_nifmSrv); + + if (R_SUCCEEDED(rc)) { + IpcParsedCommand r; + ipcParse(&r); + + struct { + u64 magic; + u64 result; + }* resp = r.Raw; + + rc = resp->result; + + if (R_SUCCEEDED(rc)) + serviceCreate(&out->s, r.Handles[0]); + } + + return rc; }