ctr_card_test/trunk/CommandTest.cpp
(no author) 5ca4e48ce9 結合テスト準備
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_card_test@11 ff8ce827-af98-4349-adb5-4c00699b5328
2010-02-23 01:42:22 +00:00

827 lines
18 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}
}
};
};