mirror of
https://github.com/rvtr/ctr_card_test.git
synced 2025-06-18 14:45:42 -04:00

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_card_test@11 ff8ce827-af98-4349-adb5-4c00699b5328
827 lines
18 KiB
C++
827 lines
18 KiB
C++
#include "nakayama.h"
|
||
|
||
using namespace nn::red::nakayama;
|
||
|
||
class ReadID1: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[RD_ID1]";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 100;
|
||
lb0.Y = 50;
|
||
lb0.Text = "ID1_0";
|
||
page.Add(lb0);
|
||
|
||
Label lb1;
|
||
lb1.X = 100;
|
||
lb1.Y = 80;
|
||
lb1.Text = "ID1_1";
|
||
page.Add(lb1);
|
||
|
||
Label lb2;
|
||
lb2.X = 100;
|
||
lb2.Y = 110;
|
||
lb2.Text = "ID1_2";
|
||
page.Add(lb2);
|
||
|
||
Label lb3;
|
||
lb3.X = 100;
|
||
lb3.Y = 140;
|
||
lb3.Text = "ID1_3";
|
||
page.Add(lb3);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
#ifdef INTEGRATION_TEST
|
||
setting.up_down = 0;
|
||
setting.StartAddress = 0;
|
||
setting.size = 0;
|
||
setting.EndAddress = 0;
|
||
setting.data = 0;
|
||
setting.reserved1 = 0;
|
||
setting.reserved2 = 0;
|
||
|
||
// ƒpƒ‰ƒ<E280B0><C692>[ƒ^<5E>Ý’è
|
||
cardSettingMenu( TID_FUNC_RDID1, &setting );
|
||
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_FUNC_RDID1), detailInfo
|
||
cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_RDID1, &detail);
|
||
#endif
|
||
}
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
class ReadID2: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[RD_ID2]";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 100;
|
||
lb0.Y = 50;
|
||
lb0.Text = "ID2_0";
|
||
page.Add(lb0);
|
||
|
||
Label lb1;
|
||
lb1.X = 100;
|
||
lb1.Y = 80;
|
||
lb1.Text = "ID2_1";
|
||
page.Add(lb1);
|
||
|
||
Label lb2;
|
||
lb2.X = 100;
|
||
lb2.Y = 110;
|
||
lb2.Text = "ID2_2";
|
||
page.Add(lb2);
|
||
|
||
Label lb3;
|
||
lb3.X = 100;
|
||
lb3.Y = 140;
|
||
lb3.Text = "ID2_3";
|
||
page.Add(lb3);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
#ifdef INTEGRATION_TEST
|
||
setting.up_down = 0;
|
||
setting.StartAddress = 0;
|
||
setting.size = 0;
|
||
setting.EndAddress = 0;
|
||
setting.data = 0;
|
||
setting.reserved1 = 0;
|
||
setting.reserved2 = 0;
|
||
|
||
// ƒpƒ‰ƒ<E280B0><C692>[ƒ^<5E>Ý’è
|
||
cardSettingMenu( TID_FUNC_RDID2, &setting );
|
||
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_FUNC_RDID2), detailInfo
|
||
cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_RDID2, &detail);
|
||
#endif
|
||
}
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
#define TEMP_BUFFER_SIZE 0x90
|
||
#define DUMP_NUM 0x100
|
||
#define ONE_PAGE_SIZE 0x80
|
||
|
||
class ReadSeqPageVerify: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
u64 dump_start_address;
|
||
u32 ofs;
|
||
size_t show_size;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Read SeqPage with Verify]";
|
||
page.Add(title);
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 20;
|
||
page.Add(menu);
|
||
|
||
VariableValue<u64> address;
|
||
address.SetShiftRange(16,0);
|
||
address.SetShiftBitSize(4);
|
||
menu.Register("address", address);
|
||
|
||
VariableValue<u64> read_size;
|
||
read_size.SetShiftRange(8,0);
|
||
read_size.SetShiftBitSize(4);
|
||
menu.Register("size", read_size);
|
||
|
||
Label verify;
|
||
verify.X = 200;
|
||
verify.Y = 50;
|
||
page.Add(verify);
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv•\ަ
|
||
Label dump[DUMP_NUM + 2];
|
||
u8 temp_buffer[TEMP_BUFFER_SIZE];
|
||
|
||
// ƒfƒoƒbƒO—p
|
||
for (int index=0; index<TEMP_BUFFER_SIZE; index++)
|
||
{
|
||
temp_buffer[index] = index & 0xff;
|
||
}
|
||
|
||
// •\ަ—pƒtƒ‰ƒO
|
||
bool done = false;
|
||
bool refresh = false;
|
||
|
||
ofs = 0;
|
||
show_size = 0;
|
||
|
||
// ƒfƒoƒbƒO—p
|
||
verify_result = true;
|
||
|
||
// ƒL<C692>[‘€<E28098>ì“Ç‚Ý<E2809A>o‚µ—p
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
// ƒ‹<C692>[ƒv
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
|
||
#ifdef INTEGRATION_TEST
|
||
setting.up_down = 0;
|
||
setting.StartAddress = address.GetValue();
|
||
setting.size = read_size.GetValue();
|
||
setting.EndAddress = setting.StartAddress + setting.size;
|
||
setting.data = 0;
|
||
setting.reserved1 = 0;
|
||
setting.reserved2 = 0;
|
||
|
||
// ƒpƒ‰ƒ<E280B0><C692>[ƒ^<5E>Ý’è
|
||
cardSettingMenu( TID_FUNC_RDSEQ_WITH_VERIFY, &setting );
|
||
|
||
// <20>ˆ—<CB86>ŠJŽn
|
||
cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_RDSEQ_WITH_VERIFY, &detail);
|
||
#endif
|
||
|
||
// ƒ_ƒ“ƒv•\ަŠJŽnƒAƒhƒŒƒX & •\ަƒTƒCƒY
|
||
dump_start_address = address.GetValue();
|
||
show_size = read_size.GetValue() > ONE_PAGE_SIZE ? ONE_PAGE_SIZE : read_size.GetValue();
|
||
|
||
// ƒxƒŠƒtƒ@ƒCŒ‹‰Ê
|
||
verify.Text = verify_result ? "Verify:OK" : "Verify:NG";
|
||
|
||
// •\ަ—pƒtƒ‰ƒO
|
||
done = true;
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒfƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if(pad.IsTrigger(KeyPad::L))
|
||
{
|
||
if( ofs >= ONE_PAGE_SIZE )
|
||
{
|
||
// ƒ_ƒ“ƒv•\ަƒIƒtƒZƒbƒg & •\ަƒTƒCƒY
|
||
ofs -= ONE_PAGE_SIZE;
|
||
show_size = ONE_PAGE_SIZE;
|
||
|
||
refresh = true;
|
||
}
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒCƒ“ƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if(pad.IsTrigger(KeyPad::R))
|
||
{
|
||
// [TODO] ƒoƒbƒtƒ@‚ð<E2809A>³Ž®‚È‚à‚Ì‚É<E2809A>Bƒoƒbƒtƒ@ƒTƒCƒY‚à<E2809A>³Ž®‚È‚à‚Ì‚É<E2809A>B
|
||
if( (ofs + ONE_PAGE_SIZE) < sizeof(temp_buffer) )
|
||
{
|
||
// ƒ_ƒ“ƒv•\ަƒIƒtƒZƒbƒg & •\ަƒTƒCƒY
|
||
ofs += ONE_PAGE_SIZE;
|
||
show_size = ONE_PAGE_SIZE;
|
||
|
||
// ƒPƒc‚Ì’†“r”¼’[‚ȃoƒbƒtƒ@‚ð•\ަ‚·‚é<E2809A>ê<EFBFBD>‡
|
||
if( (ofs + ONE_PAGE_SIZE) > sizeof(temp_buffer) )
|
||
{
|
||
show_size = sizeof(temp_buffer) - ofs;
|
||
}
|
||
|
||
refresh = true;
|
||
}
|
||
}
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv‚Ì•\ަ‚ð<E2809A>X<EFBFBD>V
|
||
if(refresh && done)
|
||
{
|
||
NN_TLOG_("[ofs : 0x%08x]\n", ofs);
|
||
#ifdef INTEGRATION_TEST
|
||
ShowMemDump( &page, dump, dump_start_address + ofs, card_test_buffer + ofs, show_size );
|
||
#else
|
||
ShowMemDump( &page, dump, dump_start_address + ofs, temp_buffer + ofs, show_size );
|
||
#endif
|
||
refresh = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadSeqPage: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Read SeqPage]";
|
||
page.Add(title);
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 20;
|
||
page.Add(menu);
|
||
|
||
VariableValue<u64> address;
|
||
address.SetShiftRange(16,0);
|
||
address.SetShiftBitSize(4);
|
||
menu.Register("address", address);
|
||
|
||
VariableValue<u64> read_size;
|
||
read_size.SetShiftRange(8,0);
|
||
read_size.SetShiftBitSize(4);
|
||
menu.Register("size", read_size);
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv•\ަ
|
||
Label dump[DUMP_NUM + 2];
|
||
u8 temp_buffer[DUMP_NUM];
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
bool done = false;
|
||
bool refresh = false;
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_FUNC_RDSEQ), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
|
||
done = true;
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒfƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::L))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒCƒ“ƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::R))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv‚Ì•\ަ‚ð<E2809A>X<EFBFBD>V
|
||
if(refresh && done)
|
||
{
|
||
ShowMemDump( &page, dump, address.GetValue(), temp_buffer, sizeof(temp_buffer) );
|
||
refresh = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class WritePageStart: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Write Page Start]";
|
||
page.Add(title);
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 20;
|
||
page.Add(menu);
|
||
|
||
VariableValue<u64> address;
|
||
address.SetShiftRange(16,0);
|
||
address.SetShiftBitSize(4);
|
||
menu.Register("address", address);
|
||
|
||
SelectableValue<NamedValue<int> > write_pattern;
|
||
write_pattern.Add(*(new NamedValue<int> ("0x0000", 0)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0x00FF", 1)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0x55AA", 2)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0xFFFF", 3)));
|
||
write_pattern.Add(*(new NamedValue<int> ("DEC", 4)));
|
||
write_pattern.Add(*(new NamedValue<int> ("INC", 5)));
|
||
menu.Register("Write Pattern", write_pattern);
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv•\ަ
|
||
Label dump[DUMP_NUM + 2];
|
||
u8 temp_buffer[DUMP_NUM];
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
bool done = false;
|
||
bool refresh = false;
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_WR_PAGE_START), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
|
||
done = true;
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒfƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::L))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒCƒ“ƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::R))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv‚Ì•\ަ‚ð<E2809A>X<EFBFBD>V
|
||
if(refresh && done)
|
||
{
|
||
ShowMemDump( &page, dump, address.GetValue(), temp_buffer, sizeof(temp_buffer) );
|
||
refresh = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class WritePage: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Write Page]";
|
||
page.Add(title);
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 20;
|
||
page.Add(menu);
|
||
|
||
SelectableValue<NamedValue<int> > write_pattern;
|
||
write_pattern.Add(*(new NamedValue<int> ("0x0000", 0)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0x00FF", 1)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0x55AA", 2)));
|
||
write_pattern.Add(*(new NamedValue<int> ("0xFFFF", 3)));
|
||
write_pattern.Add(*(new NamedValue<int> ("DEC", 4)));
|
||
write_pattern.Add(*(new NamedValue<int> ("INC", 5)));
|
||
menu.Register("Write Pattern", write_pattern);
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv•\ަ
|
||
Label dump[DUMP_NUM + 2];
|
||
u8 temp_buffer[DUMP_NUM];
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
bool done = false;
|
||
bool refresh = false;
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_WR_PAGE), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
|
||
done = true;
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒfƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::L))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒCƒ“ƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::R))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv‚Ì•\ަ‚ð<E2809A>X<EFBFBD>V
|
||
if(refresh && done)
|
||
{
|
||
ShowMemDump( &page, dump, 0x0, temp_buffer, sizeof(temp_buffer) );
|
||
refresh = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadWREXE: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Read WREXE]";
|
||
page.Add(title);
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 20;
|
||
page.Add(menu);
|
||
|
||
VariableValue<u64> address;
|
||
address.SetShiftRange(16,0);
|
||
address.SetShiftBitSize(4);
|
||
menu.Register("address", address);
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv•\ަ
|
||
Label dump[DUMP_NUM + 2];
|
||
u8 temp_buffer[DUMP_NUM];
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
bool done = false;
|
||
bool refresh = false;
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_RD_WREXE), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
|
||
done = true;
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒfƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::L))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// 1‰æ–Ê•ªƒAƒhƒŒƒX‚ðƒCƒ“ƒNƒŠƒ<C5A0>ƒ“ƒg
|
||
if (pad.IsTrigger(KeyPad::R))
|
||
{
|
||
|
||
refresh = true;
|
||
}
|
||
|
||
// ƒ<>ƒ‚ƒŠƒ_ƒ“ƒv‚Ì•\ަ‚ð<E2809A>X<EFBFBD>V
|
||
if(refresh && done)
|
||
{
|
||
ShowMemDump( &page, dump, address.GetValue(), temp_buffer, sizeof(temp_buffer) );
|
||
refresh = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadUID: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Read UID]";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 50;
|
||
lb0.Y = 50;
|
||
lb0.Text = "UID **************";
|
||
page.Add(lb0);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_RD_UID), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
}
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadRefresh: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 10;
|
||
title.Y = 10;
|
||
title.Text = "[Read REFRESH]";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 100;
|
||
lb0.Y = 50;
|
||
lb0.Text = "TIME OUT";
|
||
page.Add(lb0);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::A))
|
||
{
|
||
// ˆø<CB86>”:buffer, BUFFER_SIZE, TestCaseID(TID_RD_REFRESH), detailInfo
|
||
|
||
//cardFunctionTestStart();
|
||
}
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadUndefinedCommand: public CardTestProgram
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
title.Y = 10;
|
||
title.Text = "Undefined Command";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 100;
|
||
lb0.Y = 50;
|
||
lb0.Text = "***************************";
|
||
page.Add(lb0);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class CommandTest: public CardTestProgram
|
||
{
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
title.Y = 10;
|
||
title.Text = "Command Test";
|
||
page.Add(title);
|
||
|
||
Label date;
|
||
date.X = 250;
|
||
date.Y = 10;
|
||
date.Text = __DATE__;
|
||
page.Add(date);
|
||
|
||
Selector<CardTestProgram> menu;
|
||
menu.X = 20;
|
||
menu.Y = 40;
|
||
page.Add(menu);
|
||
|
||
// RD_ID1, RD_ID2
|
||
menu.Register("RD_ID1", *(new ReadID1()));
|
||
menu.Register("RD_ID2", *(new ReadID2()));
|
||
|
||
// RD_SEQ_PAGE with verify, RD_SEQ_PAGE
|
||
menu.Register("RD_SEQ_PAGE with verify", *(new ReadSeqPageVerify()));
|
||
menu.Register("RD_SEQ_PAGE", *(new ReadSeqPage()));
|
||
|
||
// WR_PAGE_START, WR_PAGE
|
||
menu.Register("WR_PAGE_START", *(new WritePageStart()));
|
||
menu.Register("WR_PAGE", *(new WritePage()));
|
||
|
||
// RD_WREXE
|
||
menu.Register("RD_WREXE", *(new ReadWREXE()));
|
||
|
||
// RD_UID
|
||
menu.Register("RD_UID", *(new ReadUID()));
|
||
|
||
// RD_REFRESH
|
||
menu.Register("RD_REFRESH", *(new ReadRefresh()));
|
||
|
||
// Undefined COMMAND
|
||
menu.Register("Undefined COMMAND", *(new ReadUndefinedCommand()));
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Upper));
|
||
|
||
if (menu.Selected)
|
||
{
|
||
menu.GetSelectedItem()->Execute();
|
||
menu.Selected = false;
|
||
}
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|