Result audinInitialize(void) { atomicIncrement64(&g_refCnt); if (serviceIsActive(&g_audinSrv)) return 0; Result rc = 0; rc = smGetService(&g_audinSrv, "audin:u"); // Setup the default device if (R_SUCCEEDED(rc)) { // Passing an empty device name will open the default "BuiltInHeadset" char DeviceNameIn[DEVICE_NAME_LENGTH] = {0}; char DeviceNameOut[DEVICE_NAME_LENGTH] = {0}; // Open audio input device rc = audinOpenAudioIn(DeviceNameIn, DeviceNameOut, DEFAULT_SAMPLE_RATE, DEFAULT_CHANNEL_COUNT, &g_sampleRate, &g_channelCount, &g_pcmFormat, &g_deviceState); } // Register global handle for buffer events if (R_SUCCEEDED(rc)) rc = _audinRegisterBufferEvent(&g_audinBufferEventHandle); if (R_FAILED(rc)) audinExit(); return rc; }
Result fsldrInitialize(void) { atomicIncrement64(&g_fsldrRefCnt); if (serviceIsActive(&g_fsldrSrv)) return 0; Result rc = smGetService(&g_fsldrSrv, "fsp-ldr"); if (R_SUCCEEDED(rc) && kernelAbove400()) { rc = fsldrSetCurrentProcess(); } return rc; }
Result smMitMInitialize(void) { atomicIncrement64(&g_refCnt); if (g_smMitmHandle != INVALID_HANDLE) return 0; Result rc = svcConnectToNamedPort(&g_smMitmHandle, "sm:"); if (R_SUCCEEDED(rc)) { IpcCommand c; ipcInitialize(&c); ipcSendPid(&c); struct { u64 magic; u64 cmd_id; u64 zero; u64 reserved[2]; } *raw; raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; raw->cmd_id = 0; raw->zero = 0; rc = ipcDispatch(g_smMitmHandle); if (R_SUCCEEDED(rc)) { IpcParsedCommand r; ipcParse(&r); struct { u64 magic; u64 result; } *resp = r.Raw; rc = resp->result; } } if (R_FAILED(rc)) smExit(); return rc; }
Result fsInitialize(void) { atomicIncrement64(&g_refCnt); if (serviceIsActive(&g_fsSrv)) return 0; Result rc = smGetService(&g_fsSrv, "fsp-srv"); if (R_SUCCEEDED(rc)) { IpcCommand c; ipcInitialize(&c); ipcSendPid(&c); struct { u64 magic; u64 cmd_id; u64 unk; } *raw; raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; raw->cmd_id = 1; raw->unk = 0; rc = serviceIpcDispatch(&g_fsSrv); if (R_SUCCEEDED(rc)) { IpcParsedCommand r; ipcParse(&r); struct { u64 magic; u64 result; } *resp = r.Raw; rc = resp->result; } } return rc; }