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)
|
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);
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user