diff --git a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ConsoleRestore.cpp b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ConsoleRestore.cpp index 9f6333b..d382df6 100644 --- a/trunk/ConsoleDataMigration/sources/ConsoleRestore/ConsoleRestore.cpp +++ b/trunk/ConsoleDataMigration/sources/ConsoleRestore/ConsoleRestore.cpp @@ -249,7 +249,9 @@ extern "C" void nnMain(void) if(qr) { - common::QrImage::Draw(s_RenderSystem, s_HwUtility.GetInfraDeviceId(), flip); + u8 serial[nn::cfg::CTR::CFG_SECURE_INFO_SERIAL_NO_LEN]; + s_HwUtility.GetSerialNumberWithoutCD(serial); + common::QrImage::Draw(s_RenderSystem, s_HwUtility.GetInfraDeviceId(), serial, flip); } else { @@ -325,29 +327,28 @@ extern "C" void nnMain(void) s_RenderSystem.FillRectangle(0, lineBottom * spaceSize, screenWidth, spaceSize); s_RenderSystem.SetColor(1.f, 1.f, 1.f); } - } - s_RenderSystem.SwapBuffers(); + s_RenderSystem.SwapBuffers(); - // デフォルトで下画面に描画するもの - s_RenderSystem.SetRenderTarget(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip)); - if(IsRestoreSucceeded()) - { - s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); - } - else if(IsRestoreFailed()) - { - s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); - } - else - { - s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), NORMAL_COLOR); - } - s_RenderSystem.Clear(); - s_RenderSystem.SetColor(1.f, 1.f, 1.f); - - common::Logger::GetLoggerInstance()->DrawConsole(); - s_RenderSystem.SwapBuffers(); + // デフォルトで下画面に描画するもの + s_RenderSystem.SetRenderTarget(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip)); + if (IsRestoreSucceeded()) + { + s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); + } + else if (IsRestoreFailed()) + { + s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); + } + else + { + s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), NORMAL_COLOR); + } + s_RenderSystem.Clear(); + s_RenderSystem.SetColor(1.f, 1.f, 1.f); + common::Logger::GetLoggerInstance()->DrawConsole(); + s_RenderSystem.SwapBuffers(); + } s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH); diff --git a/trunk/ConsoleDataMigration/sources/common/QrImage.cpp b/trunk/ConsoleDataMigration/sources/common/QrImage.cpp index b96473a..cff397d 100644 --- a/trunk/ConsoleDataMigration/sources/common/QrImage.cpp +++ b/trunk/ConsoleDataMigration/sources/common/QrImage.cpp @@ -33,16 +33,29 @@ QrImage::~QrImage() // TODO Auto-generated destructor stub } -void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool flip) +void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, u8* serialNo, bool flip) +{ + char deviceIdStr[32]; + nn::nstd::TSNPrintf(deviceIdStr, sizeof(deviceIdStr), "%llu", deviceId); + + renderSystem.SetRenderTarget(Util::GetRenderTarget(NN_GX_DISPLAY0, flip)); + renderSystem.Clear(); + renderSystem.DrawText(0, 0, "DeviceId"); + DrawStringinQr(renderSystem, reinterpret_cast(deviceIdStr), Util::GetRenderTarget(NN_GX_DISPLAY0, flip)); + renderSystem.SwapBuffers(); + renderSystem.SetRenderTarget(Util::GetRenderTarget(NN_GX_DISPLAY1, flip)); + renderSystem.Clear(); + renderSystem.DrawText(0, 0, "SerialNo."); + DrawStringinQr(renderSystem, serialNo, Util::GetRenderTarget(NN_GX_DISPLAY1, flip)); + renderSystem.SwapBuffers(); +} + +void QrImage::DrawStringinQr(demo::RenderSystemDrawing& renderSystem, u8* str, u32 target) { using namespace mw::qre; - char deviceIdStr[32]; - QREncoder *encoder = new QREncoder; - nn::nstd::TSNPrintf(deviceIdStr, sizeof(deviceIdStr), "%llu", deviceId); - - u32 dataSize = std::strlen(deviceIdStr); + u32 dataSize = std::strlen(reinterpret_cast(str)); u32 requiredMemorySize = QREncoder::GetEncodeBufferSize(dataSize, 3, 1); common::HeapManager heap(requiredMemorySize); if(!heap.GetAddr()) @@ -60,7 +73,7 @@ void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool info.ecc_level = ECC_LEVEL_H; /* コンテンツ文字列の情報 */ info.size = dataSize; - info.data = reinterpret_cast(deviceIdStr); + info.data = str; /* * コンテンツサイズに合わせて分割、 * このサンプルでは分割するほど大きなデータを入力することは想定していない @@ -90,13 +103,11 @@ void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool } delete encoder; - renderSystem.SetRenderTarget(Util::GetRenderTarget(NN_GX_DISPLAY0, flip)); - renderSystem.Clear(); - DrawImage(renderSystem, QRImage.rgb888Data, QRImage.width, QRImage.height, flip); + DrawImage(renderSystem, QRImage.rgb888Data, QRImage.width, QRImage.height, target); common::ForceFree(QRImage.rgb888Data); } -void QrImage::DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureDataPtr, u32 width, u32 height, bool flip) +void QrImage::DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureDataPtr, u32 width, u32 height, u32 renderTarget) { static GLuint textureId = 0; if (textureId != 0) @@ -119,7 +130,7 @@ void QrImage::DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureData f32 windowPositionX = 0.0f; f32 windowPositionY = 0.0f; - if (!flip) + if (renderTarget == NN_GX_DISPLAY0) { windowPositionX = (nn::gx::DISPLAY0_HEIGHT / 2) - (width / 2); if (height < nn::gx::DISPLAY0_WIDTH) diff --git a/trunk/ConsoleDataMigration/sources/common/QrImage.h b/trunk/ConsoleDataMigration/sources/common/QrImage.h index 8627999..9f5881d 100644 --- a/trunk/ConsoleDataMigration/sources/common/QrImage.h +++ b/trunk/ConsoleDataMigration/sources/common/QrImage.h @@ -28,10 +28,12 @@ public: QrImage(); virtual ~QrImage(); - static void Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool flip); + static void Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, u8* serialNo, bool flip); private: - static void DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureDataPtr, u32 width, u32 height, bool flip); + // NULL終端された文字列を受け取り、QRコードにして表示する + static void DrawStringinQr(demo::RenderSystemDrawing& renderSystem, u8* str, u32 target); + static void DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureDataPtr, u32 width, u32 height, u32 renderTarget); static u8* GetTextureDataFromRawData(const u32& width, const u32& height, u8* rawDataBuffer,