diff --git a/nx/include/switch/services/nifm.h b/nx/include/switch/services/nifm.h index c8cf1a25..5248f542 100644 --- a/nx/include/switch/services/nifm.h +++ b/nx/include/switch/services/nifm.h @@ -6,10 +6,7 @@ */ #pragma once - #include "../kernel/ipc.h" -#include "../kernel/detect.h" - #include "../services/sm.h" Result nifmInitialize(void); diff --git a/nx/source/applets/swkbd.c b/nx/source/applets/swkbd.c index afac4f17..7088e82f 100644 --- a/nx/source/applets/swkbd.c +++ b/nx/source/applets/swkbd.c @@ -3,10 +3,10 @@ #include #include "types.h" #include "result.h" -#include "kernel/detect.h" #include "services/applet.h" #include "applets/libapplet.h" #include "applets/swkbd.h" +#include "runtime/hosversion.h" #include "runtime/util/utf.h" static Result _swkbdGetReplies(SwkbdInline* s); @@ -51,19 +51,17 @@ static void _swkbdConfigClear(SwkbdConfig* c) { } static void _swkbdInitVersion(u32* version) { - *version=0x5;//1.0.0+ version - if (kernelAbove500()) { + u32 hosver = hosversionGet(); + if (hosver >= MAKEHOSVERSION(5,0,0)) *version = 0x50009; - } - else if (kernelAbove400()) { + else if (hosver >= MAKEHOSVERSION(4,0,0)) *version = 0x40008; - } - else if (kernelAbove300()) { + else if (hosver >= MAKEHOSVERSION(3,0,0)) *version = 0x30007; - } - else if (kernelAbove200()) { + else if (hosver >= MAKEHOSVERSION(2,0,0)) *version = 0x10006; - } + else + *version=0x5;//1.0.0+ version } Result swkbdCreate(SwkbdConfig* c, s32 max_dictwords) { diff --git a/nx/source/display/binder.c b/nx/source/display/binder.c index 6ee7e26d..a482ff35 100644 --- a/nx/source/display/binder.c +++ b/nx/source/display/binder.c @@ -2,7 +2,7 @@ #include "types.h" #include "result.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/vi.h" #include "display/binder.h" @@ -47,7 +47,7 @@ Result binderInitSession(Binder* b) } // Use TransactParcelAuto when available. - if (kernelAbove300()) + if (hosversionAtLeast(3,0,0)) b->has_transact_auto = true; return rc; diff --git a/nx/source/kernel/virtmem.c b/nx/source/kernel/virtmem.c index 5dc7dd15..de315a56 100644 --- a/nx/source/kernel/virtmem.c +++ b/nx/source/kernel/virtmem.c @@ -1,7 +1,6 @@ #include "types.h" #include "result.h" #include "services/fatal.h" -#include "kernel/detect.h" #include "kernel/mutex.h" #include "kernel/svc.h" #include "kernel/virtmem.h" diff --git a/nx/source/nvidia/fence.c b/nx/source/nvidia/fence.c index b1ba4980..83b8acda 100644 --- a/nx/source/nvidia/fence.c +++ b/nx/source/nvidia/fence.c @@ -3,7 +3,7 @@ #include "arm/atomics.h" #include "kernel/svc.h" #include "kernel/event.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/nv.h" #include "nvidia/fence.h" @@ -138,7 +138,7 @@ static Result _nvFenceWait_100(NvFence* f, s32 timeout_us) Result nvFenceWait(NvFence* f, s32 timeout_us) { - if (kernelAbove200()) + if (hosversionAtLeast(2,0,0)) return _nvFenceWait_200(f, timeout_us); else return _nvFenceWait_100(f, timeout_us); diff --git a/nx/source/nvidia/gpu_channel.c b/nx/source/nvidia/gpu_channel.c index 1ecf8cbd..afe73ca4 100644 --- a/nx/source/nvidia/gpu_channel.c +++ b/nx/source/nvidia/gpu_channel.c @@ -3,7 +3,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/svc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/nv.h" #include "nvidia/ioctl.h" #include "nvidia/map.h" @@ -88,7 +88,7 @@ static Result _nvGpuChannelKickoffRaw(NvGpuChannel* c, u32 flags) fence.id = 0; fence.value = c->fence_incr; - if (kernelAbove400()) + if (hosversionAtLeast(4,0,0)) return nvioctlChannel_KickoffPb(c->base.fd, c->entries, c->num_entries, flags, &fence); else return nvioctlChannel_SubmitGpfifo(c->base.fd, c->entries, c->num_entries, flags, &fence); diff --git a/nx/source/runtime/devices/usb_comms.c b/nx/source/runtime/devices/usb_comms.c index 7464881e..cadd3f53 100644 --- a/nx/source/runtime/devices/usb_comms.c +++ b/nx/source/runtime/devices/usb_comms.c @@ -2,11 +2,11 @@ #include #include "types.h" #include "result.h" -#include "kernel/detect.h" #include "kernel/rwlock.h" #include "services/fatal.h" #include "services/usb.h" #include "services/usbds.h" +#include "runtime/hosversion.h" #include "runtime/devices/usb_comms.h" #define TOTAL_INTERFACES 4 @@ -56,7 +56,7 @@ Result usbCommsInitializeEx(u32 num_interfaces, const UsbCommsInterfaceInfo *inf rc = usbDsInitialize(); if (R_SUCCEEDED(rc)) { - if (kernelAbove500()) { + if (hosversionAtLeast(5,0,0)) { u8 iManufacturer, iProduct, iSerialNumber; static const u16 supported_langs[1] = {0x0409}; // Send language descriptor @@ -137,7 +137,7 @@ Result usbCommsInitializeEx(u32 num_interfaces, const UsbCommsInterfaceInfo *inf } } - if (R_SUCCEEDED(rc) && kernelAbove500()) { + if (R_SUCCEEDED(rc) && hosversionAtLeast(5,0,0)) { rc = usbDsEnable(); } @@ -208,7 +208,7 @@ void usbCommsExit(void) static Result _usbCommsInterfaceInit(u32 intf_ind, const UsbCommsInterfaceInfo *info) { - if (kernelAbove500()) { + if (hosversionAtLeast(5,0,0)) { return _usbCommsInterfaceInit5x(intf_ind, info); } else { return _usbCommsInterfaceInit1x(intf_ind, info); diff --git a/nx/source/services/applet.c b/nx/source/services/applet.c index c9817673..f498fd36 100644 --- a/nx/source/services/applet.c +++ b/nx/source/services/applet.c @@ -3,7 +3,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "kernel/tmem.h" #include "kernel/event.h" #include "services/fatal.h" @@ -11,6 +10,7 @@ #include "services/apm.h" #include "services/sm.h" #include "runtime/env.h" +#include "runtime/hosversion.h" __attribute__((weak)) u32 __nx_applet_type = AppletType_Default; __attribute__((weak)) bool __nx_applet_auto_notifyrunning = true; @@ -432,7 +432,7 @@ Result appletSetFocusHandlingMode(AppletFocusHandlingMode mode) { rc = _appletSetFocusHandlingMode(invals[0], invals[1], invals[2]); - if (R_SUCCEEDED(rc) && kernelAbove200()) + if (R_SUCCEEDED(rc) && hosversionAtLeast(2,0,0)) rc = _appletSetOutOfFocusSuspendingEnabled(invals[3]); return rc; @@ -1010,7 +1010,7 @@ Result appletIsGamePlayRecordingSupported(bool *flag) { if (!serviceIsActive(&g_appletSrv) || !_appletIsRegularApplication()) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); struct { @@ -1047,7 +1047,7 @@ static Result _appletInitializeGamePlayRecording(TransferMemory *tmem) { if (!serviceIsActive(&g_appletSrv) || !_appletIsRegularApplication()) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); return _appletCmdInTmem(&g_appletIFunctions, NULL, 66, tmem); @@ -1060,7 +1060,7 @@ Result appletSetGamePlayRecordingState(bool state) { if (!serviceIsActive(&g_appletSrv) || !_appletIsRegularApplication() || g_appletRecordingInitialized==0) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); struct { @@ -1102,7 +1102,7 @@ Result appletInitializeGamePlayRecording(void) { //These checks are done in the called applet funcs, but do it here too so that tmemCreate() doesn't run when it's not needed. if (!serviceIsActive(&g_appletSrv) || !_appletIsRegularApplication()) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); rc = tmemCreate(&g_appletRecordingTmem, size, Perm_None); @@ -1130,7 +1130,7 @@ Result appletQueryApplicationPlayStatistics(AppletApplicationPlayStatistics *sta if (!serviceIsActive(&g_appletSrv) || !_appletIsRegularApplication()) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove500()) + if (hosversionBefore(5,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); ipcAddRecvBuffer(&c, stats, count*sizeof(AppletApplicationPlayStatistics), BufferType_Normal); @@ -1520,7 +1520,7 @@ static Result _appletSetOutOfFocusSuspendingEnabled(u8 inval) { } Result appletSetScreenShotImageOrientation(s32 val) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; @@ -1666,7 +1666,7 @@ static Result _appletHolderCreate(AppletHolder *h, AppletId id, LibAppletMode mo if (R_SUCCEEDED(rc)) rc = _appletGetEvent(&h->s, &h->StateChangedEvent, 0, false);//GetAppletStateChangedEvent - if (R_SUCCEEDED(rc) && kernelAbove200() && h->mode == LibAppletMode_Unknown3) rc = _appletGetIndirectLayerConsumerHandle(&h->s, &h->layer_handle); + if (R_SUCCEEDED(rc) && hosversionAtLeast(2,0,0) && h->mode == LibAppletMode_Unknown3) rc = _appletGetIndirectLayerConsumerHandle(&h->s, &h->layer_handle); return rc; } @@ -1696,7 +1696,7 @@ Result appletHolderGetIndirectLayerConsumerHandle(AppletHolder *h, u64 *out) { return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); if (h->mode!=LibAppletMode_Unknown3) return MAKERESULT(Module_Libnx, LibnxError_BadInput); - if (!kernelAbove200()) + if (hosversionBefore(2,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); if (out) *out = h->layer_handle; @@ -1854,7 +1854,7 @@ Result appletCreateTransferMemoryStorage(AppletStorage *s, void* buffer, s64 siz } Result appletCreateHandleStorage(AppletStorage *s, s64 inval, Handle handle) { - if (!kernelAbove200()) + if (hosversionBefore(2,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); return _appletCmdInHandle64(&g_appletILibraryAppletCreator, &s->s, 12, handle, inval); @@ -2008,7 +2008,7 @@ Result appletStorageGetHandle(AppletStorage *s, s64 *out, Handle *handle) { if (!serviceIsActive(&s->s)) return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); - if (!kernelAbove200()) + if (hosversionBefore(2,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); rc = _appletGetSession(&s->s, &tmp_srv, 1);//OpenTransferStorage diff --git a/nx/source/services/auddev.c b/nx/source/services/auddev.c index 0c447c24..af81e630 100644 --- a/nx/source/services/auddev.c +++ b/nx/source/services/auddev.c @@ -4,7 +4,7 @@ #include "arm/atomics.h" #include "kernel/ipc.h" #include "kernel/event.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/auddev.h" #include "services/applet.h" #include "services/sm.h" @@ -87,7 +87,7 @@ static Result _auddevGetAudioDeviceService(Service* srv, Service* out_srv, u64 a } Result auddevListAudioDeviceName(AudioDeviceName *DeviceNames, s32 max_names, s32 *total_names) { - bool new_cmd = kernelAbove300(); + bool new_cmd = hosversionAtLeast(3,0,0); IpcCommand c; ipcInitialize(&c); @@ -128,7 +128,7 @@ Result auddevListAudioDeviceName(AudioDeviceName *DeviceNames, s32 max_names, s3 } Result auddevSetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float volume) { - bool new_cmd = kernelAbove300(); + bool new_cmd = hosversionAtLeast(3,0,0); IpcCommand c; ipcInitialize(&c); @@ -168,7 +168,7 @@ Result auddevSetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float } Result auddevGetAudioDeviceOutputVolume(const AudioDeviceName *DeviceName, float *volume) { - bool new_cmd = kernelAbove300(); + bool new_cmd = hosversionAtLeast(3,0,0); IpcCommand c; ipcInitialize(&c); diff --git a/nx/source/services/audren.c b/nx/source/services/audren.c index 1a2b7e06..a03f8124 100644 --- a/nx/source/services/audren.c +++ b/nx/source/services/audren.c @@ -5,7 +5,7 @@ #include "kernel/ipc.h" #include "kernel/tmem.h" #include "kernel/event.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/sm.h" #include "services/applet.h" #include "services/audren.h" @@ -56,11 +56,16 @@ Result audrenInitialize(const AudioRendererConfig* config) return MAKERESULT(Module_Libnx, LibnxError_BadInput); // Choose revision (i.e. if splitters are used then at least revision 2 must be used) - if (kernelAbove400()) + u32 hosver = hosversionGet(); + /*if (hosver >= MAKEHOSVERSION(6,1,0)) + g_audrenRevision = AUDREN_REVISION_6; + else if (hosver >= MAKEHOSVERSION(6,0,0)) + g_audrenRevision = AUDREN_REVISION_5; + else*/ if (hosver >= MAKEHOSVERSION(4,0,0)) g_audrenRevision = AUDREN_REVISION_4; - else if (kernelAbove300()) + else if (hosver >= MAKEHOSVERSION(3,0,0)) g_audrenRevision = AUDREN_REVISION_3; - else if (kernelAbove200()) + else if (hosver >= MAKEHOSVERSION(2,0,0)) g_audrenRevision = AUDREN_REVISION_2; else g_audrenRevision = AUDREN_REVISION_1; diff --git a/nx/source/services/bpc.c b/nx/source/services/bpc.c index 15e31992..b9804609 100644 --- a/nx/source/services/bpc.c +++ b/nx/source/services/bpc.c @@ -2,7 +2,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/bpc.h" #include "services/sm.h" @@ -18,7 +18,7 @@ Result bpcInitialize(void) if (serviceIsActive(&g_bpcSrv)) return 0; - rc = smGetService(&g_bpcSrv, kernelAbove200() ? "bpc" : "bpc:c"); + rc = smGetService(&g_bpcSrv, hosversionAtLeast(2,0,0) ? "bpc" : "bpc:c"); return rc; } diff --git a/nx/source/services/capssc.c b/nx/source/services/capssc.c index fdeeb90b..fa449f10 100644 --- a/nx/source/services/capssc.c +++ b/nx/source/services/capssc.c @@ -2,7 +2,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/caps.h" #include "services/capssc.h" #include "services/sm.h" @@ -18,7 +18,7 @@ Result capsscInitialize(void) { if (serviceIsActive(&g_capsscSrv)) return 0; - if (!kernelAbove200()) + if (hosversionBefore(2,0,0)) rc = MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); if (R_SUCCEEDED(rc)) rc = smGetService(&g_capsscSrv, "caps:sc"); diff --git a/nx/source/services/capssu.c b/nx/source/services/capssu.c index b9f96a26..554090ec 100644 --- a/nx/source/services/capssu.c +++ b/nx/source/services/capssu.c @@ -3,7 +3,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/applet.h" #include "services/caps.h" #include "services/capssu.h" @@ -20,7 +20,7 @@ Result capssuInitialize(void) { if (serviceIsActive(&g_capssuSrv)) return 0; - if (!kernelAbove400()) + if (hosversionBefore(4,0,0)) rc = MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); if (R_SUCCEEDED(rc)) rc = smGetService(&g_capssuSrv, "caps:su"); diff --git a/nx/source/services/csrng.c b/nx/source/services/csrng.c index c0ca300d..8ab34f32 100644 --- a/nx/source/services/csrng.c +++ b/nx/source/services/csrng.c @@ -4,7 +4,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/csrng.h" #include "services/sm.h" #include "services/spl.h" diff --git a/nx/source/services/fs.c b/nx/source/services/fs.c index 59d5a119..b6cb44a7 100644 --- a/nx/source/services/fs.c +++ b/nx/source/services/fs.c @@ -4,7 +4,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/fs.h" #include "services/sm.h" @@ -427,7 +427,7 @@ Result fsOpenSdCardDetectionEventNotifier(FsEventNotifier* out) { Result fsIsExFatSupported(bool* out) { - if (!kernelAbove200()) { + if (hosversionBefore(2,0,0)) { *out = false; return 0; } @@ -502,7 +502,7 @@ Result fsOpenFileSystemWithId(FsFileSystem* out, u64 titleId, FsFileSystemType f ipcInitialize(&c); ipcAddSendStatic(&c, sendStr, sizeof(sendStr), 0); - if (kernelAbove200()) { + if (hosversionAtLeast(2,0,0)) { struct { u64 magic; u64 cmd_id; @@ -1018,7 +1018,7 @@ Result fsFsGetTotalSpace(FsFileSystem* fs, const char* path, u64* out) { } Result fsFsCleanDirectoryRecursively(FsFileSystem* fs, const char* path) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; @@ -1054,7 +1054,7 @@ Result fsFsCleanDirectoryRecursively(FsFileSystem* fs, const char* path) { } Result fsFsGetFileTimeStampRaw(FsFileSystem* fs, const char* path, FsTimeStampRaw *out) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); char send_path[FS_MAX_PATH] = {0}; @@ -1096,7 +1096,7 @@ Result fsFsGetFileTimeStampRaw(FsFileSystem* fs, const char* path, FsTimeStampRa } Result fsFsQueryEntry(FsFileSystem* fs, void *out, size_t out_size, const void *in, size_t in_size, const char* path, FsFileSystemQueryType query_type) { - if (!kernelAbove400()) + if (hosversionBefore(4,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); char send_path[FS_MAX_PATH] = {0}; diff --git a/nx/source/services/fsldr.c b/nx/source/services/fsldr.c index 7ea45287..e698e176 100644 --- a/nx/source/services/fsldr.c +++ b/nx/source/services/fsldr.c @@ -4,7 +4,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/fs.h" #include "services/sm.h" #include "services/fsldr.h" @@ -26,7 +26,7 @@ Result fsldrInitialize(void) { rc = serviceConvertToDomain(&g_fsldrSrv); } - if (R_SUCCEEDED(rc) && kernelAbove400()) { + if (R_SUCCEEDED(rc) && hosversionAtLeast(4,0,0)) { rc = fsldrSetCurrentProcess(); } diff --git a/nx/source/services/fspr.c b/nx/source/services/fspr.c index adbeb1ea..2fc7077b 100644 --- a/nx/source/services/fspr.c +++ b/nx/source/services/fspr.c @@ -4,7 +4,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/fs.h" #include "services/sm.h" #include "services/fspr.h" @@ -24,7 +24,7 @@ Result fsprInitialize(void) { Result rc = smGetService(&g_fsprSrv, "fsp-pr"); - if (R_SUCCEEDED(rc) && kernelAbove400()) { + if (R_SUCCEEDED(rc) && hosversionAtLeast(4,0,0)) { rc = fsprSetCurrentProcess(); if (R_FAILED(rc)) { fsprExit(); diff --git a/nx/source/services/gpio.c b/nx/source/services/gpio.c index c0f08d84..5e8b28a3 100644 --- a/nx/source/services/gpio.c +++ b/nx/source/services/gpio.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/gpio.h" #include "services/sm.h" diff --git a/nx/source/services/hwopus.c b/nx/source/services/hwopus.c index 0486b367..9e4892e6 100644 --- a/nx/source/services/hwopus.c +++ b/nx/source/services/hwopus.c @@ -3,10 +3,10 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "kernel/tmem.h" #include "services/hwopus.h" #include "services/sm.h" +#include "runtime/hosversion.h" static Result _hwopusInitialize(Service* srv, Service* out_srv, TransferMemory *tmem, s32 SampleRate, s32 ChannelCount); static Result _hwopusGetWorkBufferSize(Service* srv, u32 *size, s32 SampleRate, s32 ChannelCount); @@ -52,7 +52,7 @@ Result hwopusDecoderMultistreamInitialize(HwopusDecoder* decoder, s32 SampleRate if (serviceIsActive(&decoder->s)) return 0; - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); if (ChannelCount < 0 || ChannelCount > sizeof(state.channel_mapping)) @@ -250,8 +250,8 @@ static Result _hwopusGetWorkBufferSizeForMultiStream(Service* srv, u32 *size, Hw } Result hwopusDecodeInterleaved(HwopusDecoder* decoder, s32 *DecodedDataSize, s32 *DecodedSampleCount, const void* opusin, size_t opusin_size, s16 *pcmbuf, size_t pcmbuf_size) { - if (kernelAbove600()) return _hwopusDecodeInterleaved(decoder, DecodedDataSize, DecodedSampleCount, NULL, 0, opusin, opusin_size, pcmbuf, pcmbuf_size); - if (kernelAbove400()) return _hwopusDecodeInterleavedWithPerfOld(decoder, DecodedDataSize, DecodedSampleCount, NULL, opusin, opusin_size, pcmbuf, pcmbuf_size); + if (hosversionAtLeast(6,0,0)) return _hwopusDecodeInterleaved(decoder, DecodedDataSize, DecodedSampleCount, NULL, 0, opusin, opusin_size, pcmbuf, pcmbuf_size); + if (hosversionAtLeast(4,0,0)) return _hwopusDecodeInterleavedWithPerfOld(decoder, DecodedDataSize, DecodedSampleCount, NULL, opusin, opusin_size, pcmbuf, pcmbuf_size); IpcCommand c; ipcInitialize(&c); diff --git a/nx/source/services/i2c.c b/nx/source/services/i2c.c index e57685dc..ed6b7fc3 100644 --- a/nx/source/services/i2c.c +++ b/nx/source/services/i2c.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/i2c.h" #include "services/sm.h" diff --git a/nx/source/services/lbl.c b/nx/source/services/lbl.c index cdeafbb6..e4b59806 100644 --- a/nx/source/services/lbl.c +++ b/nx/source/services/lbl.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/lbl.h" #include "services/sm.h" diff --git a/nx/source/services/nfc.c b/nx/source/services/nfc.c index 88d6af50..805d751d 100644 --- a/nx/source/services/nfc.c +++ b/nx/source/services/nfc.c @@ -1,7 +1,7 @@ #include #include "types.h" #include "arm/atomics.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/hid.h" #include "services/applet.h" #include "services/nfc.h" @@ -65,7 +65,7 @@ Result nfpuInitialize(const NfpuInitConfig *config) { rc = _nfpuCreateInterface(&g_nfcuSrv, &g_nfcuInterface); if (R_SUCCEEDED(rc)) - rc = _nfpuInterfaceInitialize(&g_nfcuInterface, kernelAbove400() ? 0 : 400, aruid, config); + rc = _nfpuInterfaceInitialize(&g_nfcuInterface, hosversionAtLeast(4,0,0) ? 0 : 400, aruid, config); if (R_FAILED(rc)) nfpuExit(); @@ -76,7 +76,7 @@ Result nfpuInitialize(const NfpuInitConfig *config) { void nfpuExit(void) { if (atomicDecrement64(&g_refCnt) == 0) { _nfpuInterfaceFinalize(&g_nfpuInterface, 1); - _nfpuInterfaceFinalize(&g_nfcuInterface, kernelAbove400() ? 1 : 401); + _nfpuInterfaceFinalize(&g_nfcuInterface, hosversionAtLeast(4,0,0) ? 1 : 401); serviceClose(&g_nfpuInterface); serviceClose(&g_nfcuInterface); serviceClose(&g_nfpuSrv); @@ -747,7 +747,7 @@ Result nfpuIsNfcEnabled(bool *out) { raw = serviceIpcPrepareHeader(&g_nfcuInterface, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 3 : 403; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 3 : 403; Result rc = serviceIpcDispatch(&g_nfcuInterface); diff --git a/nx/source/services/nifm.c b/nx/source/services/nifm.c index 8c421bb8..68dd0fd1 100644 --- a/nx/source/services/nifm.c +++ b/nx/source/services/nifm.c @@ -7,6 +7,7 @@ #include "services/nifm.h" #include "arm/atomics.h" +#include "runtime/hosversion.h" static Service g_nifmSrv; static Service g_nifmIGS; @@ -27,7 +28,7 @@ Result nifmInitialize(void) { if (R_SUCCEEDED(rc)) rc = serviceConvertToDomain(&g_nifmSrv); if (R_SUCCEEDED(rc)) { - if (kernelAbove300()) + if (hosversionAtLeast(3,0,0)) rc = _nifmCreateGeneralService(&g_nifmIGS, 0); // What does this parameter do? else rc = _nifmCreateGeneralServiceOld(&g_nifmIGS); diff --git a/nx/source/services/ns.c b/nx/source/services/ns.c index 5303195a..6fcbc492 100644 --- a/nx/source/services/ns.c +++ b/nx/source/services/ns.c @@ -2,7 +2,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/sm.h" #include "services/ns.h" @@ -20,7 +20,7 @@ Result nsInitialize(void) if (serviceIsActive(&g_nsGetterSrv) || serviceIsActive(&g_nsAppManSrv)) return 0; - if(!kernelAbove300()) + if(hosversionBefore(3,0,0)) return smGetService(&g_nsAppManSrv, "ns:am"); rc = smGetService(&g_nsGetterSrv, "ns:am2");//TODO: Support the other services?(Only useful when ns:am2 isn't accessible) @@ -37,7 +37,7 @@ void nsExit(void) { if (atomicDecrement64(&g_nsRefCnt) == 0) { serviceClose(&g_nsAppManSrv); - if(!kernelAbove300()) return; + if(hosversionBefore(3,0,0)) return; serviceClose(&g_nsGetterSrv); } @@ -285,7 +285,7 @@ Result nsGetFreeSpaceSize(FsStorageId storage_id, u64 *size) Result nsvmInitialize(void) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return 0; atomicIncrement64(&g_nsvmRefCnt); @@ -298,7 +298,7 @@ Result nsvmInitialize(void) void nsvmExit(void) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return; if (atomicDecrement64(&g_nsvmRefCnt) == 0) { @@ -322,7 +322,7 @@ Result nsvmNeedsUpdateVulnerability(bool *out) { Result rc; - if (kernelAbove300()) + if (hosversionAtLeast(3,0,0)) rc = serviceIpcDispatch(&g_nsvmSrv); else rc = serviceIpcDispatch(&g_nsAppManSrv); @@ -347,7 +347,7 @@ Result nsvmNeedsUpdateVulnerability(bool *out) { Result nsvmGetSafeSystemVersion(u16 *out) { - if (!kernelAbove300()) + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; @@ -733,7 +733,7 @@ Result nsdevLaunchApplicationWithStorageId(u64* out_pid, u64 app_title_id, u32 f } Result nsdevIsSystemMemoryResourceLimitBoosted(bool* out) { - if (!kernelAbove600()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(6,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -772,7 +772,7 @@ Result nsdevIsSystemMemoryResourceLimitBoosted(bool* out) { } Result nsdevGetRunningApplicationProcessId(u64* out_pid) { - if (!kernelAbove600()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(6,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -811,7 +811,7 @@ Result nsdevGetRunningApplicationProcessId(u64* out_pid) { } Result nsdevSetCurrentApplicationRightsEnvironmentCanBeActive(bool can_be_active) { - if (!kernelAbove600()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(6,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); diff --git a/nx/source/services/pcv.c b/nx/source/services/pcv.c index b594dde6..6c7f9860 100644 --- a/nx/source/services/pcv.c +++ b/nx/source/services/pcv.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/pcv.h" #include "services/sm.h" diff --git a/nx/source/services/pm.c b/nx/source/services/pm.c index 060f5e82..e54c83fb 100644 --- a/nx/source/services/pm.c +++ b/nx/source/services/pm.c @@ -3,7 +3,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/pm.h" #include "services/sm.h" @@ -74,7 +74,7 @@ Result pmdmntGetDebugProcesses(u32* out_count, u64* out_pids, size_t max_pids) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 0 : 1; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 0 : 1; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -111,7 +111,7 @@ Result pmdmntStartProcess(u64 pid) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 1 : 2; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 1 : 2; raw->pid = pid; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -144,7 +144,7 @@ Result pmdmntGetTitlePid(u64* pid_out, u64 title_id) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 2 : 3; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 2 : 3; raw->title_id = title_id; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -182,7 +182,7 @@ Result pmdmntEnableDebugForTitleId(Handle* handle_out, u64 title_id) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 3 : 4; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 3 : 4; raw->title_id = title_id; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -254,7 +254,7 @@ Result pmdmntGetApplicationPid(u64* pid_out) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 4 : 5; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 4 : 5; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -290,7 +290,7 @@ Result pmdmntEnableDebugForApplication(Handle* handle_out) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 5 : 6; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 5 : 6; Result rc = serviceIpcDispatch(&g_pmdmntSrv); @@ -314,7 +314,7 @@ Result pmdmntEnableDebugForApplication(Handle* handle_out) { } Result pmdmntDisableDebug(void) { - if (!kernelAbove600()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(6,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -529,7 +529,7 @@ Result pmshellGetProcessEventInfo(PmProcessEventInfo* out) { } Result pmshellFinalizeDeadProcess(u64 pid) { - if (kernelAbove500()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionAtLeast(5,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -564,7 +564,7 @@ Result pmshellFinalizeDeadProcess(u64 pid) { } Result pmshellClearProcessExceptionOccurred(u64 pid) { - if (kernelAbove500()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionAtLeast(5,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -610,7 +610,7 @@ Result pmshellNotifyBootFinished(void) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 5 : 7; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 5 : 7; Result rc = serviceIpcDispatch(&g_pmshellSrv); @@ -641,7 +641,7 @@ Result pmshellGetApplicationPid(u64* pid_out) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 6 : 8; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 6 : 8; Result rc = serviceIpcDispatch(&g_pmshellSrv); @@ -666,7 +666,7 @@ Result pmshellGetApplicationPid(u64* pid_out) { } Result pmshellBoostSystemMemoryResourceLimit(u64 boost_size) { - if (!kernelAbove400()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(4,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); IpcCommand c; ipcInitialize(&c); @@ -680,7 +680,7 @@ Result pmshellBoostSystemMemoryResourceLimit(u64 boost_size) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove500() ? 7 : 9; + raw->cmd_id = hosversionAtLeast(5,0,0) ? 7 : 9; raw->boost_size = boost_size; Result rc = serviceIpcDispatch(&g_pmshellSrv); diff --git a/nx/source/services/psc.c b/nx/source/services/psc.c index 559f73bf..57dbf8bf 100644 --- a/nx/source/services/psc.c +++ b/nx/source/services/psc.c @@ -8,10 +8,10 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "kernel/event.h" #include "services/psc.h" #include "services/sm.h" +#include "runtime/hosversion.h" static Service g_pscSrv; static u64 g_refCnt; @@ -166,7 +166,7 @@ Result pscPmModuleGetRequest(PscPmModule *module, PscPmState *out_state, u32 *ou } Result pscPmModuleAcknowledge(PscPmModule *module, PscPmState state) { - if (kernelAbove600()) { + if (hosversionAtLeast(6,0,0)) { return _pscPmModuleAcknowledgeEx(module, state); } else { return _pscPmModuleAcknowledge(module); diff --git a/nx/source/services/psm.c b/nx/source/services/psm.c index 38d18203..1bf259ee 100644 --- a/nx/source/services/psm.c +++ b/nx/source/services/psm.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "kernel/event.h" #include "services/psm.h" #include "services/sm.h" diff --git a/nx/source/services/ro.c b/nx/source/services/ro.c index d4e530b8..65662cbf 100644 --- a/nx/source/services/ro.c +++ b/nx/source/services/ro.c @@ -4,7 +4,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/ro.h" #include "services/sm.h" @@ -34,7 +34,7 @@ void ldrRoExit(void) { } Result roDmntInitialize(void) { - if (!kernelAbove300()) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); + if (hosversionBefore(3,0,0)) return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer); atomicIncrement64(&g_dmntRefCnt); diff --git a/nx/source/services/set.c b/nx/source/services/set.c index 7d67d5c7..0772dac5 100644 --- a/nx/source/services/set.c +++ b/nx/source/services/set.c @@ -10,7 +10,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/set.h" #include "services/sm.h" #include "services/applet.h" @@ -100,7 +100,7 @@ Result setMakeLanguageCode(s32 Language, u64 *LanguageCode) { return MAKERESULT(Module_Libnx, LibnxError_BadInput); if (Language >= g_setLanguageCodesTotal) { - if (!kernelAbove400()) return MAKERESULT(Module_Libnx, LibnxError_BadInput); + if (hosversionBefore(4,0,0)) return MAKERESULT(Module_Libnx, LibnxError_BadInput); return _setMakeLanguageCode(Language, LanguageCode); } @@ -156,7 +156,7 @@ Result setGetAvailableLanguageCodes(s32 *total_entries, u64 *LanguageCodes, size ipcInitialize(&c); Result rc=0; - bool new_cmd = kernelAbove400(); + bool new_cmd = hosversionAtLeast(4,0,0); if (!new_cmd) {//On system-version <4.0.0 the sysmodule will close the session if max_entries is too large. s32 tmptotal = 0; @@ -254,7 +254,7 @@ Result setGetAvailableLanguageCodeCount(s32 *total) { raw = ipcPrepareHeader(&c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove400() ? 6 : 3; + raw->cmd_id = hosversionAtLeast(4,0,0) ? 6 : 3; Result rc = serviceIpcDispatch(&g_setSrv); @@ -607,7 +607,7 @@ static Result _setsysGetFirmwareVersionImpl(SetSysFirmwareVersion *out, u32 cmd_ Result setsysGetFirmwareVersion(SetSysFirmwareVersion *out) { /* GetFirmwareVersion2 does exactly what GetFirmwareVersion does, except it doesn't zero the revision field. */ - if (kernelAbove300()) { + if (hosversionAtLeast(3,0,0)) { return _setsysGetFirmwareVersionImpl(out, 4); } else { return _setsysGetFirmwareVersionImpl(out, 3); diff --git a/nx/source/services/smm.c b/nx/source/services/smm.c index cd9c4413..c6d3b82c 100644 --- a/nx/source/services/smm.c +++ b/nx/source/services/smm.c @@ -4,7 +4,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/fs.h" #include "services/sm.h" #include "services/smm.h" diff --git a/nx/source/services/spl.c b/nx/source/services/spl.c index a4b4614e..bba51819 100644 --- a/nx/source/services/spl.c +++ b/nx/source/services/spl.c @@ -4,7 +4,7 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/sm.h" #include "services/spl.h" @@ -20,7 +20,7 @@ static Service* _splGetEsSrv(void); static Service* _splGetFsSrv(void); Service* _splGetGeneralSrv(void) { - if (!kernelAbove400()) { + if (hosversionBefore(4,0,0)) { return &g_splSrv; } @@ -32,7 +32,7 @@ Service* _splGetGeneralSrv(void) { } Service* _splGetCryptoSrv(void) { - if (!kernelAbove400()) { + if (hosversionBefore(4,0,0)) { return &g_splSrv; } @@ -50,7 +50,7 @@ Service* _splGetCryptoSrv(void) { } Service* _splGetRsaSrv(void) { - if (!kernelAbove400()) { + if (hosversionBefore(4,0,0)) { return &g_splSrv; } @@ -64,11 +64,11 @@ Service* _splGetRsaSrv(void) { } Service* _splGetEsSrv(void) { - return kernelAbove400() ? &g_splEsSrv : &g_splSrv; + return hosversionAtLeast(4,0,0) ? &g_splEsSrv : &g_splSrv; } Service* _splGetFsSrv(void) { - return kernelAbove400() ? &g_splFsSrv : &g_splSrv; + return hosversionAtLeast(4,0,0) ? &g_splFsSrv : &g_splSrv; } /* There are like six services, so these helpers will initialize/exit the relevant services. */ @@ -95,7 +95,7 @@ void splExit(void) { } Result splCryptoInitialize(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvInitialize(&g_splCryptoSrv, &g_splCryptoRefCnt, "spl:mig"); } else { return splInitialize(); @@ -103,7 +103,7 @@ Result splCryptoInitialize(void) { } void splCryptoExit(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvExit(&g_splCryptoSrv, &g_splCryptoRefCnt); } else { return splExit(); @@ -111,7 +111,7 @@ void splCryptoExit(void) { } Result splSslInitialize(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvInitialize(&g_splSslSrv, &g_splSslRefCnt, "spl:ssl"); } else { return splInitialize(); @@ -119,7 +119,7 @@ Result splSslInitialize(void) { } void splSslExit(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvExit(&g_splSslSrv, &g_splSslRefCnt); } else { return splExit(); @@ -127,7 +127,7 @@ void splSslExit(void) { } Result splEsInitialize(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvInitialize(&g_splEsSrv, &g_splEsRefCnt, "spl:es"); } else { return splInitialize(); @@ -135,7 +135,7 @@ Result splEsInitialize(void) { } void splEsExit(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvExit(&g_splEsSrv, &g_splEsRefCnt); } else { return splExit(); @@ -143,7 +143,7 @@ void splEsExit(void) { } Result splFsInitialize(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvInitialize(&g_splFsSrv, &g_splFsRefCnt, "spl:fs"); } else { return splInitialize(); @@ -151,7 +151,7 @@ Result splFsInitialize(void) { } void splFsExit(void) { - if (kernelAbove400()) { + if (hosversionAtLeast(4,0,0)) { return _splSrvExit(&g_splFsSrv, &g_splFsRefCnt); } else { return splExit(); diff --git a/nx/source/services/spsm.c b/nx/source/services/spsm.c index 88521610..2a7d2f77 100644 --- a/nx/source/services/spsm.c +++ b/nx/source/services/spsm.c @@ -2,7 +2,6 @@ #include "result.h" #include "arm/atomics.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/spsm.h" #include "services/sm.h" diff --git a/nx/source/services/usbds.c b/nx/source/services/usbds.c index 9331602e..3defe491 100644 --- a/nx/source/services/usbds.c +++ b/nx/source/services/usbds.c @@ -3,10 +3,10 @@ #include "result.h" #include "arm/cache.h" #include "kernel/ipc.h" -#include "kernel/detect.h" #include "services/usb.h" #include "services/usbds.h" #include "services/sm.h" +#include "runtime/hosversion.h" #include "runtime/util/utf.h" #define TOTAL_INTERFACES 4 @@ -49,7 +49,7 @@ Result usbDsInitialize(void) rc = _usbDsGetEvent(&g_usbDsSrv, &g_usbDsStateChangeEvent, 3); // Result code doesn't matter here, users can call themselves later, too. This prevents foot shooting. - if (R_SUCCEEDED(rc) && kernelAbove500()) + if (R_SUCCEEDED(rc) && hosversionAtLeast(5,0,0)) usbDsClearDeviceData(); if (R_FAILED(rc)) @@ -67,7 +67,7 @@ void usbDsExit(void) if (!serviceIsActive(&g_usbDsSrv)) return; - if (kernelAbove500()) { + if (hosversionAtLeast(5,0,0)) { usbDsDisable(); } diff --git a/nx/source/services/usbhs.c b/nx/source/services/usbhs.c index 7c1bcca5..34a3e33a 100644 --- a/nx/source/services/usbhs.c +++ b/nx/source/services/usbhs.c @@ -3,7 +3,7 @@ #include "result.h" #include "arm/cache.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/usb.h" #include "services/usbhs.h" #include "services/sm.h" @@ -26,12 +26,12 @@ Result usbHsInitialize(void) { rc = serviceConvertToDomain(&g_usbHsSrv); } - if (R_SUCCEEDED(rc) && kernelAbove200()) + if (R_SUCCEEDED(rc) && hosversionAtLeast(2,0,0)) rc = _usbHsBindClientProcess(CUR_PROCESS_HANDLE); // GetInterfaceStateChangeEvent if (R_SUCCEEDED(rc)) - rc = _usbHsGetEvent(&g_usbHsSrv, &g_usbHsInterfaceStateChangeEvent, kernelAbove200() ? 6 : 5); + rc = _usbHsGetEvent(&g_usbHsSrv, &g_usbHsInterfaceStateChangeEvent, hosversionAtLeast(2,0,0) ? 6 : 5); if (R_FAILED(rc)) { @@ -175,7 +175,7 @@ static Result _usbHsQueryInterfaces(u64 base_cmdid, const UsbHsInterfaceFilter* raw = serviceIpcPrepareHeader(&g_usbHsSrv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? base_cmdid+1 : base_cmdid; + raw->cmd_id = hosversionAtLeast(2,0,0) ? base_cmdid+1 : base_cmdid; raw->filter = *filter; Result rc = serviceIpcDispatch(&g_usbHsSrv); @@ -221,7 +221,7 @@ Result usbHsQueryAcquiredInterfaces(UsbHsInterface* interfaces, size_t interface raw = serviceIpcPrepareHeader(&g_usbHsSrv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 3 : 2; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 3 : 2; Result rc = serviceIpcDispatch(&g_usbHsSrv); @@ -259,7 +259,7 @@ Result usbHsCreateInterfaceAvailableEvent(Event* event, bool autoclear, u8 index raw = serviceIpcPrepareHeader(&g_usbHsSrv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 4 : 3; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 4 : 3; raw->index = index; raw->filter = *filter; @@ -299,7 +299,7 @@ Result usbHsDestroyInterfaceAvailableEvent(Event* event, u8 index) { raw = serviceIpcPrepareHeader(&g_usbHsSrv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 5 : 4; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 5 : 4; raw->index = index; Result rc = serviceIpcDispatch(&g_usbHsSrv); @@ -337,7 +337,7 @@ Result usbHsAcquireUsbIf(UsbHsClientIfSession* s, UsbHsInterface *interface) { s32 ID; } *raw; - if (!kernelAbove300()) { + if (hosversionBefore(3,0,0)) { ipcAddRecvBuffer(&c, &s->inf.inf, sizeof(UsbHsInterfaceInfo), BufferType_Normal); } else { @@ -349,7 +349,7 @@ Result usbHsAcquireUsbIf(UsbHsClientIfSession* s, UsbHsInterface *interface) { raw = serviceIpcPrepareHeader(&g_usbHsSrv, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 7 : 6; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 7 : 6; raw->ID = s->ID; Result rc = serviceIpcDispatch(&g_usbHsSrv); @@ -373,7 +373,7 @@ Result usbHsAcquireUsbIf(UsbHsClientIfSession* s, UsbHsInterface *interface) { if (R_SUCCEEDED(rc)) { rc = _usbHsGetEvent(&s->s, &s->event0, 0); - if (kernelAbove200()) rc = _usbHsGetEvent(&s->s, &s->eventCtrlXfer, 6); + if (hosversionAtLeast(2,0,0)) rc = _usbHsGetEvent(&s->s, &s->eventCtrlXfer, 6); if (R_FAILED(rc)) { serviceClose(&s->s); @@ -486,7 +486,7 @@ Result usbHsIfGetCurrentFrame(UsbHsClientIfSession* s, u32* out) { raw = serviceIpcPrepareHeader(&s->s, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 4 : 5; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 4 : 5; Result rc = serviceIpcDispatch(&s->s); @@ -648,7 +648,7 @@ Result usbHsIfCtrlXfer(UsbHsClientIfSession* s, u8 bmRequestType, u8 bRequest, u Result rc=0; UsbHsXferReport report; - if (!kernelAbove200()) return _usbHsIfSubmitControlRequest(s, bRequest, bmRequestType, wValue, wIndex, wLength, buffer, 0, transferredSize); + if (hosversionBefore(2,0,0)) return _usbHsIfSubmitControlRequest(s, bRequest, bmRequestType, wValue, wIndex, wLength, buffer, 0, transferredSize); rc = _usbHsIfCtrlXferAsync(s, bmRequestType, bRequest, wValue, wIndex, wLength, buffer); if (R_FAILED(rc)) return rc; @@ -686,7 +686,7 @@ Result usbHsIfOpenUsbEp(UsbHsClientIfSession* s, UsbHsClientEpSession* ep, u16 m raw = serviceIpcPrepareHeader(&s->s, &c, sizeof(*raw)); raw->magic = SFCI_MAGIC; - raw->cmd_id = kernelAbove200() ? 9 : 4; + raw->cmd_id = hosversionAtLeast(2,0,0) ? 9 : 4; raw->maxUrbCount = maxUrbCount; raw->epType = (desc->bmAttributes & USB_TRANSFER_TYPE_MASK) + 1; raw->epNumber = desc->bEndpointAddress & USB_ENDPOINT_ADDRESS_MASK; @@ -716,7 +716,7 @@ Result usbHsIfOpenUsbEp(UsbHsClientIfSession* s, UsbHsClientEpSession* ep, u16 m } if (R_SUCCEEDED(rc)) { - if (kernelAbove200()) { + if (hosversionAtLeast(2,0,0)) { rc = _usbHsCmdNoIO(&ep->s, 3);//Populate if (R_SUCCEEDED(rc)) rc = _usbHsGetEvent(&ep->s, &ep->eventXfer, 2); } @@ -737,7 +737,7 @@ Result usbHsIfResetDevice(UsbHsClientIfSession* s) { void usbHsEpClose(UsbHsClientEpSession* s) { if (!serviceIsActive(&s->s)) return; - _usbHsCmdNoIO(&s->s, kernelAbove200() ? 1 : 3);//Close + _usbHsCmdNoIO(&s->s, hosversionAtLeast(2,0,0) ? 1 : 3);//Close serviceClose(&s->s); eventClose(&s->eventXfer); @@ -879,7 +879,7 @@ Result usbHsEpPostBuffer(UsbHsClientEpSession* s, void* buffer, u32 size, u32* t u32 count=0; UsbHsXferReport report; - if (!kernelAbove200()) return _usbHsEpSubmitRequest(s, buffer, size, 0, transferredSize); + if (hosversionBefore(2,0,0)) return _usbHsEpSubmitRequest(s, buffer, size, 0, transferredSize); rc = _usbHsEpPostBufferAsync(s, buffer, size, 0, &xferId); if (R_FAILED(rc)) return rc; diff --git a/nx/source/services/vi.c b/nx/source/services/vi.c index 3d8db2b5..b5003d5b 100644 --- a/nx/source/services/vi.c +++ b/nx/source/services/vi.c @@ -2,7 +2,7 @@ #include "types.h" #include "result.h" #include "kernel/ipc.h" -#include "kernel/detect.h" +#include "runtime/hosversion.h" #include "services/applet.h" #include "services/vi.h" #include "display/parcel.h" @@ -68,7 +68,7 @@ Result viInitialize(ViServiceType service_type) if (g_viServiceType >= ViServiceType_Manager && R_SUCCEEDED(rc)) rc = _viGetSessionNoParams(&g_viIApplicationDisplayService, &g_viIManagerDisplayService, 102); - if (g_viServiceType >= ViServiceType_System && R_SUCCEEDED(rc) && kernelAbove200()) + if (g_viServiceType >= ViServiceType_System && R_SUCCEEDED(rc) && hosversionAtLeast(2,0,0)) rc = _viGetSessionNoParams(&g_viIApplicationDisplayService, &g_viIHOSBinderDriverIndirect, 103); if (R_FAILED(rc))