mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-22 04:11:18 +00:00
boot2: update for 16.0.0
This commit is contained in:
parent
cb89c66bd8
commit
e46e7e0eb1
15 changed files with 68 additions and 11 deletions
|
@ -44,6 +44,8 @@ namespace ams::fs {
|
|||
SystemProperEncryption = 32,
|
||||
SystemProperPartition = 33,
|
||||
SignedSystemPartitionOnSafeMode = 34,
|
||||
DeviceTreeBlob = 35,
|
||||
System0 = 36,
|
||||
};
|
||||
|
||||
const char *GetBisMountName(BisPartitionId id);
|
||||
|
|
|
@ -15,16 +15,10 @@
|
|||
*/
|
||||
#pragma once
|
||||
#include <stratosphere/fs/fs_common.hpp>
|
||||
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||
|
||||
namespace ams::fs {
|
||||
|
||||
/* ACCURATE_TO_VERSION: Unknown */
|
||||
enum class ContentStorageId : u32 {
|
||||
System = 0,
|
||||
User = 1,
|
||||
SdCard = 2,
|
||||
};
|
||||
|
||||
constexpr inline const char * const ContentStorageDirectoryName = "Contents";
|
||||
|
||||
const char *GetContentStorageMountName(ContentStorageId id);
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* Copyright (c) Atmosphère-NX
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
#include <vapours.hpp>
|
||||
|
||||
namespace ams::fs {
|
||||
|
||||
/* ACCURATE_TO_VERSION: 16.2.0.0 */
|
||||
enum class ContentStorageId : u32 {
|
||||
System = 0,
|
||||
User = 1,
|
||||
SdCard = 2,
|
||||
System0 = 3,
|
||||
};
|
||||
|
||||
}
|
|
@ -17,6 +17,7 @@
|
|||
#include <stratosphere/ncm/ncm_content_meta_database.hpp>
|
||||
#include <stratosphere/ncm/ncm_content_storage.hpp>
|
||||
#include <stratosphere/ncm/ncm_i_content_manager.hpp>
|
||||
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||
|
||||
namespace ams::ncm {
|
||||
|
||||
|
@ -46,6 +47,8 @@ namespace ams::ncm {
|
|||
|
||||
Result InvalidateRightsIdCache();
|
||||
|
||||
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id);
|
||||
|
||||
/* Deprecated API. */
|
||||
Result CloseContentStorageForcibly(StorageId storage_id);
|
||||
Result CloseContentMetaDatabaseForcibly(StorageId storage_id);
|
||||
|
|
|
@ -151,6 +151,7 @@ namespace ams::ncm {
|
|||
Result InactivateContentMetaDatabase(StorageId storage_id);
|
||||
Result InvalidateRightsIdCache();
|
||||
Result GetMemoryReport(sf::Out<MemoryReport> out);
|
||||
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id);
|
||||
};
|
||||
static_assert(IsIContentManager<ContentManagerImpl>);
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
#include <stratosphere/ncm/ncm_i_content_storage.hpp>
|
||||
#include <stratosphere/ncm/ncm_i_content_meta_database.hpp>
|
||||
#include <stratosphere/ncm/ncm_memory_report.hpp>
|
||||
#include <stratosphere/fs/fs_content_storage_id.hpp>
|
||||
|
||||
#define AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO(C, H) \
|
||||
AMS_SF_METHOD_INFO(C, H, 0, Result, CreateContentStorage, (ncm::StorageId storage_id), (storage_id)) \
|
||||
|
@ -33,6 +34,7 @@
|
|||
AMS_SF_METHOD_INFO(C, H, 11, Result, ActivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
||||
AMS_SF_METHOD_INFO(C, H, 12, Result, InactivateContentMetaDatabase, (ncm::StorageId storage_id), (storage_id), hos::Version_2_0_0) \
|
||||
AMS_SF_METHOD_INFO(C, H, 13, Result, InvalidateRightsIdCache, (), (), hos::Version_9_0_0) \
|
||||
AMS_SF_METHOD_INFO(C, H, 14, Result, GetMemoryReport, (sf::Out<ncm::MemoryReport> out), (out), hos::Version_10_0_0)
|
||||
AMS_SF_METHOD_INFO(C, H, 14, Result, GetMemoryReport, (sf::Out<ncm::MemoryReport> out), (out), hos::Version_10_0_0) \
|
||||
AMS_SF_METHOD_INFO(C, H, 15, Result, ActivateFsContentStorage, (fs::ContentStorageId fs_storage_id), (fs_storage_id)) /* Technically min 16.0.0, but used. */
|
||||
|
||||
AMS_SF_DEFINE_INTERFACE(ams::ncm, IContentManager, AMS_NCM_I_CONTENT_MANAGER_INTERFACE_INFO, 0xFDB4FFE1);
|
||||
|
|
|
@ -98,6 +98,7 @@ namespace ams::ncm {
|
|||
static const SystemProgramId Pgl;
|
||||
static const SystemProgramId Omm;
|
||||
static const SystemProgramId Eth;
|
||||
static const SystemProgramId Ngc;
|
||||
|
||||
static const SystemProgramId End;
|
||||
|
||||
|
@ -205,6 +206,7 @@ namespace ams::ncm {
|
|||
inline constexpr const SystemProgramId SystemProgramId::Pgl = { 0x0100000000000042ul };
|
||||
inline constexpr const SystemProgramId SystemProgramId::Omm = { 0x0100000000000045ul };
|
||||
inline constexpr const SystemProgramId SystemProgramId::Eth = { 0x0100000000000046ul };
|
||||
inline constexpr const SystemProgramId SystemProgramId::Ngc = { 0x0100000000000050ul };
|
||||
|
||||
inline constexpr const SystemProgramId SystemProgramId::End = { 0x01000000000007FFul };
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ namespace ams::boot2 {
|
|||
ncm::SystemProgramId::Profiler, /* profiler */
|
||||
ncm::SystemProgramId::Sdb, /* sdb */
|
||||
ncm::SystemProgramId::Olsc, /* olsc */
|
||||
ncm::SystemProgramId::Ngc, /* ngc */
|
||||
ncm::SystemProgramId::Ngct, /* ngct */
|
||||
};
|
||||
constexpr size_t NumAdditionalLaunchPrograms = util::size(AdditionalLaunchPrograms);
|
||||
|
@ -115,6 +116,7 @@ namespace ams::boot2 {
|
|||
ncm::SystemProgramId::Profiler, /* profiler */
|
||||
ncm::SystemProgramId::Sdb, /* sdb */
|
||||
ncm::SystemProgramId::Olsc, /* olsc */
|
||||
ncm::SystemProgramId::Ngc, /* ngc */
|
||||
ncm::SystemProgramId::Ngct, /* ngct */
|
||||
};
|
||||
constexpr size_t NumAdditionalMaintenanceLaunchPrograms = util::size(AdditionalMaintenanceLaunchPrograms);
|
||||
|
@ -399,6 +401,9 @@ namespace ams::boot2 {
|
|||
LaunchProgram(nullptr, ncm::ProgramLocation::Make(ncm::SystemProgramId::Usb, ncm::StorageId::BuiltInSystem), 0);
|
||||
}
|
||||
|
||||
/* Activate the system fs content storage. */
|
||||
R_ABORT_UNLESS(ncm::ActivateFsContentStorage(fs::ContentStorageId::System));
|
||||
|
||||
/* Find out whether we are maintenance mode. */
|
||||
const bool maintenance = IsMaintenanceMode();
|
||||
if (maintenance) {
|
||||
|
|
|
@ -118,6 +118,7 @@ namespace ams::fs::impl {
|
|||
ADD_ENUM_CASE(User);
|
||||
ADD_ENUM_CASE(System);
|
||||
ADD_ENUM_CASE(SdCard);
|
||||
ADD_ENUM_CASE(System0);
|
||||
default: return ToValueString(static_cast<int>(id));
|
||||
}
|
||||
}
|
||||
|
@ -171,6 +172,8 @@ namespace ams::fs::impl {
|
|||
ADD_ENUM_CASE(System);
|
||||
ADD_ENUM_CASE(SystemProperEncryption);
|
||||
ADD_ENUM_CASE(SystemProperPartition);
|
||||
ADD_ENUM_CASE(DeviceTreeBlob);
|
||||
ADD_ENUM_CASE(System0);
|
||||
default: return ToValueString(static_cast<int>(id));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ namespace ams::fs::impl {
|
|||
#define ADD_ENUM_CASE(v) case v: return #v
|
||||
|
||||
template<> const char *IdString::ToString<pkg1::KeyGeneration>(pkg1::KeyGeneration id) {
|
||||
static_assert(pkg1::KeyGeneration_Current == pkg1::KeyGeneration_15_0_0);
|
||||
static_assert(pkg1::KeyGeneration_Current == pkg1::KeyGeneration_16_0_0);
|
||||
switch (id) {
|
||||
using enum pkg1::KeyGeneration;
|
||||
case KeyGeneration_1_0_0: return "1.0.0-2.3.0";
|
||||
|
@ -38,7 +38,8 @@ namespace ams::fs::impl {
|
|||
case KeyGeneration_12_1_0: return "12.1.0";
|
||||
case KeyGeneration_13_0_0: return "13.0.0-13.2.1";
|
||||
case KeyGeneration_14_0_0: return "14.0.0-14.1.2";
|
||||
case KeyGeneration_15_0_0: return "15.0.0-";
|
||||
case KeyGeneration_15_0_0: return "15.0.0-15.0.1";
|
||||
case KeyGeneration_16_0_0: return "16.0.0-";
|
||||
default: return "Unknown";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,6 +114,10 @@ namespace ams::ncm {
|
|||
R_RETURN(g_content_manager->InvalidateRightsIdCache());
|
||||
}
|
||||
|
||||
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||
R_RETURN(g_content_manager->ActivateFsContentStorage(fs_content_storage_id));
|
||||
}
|
||||
|
||||
/* Deprecated API. */
|
||||
Result CloseContentStorageForcibly(StorageId storage_id) {
|
||||
AMS_ABORT_UNLESS(hos::GetVersion() == hos::Version_1_0_0);
|
||||
|
|
|
@ -675,6 +675,12 @@ namespace ams::ncm {
|
|||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result ContentManagerImpl::ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||
/* TODO */
|
||||
AMS_UNUSED(fs_content_storage_id);
|
||||
R_SUCCEED();
|
||||
}
|
||||
|
||||
Result ContentManagerImpl::GetMemoryReport(sf::Out<MemoryReport> out) {
|
||||
/* Populate content meta resource states. */
|
||||
MemoryReport report = {
|
||||
|
|
|
@ -99,6 +99,10 @@ namespace ams::ncm {
|
|||
AMS_UNUSED(out);
|
||||
AMS_ABORT();
|
||||
}
|
||||
|
||||
Result ActivateFsContentStorage(fs::ContentStorageId fs_content_storage_id) {
|
||||
R_RETURN(::ncmActivateFsContentStorage(static_cast<::FsContentStorageId>(util::ToUnderlying(fs_content_storage_id))));
|
||||
}
|
||||
};
|
||||
static_assert(ncm::IsIContentManager<RemoteContentManagerImpl>);
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
"permissions": "0xFFFFFFFFFFFFFFFF"
|
||||
},
|
||||
"service_host": ["*"],
|
||||
"service_access": ["fsp-srv", "gpio", "htc", "lr", "pm:bm", "pm:shell", "pm:info", "set:sys"],
|
||||
"service_access": ["fsp-srv", "gpio", "htc", "lr", "ncm", "pm:bm", "pm:shell", "pm:info", "set:sys"],
|
||||
"kernel_capabilities": [
|
||||
{
|
||||
"type": "kernel_flags",
|
||||
|
|
|
@ -61,6 +61,7 @@ namespace ams {
|
|||
R_ABORT_UNLESS(pmshellInitialize());
|
||||
R_ABORT_UNLESS(setsysInitialize());
|
||||
gpio::Initialize();
|
||||
ncm::Initialize();
|
||||
|
||||
/* Mount the SD card. */
|
||||
R_ABORT_UNLESS(fs::MountSdCard("sdmc"));
|
||||
|
|
Loading…
Reference in a new issue