mirror of
https://github.com/LNH-team/pico-loader.git
synced 2026-06-02 09:16:49 +02:00
Initial commit
This commit is contained in:
41
common/SdkVersion.h
Normal file
41
common/SdkVersion.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#define SDK_VERSION_MAJOR_SHIFT 24
|
||||
#define SDK_VERSION_MINOR_SHIFT 16
|
||||
#define SDK_VERSION_RELEASE_STEP_SHIFT 0
|
||||
|
||||
#define SDK_VERSION_MAJOR_MASK 0x00FF
|
||||
#define SDK_VERSION_MINOR_MASK 0x00FF
|
||||
#define SDK_VERSION_RELEASE_STEP_MASK 0xFFFF
|
||||
|
||||
#define SDK_VERSION_MAJOR_NITRO_2 2
|
||||
#define SDK_VERSION_MAJOR_NITRO_3 3
|
||||
#define SDK_VERSION_MAJOR_NITRO_4 4
|
||||
#define SDK_VERSION_MAJOR_TWL 5
|
||||
|
||||
#define SDK_VERSION_RELEASE_STEP_PREVIEW 10000
|
||||
#define SDK_VERSION_RELEASE_STEP_RELEASE_CANDIDATE 20000
|
||||
#define SDK_VERSION_RELEASE_STEP_RELEASE 30000
|
||||
|
||||
/// @brief Class representing an exact SDK version.
|
||||
class SdkVersion
|
||||
{
|
||||
u32 _version;
|
||||
public:
|
||||
constexpr SdkVersion(u32 version)
|
||||
: _version(version) { }
|
||||
|
||||
constexpr SdkVersion(u32 major, u32 minor, u32 releaseStep)
|
||||
: _version((major << SDK_VERSION_MAJOR_SHIFT) | (minor << SDK_VERSION_MINOR_SHIFT) | releaseStep) { }
|
||||
|
||||
constexpr u32 GetMajor() const { return _version >> SDK_VERSION_MAJOR_SHIFT; }
|
||||
constexpr u32 GetMinor() const { return (_version >> SDK_VERSION_MINOR_SHIFT) & SDK_VERSION_MINOR_MASK; }
|
||||
constexpr u32 GetReleaseClass() const { return GetReleaseStep() / 10000; }
|
||||
constexpr u32 GetReleaseMajor() const { return (GetReleaseStep() % 10000) / 100; }
|
||||
constexpr u32 GetReleaseMinor() const { return (GetReleaseStep() % 10000) % 100; }
|
||||
constexpr u32 GetReleaseStep() const { return _version & SDK_VERSION_RELEASE_STEP_MASK; }
|
||||
|
||||
constexpr bool IsTwlSdk() const { return GetMajor() == SDK_VERSION_MAJOR_TWL; }
|
||||
|
||||
constexpr friend auto operator<=>(const SdkVersion&, const SdkVersion&) = default;
|
||||
};
|
||||
Reference in New Issue
Block a user