mirror of
https://github.com/rvtr/ctr_Repair.git
synced 2025-10-31 13:51:08 -04:00
チェックデジット無しのシリアル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:
parent
5b596ad4f2
commit
634c9575ed
@ -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);
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user