trunk r371をマージ

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@372 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-07-08 04:47:12 +00:00
parent 887c9f869e
commit ed0c6756d9
10 changed files with 81 additions and 58 deletions

View File

@ -68,6 +68,10 @@ common::Util s_HwUtility;
} // namespace <unnamed> } // namespace <unnamed>
extern "C" void nninitSetupDaemons(void)
{
}
namespace ConsoleBackup{ namespace ConsoleBackup{
@ -88,14 +92,6 @@ extern "C" void nnMain(void)
result = nn::hid::Initialize(); result = nn::hid::Initialize();
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
// ndmの初期化
result = nn::ndm::Initialize();
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
// 全デーモンの自律動作をacの自動接続も含めて止める
result = nn::ndm::SuspendScheduler();
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
// cfg の初期化 // cfg の初期化
nn::cfg::CTR::init::Initialize(); nn::cfg::CTR::init::Initialize();
nn::cfg::CTR::system::Initialize(); nn::cfg::CTR::system::Initialize();
@ -142,7 +138,7 @@ extern "C" void nnMain(void)
nn::hid::PadStatus padStatus; nn::hid::PadStatus padStatus;
// データの準備 // データの準備
s_HwUtility.Initialize(); s_HwUtility.InitializeForBackup();
common::HardwareStateManager manager(s_HwUtility); common::HardwareStateManager manager(s_HwUtility);
// 情報出力 // 情報出力
@ -156,11 +152,6 @@ extern "C" void nnMain(void)
COMMON_LOGGER("Serial Number %s\n", s_HwUtility.GetSerialNumber()); COMMON_LOGGER("Serial Number %s\n", s_HwUtility.GetSerialNumber());
COMMON_LOGGER("Device ID %llu\n", s_HwUtility.GetInfraDeviceId()); COMMON_LOGGER("Device ID %llu\n", s_HwUtility.GetInfraDeviceId());
COMMON_LOGGER("MAC Address %s\n", s_HwUtility.GetMacAddress()); COMMON_LOGGER("MAC Address %s\n", s_HwUtility.GetMacAddress());
COMMON_LOGGER("Friend Code %04u-%04u-%04u\n",
static_cast<u32>(s_HwUtility.GetFriendcode() / 100000000ULL % 10000ULL),
static_cast<u32>(s_HwUtility.GetFriendcode() / 10000ULL % 10000ULL),
static_cast<u32>(s_HwUtility.GetFriendcode() % 10000ULL) );
bool flip = false; bool flip = false;
bool continueBackup = false; bool continueBackup = false;
@ -252,6 +243,7 @@ extern "C" void nnMain(void)
operationMessage, operationMessage,
s_HwUtility.GetRegion(), s_HwUtility.GetRegion(),
s_HwUtility.GetSerialNumber(), s_HwUtility.GetSerialNumber(),
s_HwUtility.HasReadFriendCode(),
s_HwUtility.GetAgingCounter() s_HwUtility.GetAgingCounter()
); );

View File

@ -13,20 +13,10 @@ SystemControlInfo:
AppType : Application AppType : Application
StackSize : 0x4000 StackSize : 0x4000
Dependency : Dependency :
- gpio
- pdn
- spi
- i2c
- mcu
- ptm
- codec - codec
- cfg
- hid - hid
- gsp - gsp
- friends - nwm
- nim
- ac
- ndm
AccessControlInfo: AccessControlInfo:
Priority : 16 Priority : 16

View File

@ -66,7 +66,7 @@ demo::RenderSystemDrawing s_RenderSystem;
namespace ConsoleRestore{ namespace ConsoleRestore{
void FinalizeAll(common::HardwareStateManager& manager) void FinalizeAll()
{ {
common::Logger::GetLoggerInstance()->Finalize(); common::Logger::GetLoggerInstance()->Finalize();
// アンマウント // アンマウント
@ -74,7 +74,7 @@ void FinalizeAll(common::HardwareStateManager& manager)
nn::fs::Unmount("sdmc:"); nn::fs::Unmount("sdmc:");
s_RenderSystem.Finalize(); s_RenderSystem.Finalize();
manager.Finalize(); s_HwUtility.FinalizeForRestore();
nn::ps::Finalize(); nn::ps::Finalize();
nn::ptm::CTR::FinalizeForSystemMenu(); nn::ptm::CTR::FinalizeForSystemMenu();
nn::cfg::CTR::system::Finalize(); nn::cfg::CTR::system::Finalize();
@ -160,7 +160,7 @@ extern "C" void nnMain(void)
nn::hid::PadStatus padStatus; nn::hid::PadStatus padStatus;
// データの準備 // データの準備
s_HwUtility.Initialize(); s_HwUtility.InitializeForRestore();
common::HardwareStateManager manager(s_HwUtility); common::HardwareStateManager manager(s_HwUtility);
// 情報出力 // 情報出力
@ -290,6 +290,7 @@ extern "C" void nnMain(void)
operationMessage, operationMessage,
s_HwUtility.GetRegion(), s_HwUtility.GetRegion(),
s_HwUtility.GetSerialNumber(), s_HwUtility.GetSerialNumber(),
s_HwUtility.HasReadFriendCode(),
s_HwUtility.GetAgingCounter() s_HwUtility.GetAgingCounter()
); );
@ -347,7 +348,7 @@ extern "C" void nnMain(void)
// 電源長押しで終了 // 電源長押しで終了
if ( nn::applet::IsExpectedToCloseApplication()) if ( nn::applet::IsExpectedToCloseApplication())
{ {
FinalizeAll(manager); FinalizeAll();
} }
} }
} }

