チェックデジット無しのシリアルNo.を下画面に表示するように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@667 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2012-03-16 04:44:47 +00:00
parent 5b596ad4f2
commit 634c9575ed
3 changed files with 50 additions and 36 deletions

View File

@ -249,7 +249,9 @@ extern "C" void nnMain(void)
if(qr) 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 else
{ {
@ -325,16 +327,15 @@ extern "C" void nnMain(void)
s_RenderSystem.FillRectangle(0, lineBottom * spaceSize, screenWidth, spaceSize); s_RenderSystem.FillRectangle(0, lineBottom * spaceSize, screenWidth, spaceSize);
s_RenderSystem.SetColor(1.f, 1.f, 1.f); 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)); s_RenderSystem.SetRenderTarget(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip));
if(IsRestoreSucceeded()) if (IsRestoreSucceeded())
{ {
s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR); s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), SUCCESS_COLOR);
} }
else if(IsRestoreFailed()) else if (IsRestoreFailed())
{ {
s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR); s_RenderSystem.SetClearColor(common::Util::GetRenderTarget(NN_GX_DISPLAY1, flip), FAIL_COLOR);
} }
@ -347,7 +348,7 @@ extern "C" void nnMain(void)
common::Logger::GetLoggerInstance()->DrawConsole(); common::Logger::GetLoggerInstance()->DrawConsole();
s_RenderSystem.SwapBuffers(); s_RenderSystem.SwapBuffers();
}
s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH); s_RenderSystem.WaitVsync(NN_GX_DISPLAY_BOTH);

View File

@ -33,16 +33,29 @@ QrImage::~QrImage()
// TODO Auto-generated destructor stub // 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<u8*>(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; using namespace mw::qre;
char deviceIdStr[32];
QREncoder *encoder = new QREncoder; QREncoder *encoder = new QREncoder;
nn::nstd::TSNPrintf(deviceIdStr, sizeof(deviceIdStr), "%llu", deviceId); u32 dataSize = std::strlen(reinterpret_cast<char*>(str));
u32 dataSize = std::strlen(deviceIdStr);
u32 requiredMemorySize = QREncoder::GetEncodeBufferSize(dataSize, 3, 1); u32 requiredMemorySize = QREncoder::GetEncodeBufferSize(dataSize, 3, 1);
common::HeapManager heap(requiredMemorySize); common::HeapManager heap(requiredMemorySize);
if(!heap.GetAddr()) if(!heap.GetAddr())
@ -60,7 +73,7 @@ void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool
info.ecc_level = ECC_LEVEL_H; info.ecc_level = ECC_LEVEL_H;
/* コンテンツ文字列の情報 */ /* コンテンツ文字列の情報 */
info.size = dataSize; info.size = dataSize;
info.data = reinterpret_cast<u8*>(deviceIdStr); info.data = str;
/* /*
* *
* *
@ -90,13 +103,11 @@ void QrImage::Draw(demo::RenderSystemDrawing& renderSystem, bit64 deviceId, bool
} }
delete encoder; delete encoder;
renderSystem.SetRenderTarget(Util::GetRenderTarget(NN_GX_DISPLAY0, flip)); DrawImage(renderSystem, QRImage.rgb888Data, QRImage.width, QRImage.height, target);
renderSystem.Clear();
DrawImage(renderSystem, QRImage.rgb888Data, QRImage.width, QRImage.height, flip);
common::ForceFree(QRImage.rgb888Data); 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; static GLuint textureId = 0;
if (textureId != 0) if (textureId != 0)
@ -119,7 +130,7 @@ void QrImage::DrawImage(demo::RenderSystemDrawing& renderSystem, u8* textureData
f32 windowPositionX = 0.0f; f32 windowPositionX = 0.0f;
f32 windowPositionY = 0.0f; f32 windowPositionY = 0.0f;
if (!flip) if (renderTarget == NN_GX_DISPLAY0)
{ {
windowPositionX = (nn::gx::DISPLAY0_HEIGHT / 2) - (width / 2); windowPositionX = (nn::gx::DISPLAY0_HEIGHT / 2) - (width / 2);
if (height < nn::gx::DISPLAY0_WIDTH) if (height < nn::gx::DISPLAY0_WIDTH)

View File

@ -28,10 +28,12 @@ public:
QrImage(); QrImage();
virtual ~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: 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, static u8* GetTextureDataFromRawData(const u32& width,
const u32& height, const u32& height,
u8* rawDataBuffer, u8* rawDataBuffer,