mirror of
				https://github.com/switchbrew/libnx.git
				synced 2025-10-31 04:55:47 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /**
 | |
|  * @file hosversion.h
 | |
|  * @brief Horizon OS (HOS) version detection utilities.
 | |
|  * @author fincs
 | |
|  * @copyright libnx Authors
 | |
|  */
 | |
| #pragma once
 | |
| #include "../types.h"
 | |
| 
 | |
| /// Builds a HOS version value from its constituent components.
 | |
| #define MAKEHOSVERSION(_major,_minor,_micro) (((u32)(_major) << 16) | ((u32)(_minor) << 8) | (u32)(_micro))
 | |
| 
 | |
| /// Extracts the major number from a HOS version value.
 | |
| #define HOSVER_MAJOR(_version) (((_version) >> 16) & 0xFF)
 | |
| 
 | |
| /// Extracts the minor number from a HOS version value.
 | |
| #define HOSVER_MINOR(_version) (((_version) >>  8) & 0xFF)
 | |
| 
 | |
| /// Extracts the micro number from a HOS version value.
 | |
| #define HOSVER_MICRO(_version) ( (_version)        & 0xFF)
 | |
| 
 | |
| /// Returns the current HOS version that was previously set with \ref hosversionSet. If version initialization fails during startup (such as in the case set:sys is not available), this function returns zero.
 | |
| u32 hosversionGet(void);
 | |
| 
 | |
| /// Sets or overrides the current HOS version. This function is normally called automatically by libnx on startup with the version info obtained with \ref setsysGetFirmwareVersion.
 | |
| void hosversionSet(u32 version);
 | |
| 
 | |
| /// Returns whether the current HOS version is augmented by running the Atmosphère custom firmware.
 | |
| bool hosversionIsAtmosphere(void);
 | |
| 
 | |
| /// Returns true if the current HOS version is equal to or above the specified major/minor/micro version.
 | |
| static inline bool hosversionAtLeast(u8 major, u8 minor, u8 micro) {
 | |
|     return hosversionGet() >= MAKEHOSVERSION(major,minor,micro);
 | |
| }
 | |
| 
 | |
| /// Returns true if the current HOS version is earlier than the specified major/minor/micro version.
 | |
| static inline bool hosversionBefore(u8 major, u8 minor, u8 micro) {
 | |
|     return !hosversionAtLeast(major, minor, micro);
 | |
| }
 | |
| 
 | |
| /// Returns true if the current HOS version is between the two specified major versions, i.e. [major1, major2).
 | |
| static inline bool hosversionBetween(u8 major1, u8 major2) {
 | |
|     u32 ver = hosversionGet();
 | |
|     return ver >= MAKEHOSVERSION(major1,0,0) && ver < MAKEHOSVERSION(major2,0,0);
 | |
| }
 |