View File

@ -13,14 +13,7 @@ SystemControlInfo:
AppType : Application AppType : Application
StackSize : 0x4000 StackSize : 0x4000
Dependency : Dependency :
- gpio
- pdn
- spi
- i2c
- mcu
- ptm
- codec - codec
- cfg
- hid - hid
- gsp - gsp
- friends - friends

View File

@ -39,6 +39,7 @@ std::string s_AdapterState;
u8 s_Progress; u8 s_Progress;
::std::vector<std::string>* s_OperationMessage; ::std::vector<std::string>* s_OperationMessage;
u32 s_Counter; u32 s_Counter;
bool s_ReadFriendCode;
} }
@ -70,9 +71,12 @@ void SetTextWriterCore()
GetTextWriter()->Printf("Serial No. %s\n", s_SerialNo); GetTextWriter()->Printf("Serial No. %s\n", s_SerialNo);
GetTextWriter()->Printf("Device ID %llu\n", s_DeviceId); GetTextWriter()->Printf("Device ID %llu\n", s_DeviceId);
GetTextWriter()->Printf("MAC Address %s\n", s_MacAddress); GetTextWriter()->Printf("MAC Address %s\n", s_MacAddress);
GetTextWriter()->Printf("Friend Code %04u-%04u-%04u\n", static_cast<u32> (s_FriendCode if (s_ReadFriendCode)
/ 100000000ULL % 10000ULL), static_cast<u32> (s_FriendCode / 10000ULL % 10000ULL), {
GetTextWriter()->Printf("Friend Code %04u-%04u-%04u\n",
static_cast<u32>(s_FriendCode / 100000000ULL % 10000ULL), static_cast<u32> (s_FriendCode / 10000ULL % 10000ULL),
static_cast<u32> (s_FriendCode % 10000ULL)); static_cast<u32> (s_FriendCode % 10000ULL));
}
GetTextWriter()->Printf("Battery %d%%\n", s_BatteryRemain); GetTextWriter()->Printf("Battery %d%%\n", s_BatteryRemain);
GetTextWriter()->Printf("AC Adapter %s\n", s_AdapterState.c_str()); GetTextWriter()->Printf("AC Adapter %s\n", s_AdapterState.c_str());
@ -111,6 +115,7 @@ void DrawSystemState
::std::vector<std::string>& operationMessage, ::std::vector<std::string>& operationMessage,
nn::cfg::CTR::CfgRegionCode region, nn::cfg::CTR::CfgRegionCode region,
u8* serialNo, u8* serialNo,
bool readFriendCode,
u32 counter u32 counter
) )
{ {
@ -129,6 +134,7 @@ void DrawSystemState
std::memcpy(s_SerialNo, serialNo, sizeof(s_SerialNo)); std::memcpy(s_SerialNo, serialNo, sizeof(s_SerialNo));
s_SerialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN] = '\0'; s_SerialNo[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN] = '\0';
s_OperationMessage = &operationMessage; s_OperationMessage = &operationMessage;
s_ReadFriendCode = readFriendCode;
s_Counter = counter; s_Counter = counter;
@ -170,7 +176,15 @@ void DrawSystemState
// プログレスバー // プログレスバー
fontwidth = 8; fontwidth = 8;
fontheight = 14; fontheight = 14;
if(readFriendCode)
{
line += 9; line += 9;
}
else
{
line += 8;
}
const u8 offset = 19; const u8 offset = 19;
const u8 diff = 4; const u8 diff = 4;
renderSystem.SetColor(0.f, 0.2f, 0.f); renderSystem.SetColor(0.f, 0.2f, 0.f);

View File

@ -72,6 +72,7 @@ void DrawSystemState
::std::vector<std::string>& operationMessage, ::std::vector<std::string>& operationMessage,
nn::cfg::CTR::CfgRegionCode region, nn::cfg::CTR::CfgRegionCode region,
u8* s_SerialNo, u8* s_SerialNo,
bool readFriendCode,
u32 counter u32 counter
); );

View File

