diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp index 966196f..a2fdae4 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp +++ b/trunk/ConsoleDataMigration/ConsoleBackup/ConsoleBackup.cpp @@ -50,6 +50,7 @@ #include "PlayHistoryManager.h" #include "common_Types.h" #include "VersionDetect.h" +#include "HardwareInfo.h" // svnリビジョン埋め込み用 #include "version.h" @@ -232,6 +233,9 @@ extern "C" void nnMain(void) } common::Logger::GetLoggerInstance()->PrintResultIfFailed(result, __LINE__); + common::HardwareInfo hwInfo; + hwInfo.AddCheckDigit(reinterpret_cast(s_SerialNo)); + // デバイスIDの取得 bit32 deviceId; result = nn::ps::CTR::GetDeviceId(&deviceId); diff --git a/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile b/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile index 39abc74..487f326 100644 --- a/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile +++ b/trunk/ConsoleDataMigration/ConsoleBackup/OMakefile @@ -29,6 +29,7 @@ SOURCES[] = ConsoleBackup.cpp Controller.cpp Exporter.cpp + ../common/HardwareInfo.cpp ../common/DrawSystemState.cpp ../common/FileTransfer.cpp ../common/FileChecker.cpp diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp b/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp index 4af34b2..d0e6a02 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp +++ b/trunk/ConsoleDataMigration/ConsoleRestore/ConsoleRestore.cpp @@ -44,6 +44,7 @@ #include "SDMountManager.h" #include "HeapManager.h" #include "VersionDetect.h" +#include "HardwareInfo.h" // svnリビジョン埋め込み用 #include "version.h" @@ -238,6 +239,8 @@ extern "C" void nnMain(void) std::memset(s_SerialNo, '\0', nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN); result = nn::cfg::CTR::system::GetSerialNo(s_SerialNo); + common::HardwareInfo hwInfo; + hwInfo.AddCheckDigit(reinterpret_cast(s_SerialNo)); if(result.IsSuccess()) { s_CanReadSerialNumber = true; diff --git a/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile b/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile index ca7520a..90b2103 100644 --- a/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile +++ b/trunk/ConsoleDataMigration/ConsoleRestore/OMakefile @@ -31,6 +31,7 @@ SOURCES[] = Importer.cpp Updater.cpp Ntpclient.cpp + ../common/HardwareInfo.cpp ../common/DrawSystemState.cpp ../common/FileTransfer.cpp ../common/FileChecker.cpp diff --git a/trunk/ConsoleDataMigration/common/HardwareInfo.cpp b/trunk/ConsoleDataMigration/common/HardwareInfo.cpp new file mode 100644 index 0000000..c8a8f41 --- /dev/null +++ b/trunk/ConsoleDataMigration/common/HardwareInfo.cpp @@ -0,0 +1,61 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HardwareInfo.cpp + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#include +#include "HardwareInfo.h" + +#include + +namespace common +{ + +HardwareInfo::HardwareInfo() +{ + // TODO 自動生成されたコンストラクター・スタブ + +} + +HardwareInfo::~HardwareInfo() +{ + // TODO Auto-generated destructor stub +} + +// NULL終端されたシリアルナンバーを受け取る +// NULL終端された場所にチェックデジットを付加して新たにNULL終端する +void HardwareInfo::AddCheckDigit(char* serial) +{ + size_t len = std::strlen(serial); + + u8 digit = 0; + bool odd = true; + for(u8 i = len - 1; i > 0 && std::isdigit(serial[i]); i--) + { + if(odd) + { + digit += (serial[i] - '0') * 3; + } + else + { + digit += (serial[i] - '0'); + } + odd = !odd; + } + + serial[len] = 10 - (digit % 10) + '0'; + serial[len + 1] = '\0'; +} + + +} diff --git a/trunk/ConsoleDataMigration/common/HardwareInfo.h b/trunk/ConsoleDataMigration/common/HardwareInfo.h new file mode 100644 index 0000000..e6406cf --- /dev/null +++ b/trunk/ConsoleDataMigration/common/HardwareInfo.h @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------* + Project: Horizon + File: HardwareInfo.h + + Copyright 2009 Nintendo. All rights reserved. + + These coded instructions, statements, and computer programs contain + proprietary information of Nintendo of America Inc. and/or Nintendo + Company Ltd., and are protected by Federal copyright law. They may + not be disclosed to third parties or copied or duplicated in any form, + in whole or in part, without the prior written consent of Nintendo. + + $Rev$ + *---------------------------------------------------------------------------*/ + +#ifndef HARDWAREINFO_H_ +#define HARDWAREINFO_H_ + +namespace common +{ + +class HardwareInfo +{ +public: + HardwareInfo(); + virtual ~HardwareInfo(); + + void AddCheckDigit(char* serial); +}; + +} + +#endif /* HARDWAREINFO_H_ */