チェックデジット無しのシリアル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)
{
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);

View File

@ -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<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;
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<char*>(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<u8*>(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)

View File

@ -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,