@ -28,11 +28,6 @@ HardwareStateManager::~HardwareStateManager()
} }
void HardwareStateManager::Finalize()
{
m_pUtil->Finalize();
}
bool HardwareStateManager::CanReadIvs() bool HardwareStateManager::CanReadIvs()
{ {
return m_pUtil->CanReadIVS(); return m_pUtil->CanReadIVS();

View File

@ -29,8 +29,6 @@ public:
explicit HardwareStateManager(Util& hwUtility); explicit HardwareStateManager(Util& hwUtility);
virtual ~HardwareStateManager(); virtual ~HardwareStateManager();
void Finalize();
bool CanReadIvs(); bool CanReadIvs();
bool CanReadSerialNumber(); bool CanReadSerialNumber();
bool IsBatteryLower(); bool IsBatteryLower();

View File

@ -40,10 +40,9 @@ namespace common
{ {
Util::Util() : Util::Util() :
m_BatteryRemain(100), m_CanReadSerialNumber(false), m_CanReadIvs(false) m_FriendCode(0), m_BatteryRemain(100), m_CanReadSerialNumber(false), m_CanReadIvs(false), m_HasReadFriendCode(false)
{ {
} }
Util::~Util() Util::~Util()
@ -51,11 +50,31 @@ Util::~Util()
} }
void Util::Initialize() void Util::InitializeForBackup()
{ {
Initialize();
}
void Util::InitializeForRestore()
{
Initialize();
// friendsの初期化 // friendsの初期化
nn::Result result = nn::friends::detail::Initialize(); nn::Result result = nn::friends::detail::Initialize();
// フレンドコードの取得
nn::friends::CTR::FriendKey friendKey;
result = nn::friends::CTR::GetMyFriendKey(&friendKey);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
m_FriendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
m_HasReadFriendCode = true;
}
void Util::Initialize()
{
nn::Result result;
// mcuの初期化 // mcuの初期化
nn::mcu::CTR::InitializeHwCheck(&m_McuSession); nn::mcu::CTR::InitializeHwCheck(&m_McuSession);
mp_Mcu = new nn::mcu::CTR::HwCheck(m_McuSession); mp_Mcu = new nn::mcu::CTR::HwCheck(m_McuSession);
@ -121,12 +140,6 @@ void Util::Initialize()
mac.GetString(m_MacAddress); mac.GetString(m_MacAddress);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result); COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
// フレンドコードの取得
nn::friends::CTR::FriendKey friendKey;
result = nn::friends::CTR::GetMyFriendKey(&friendKey);
COMMON_LOGGER_RESULT_IF_FAILED_WITH_LINE(result);
m_FriendCode = nn::friends::CTR::FriendKeyToFriendCode(friendKey);
// エージング回数の変更 // エージング回数の変更
SdMountManager::Mount(); SdMountManager::Mount();
const size_t BUF_SIZE = 1024; const size_t BUF_SIZE = 1024;
@ -153,12 +166,22 @@ void Util::Initialize()
} }
SdMountManager::Unmount(); SdMountManager::Unmount();
}
void Util::FinalizeForBackup()
{
Finalize();
}
void Util::FinalizeForRestore()
{
nn::friends::detail::Finalize();
} }
void Util::Finalize() void Util::Finalize()
{ {
nn::mcu::CTR::FinalizeHwCheck(&m_McuSession); nn::mcu::CTR::FinalizeHwCheck(&m_McuSession);
nn::friends::detail::Finalize();
} }
// NULL終端されたシリアルナンバーを受け取る // NULL終端されたシリアルナンバーを受け取る
@ -364,4 +387,9 @@ u32 Util::GetAgingCounter()
return m_AgingCounter; return m_AgingCounter;
} }
bool Util::HasReadFriendCode()
{
return m_HasReadFriendCode;
}
} }

View File

@ -33,8 +33,11 @@ public:
Util(); Util();
virtual ~Util(); virtual ~Util();
void Initialize(); void InitializeForBackup();
void Finalize(); void InitializeForRestore();
void FinalizeForBackup();
void FinalizeForRestore();
// シリアルナンバーにモジュラス10 ウェイト3・1M10W31でチェックデジットを付加する // シリアルナンバーにモジュラス10 ウェイト3・1M10W31でチェックデジットを付加する
static void AddCheckDigit(char* serial); static void AddCheckDigit(char* serial);
@ -102,11 +105,16 @@ public:
// バージョン情報を取得する // バージョン情報を取得する
void GetVersionData(common::VerDef* version); void GetVersionData(common::VerDef* version);
// フレンドコードを取得済みかどうか
bool HasReadFriendCode();
// エージング回数を取得する // エージング回数を取得する
u32 GetAgingCounter(); u32 GetAgingCounter();
private: private:
void Initialize();
void Finalize();
NN_PADDING4; NN_PADDING4;
// フレンドコード // フレンドコード
u64 m_FriendCode; u64 m_FriendCode;
@ -149,7 +157,10 @@ private:
char8 m_MacAddress[nn::nwm::Mac::MAC_STRING_SIZE]; char8 m_MacAddress[nn::nwm::Mac::MAC_STRING_SIZE];
NN_PADDING3; NN_PADDING3;
NN_PADDING4; // FriendCodeを読んだかどうか
bool m_HasReadFriendCode;
NN_PADDING3;
// エージング回数 // エージング回数
u32 m_AgingCounter; u32 m_AgingCounter;
}; };