mirror of
https://github.com/rvtr/ctr_card_test.git
synced 2025-06-19 23:25:44 -04:00

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_card_test@3 ff8ce827-af98-4349-adb5-4c00699b5328
642 lines
12 KiB
C++
642 lines
12 KiB
C++
#include "nakayama.h"
|
||
|
||
using namespace nn::red::nakayama;
|
||
|
||
class ReadID1: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
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)
|
||
{
|
||
pad.ReadKey();
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
;
|
||
};
|
||
|
||
class ReadID2: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
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)
|
||
{
|
||
pad.ReadKey();
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
;
|
||
};
|
||
|
||
#define DUMP_NUM 0x10
|
||
|
||
class ReadSeqPageVerify: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 0;
|
||
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 = 10;
|
||
verify.Text = "Verify :";
|
||
page.Add(verify);
|
||
|
||
// <20>Œ胉<C592>x<EFBFBD><78>
|
||
Label index;
|
||
index.X = 0;
|
||
index.Y = 50;
|
||
index.Text = " |00 01 02 03 04 05 06 07";
|
||
page.Add(index);
|
||
|
||
Label line;
|
||
line.X = 0;
|
||
line.Y = 60;
|
||
line.Text = "---------------------------------------";
|
||
page.Add(line);
|
||
|
||
// [TODO]<5D>o<EFBFBD>b<EFBFBD>t<EFBFBD>@<40><><EFBFBD>^<5E><><EFBFBD>ĕ\<5C><><EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>悤<EFBFBD>ɁB<C981><42><EFBFBD>̑<EFBFBD><CC91><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뒲<EFBFBD><EB92B2><EFBFBD>B
|
||
int start = 0x0;
|
||
Label dump[DUMP_NUM];
|
||
for(int i=0; i<DUMP_NUM; i++)
|
||
{
|
||
ostringstream adr;
|
||
|
||
dump[i].X = 0;
|
||
dump[i].Y = 70 + 10 * i;
|
||
|
||
// <20>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
adr << "0x";
|
||
adr.fill('0');
|
||
adr << setw(12) << right << hex << start + (0x10 * i) << "|";
|
||
|
||
// dump<6D><70><EFBFBD><EFBFBD>
|
||
for(int j=0; j<0x8; j++)
|
||
{
|
||
adr << setw(2) << left << hex << 0x00 + j << " ";
|
||
}
|
||
|
||
dump[i].Text = adr.str();
|
||
|
||
page.Add(dump[i]);
|
||
}
|
||
|
||
// [TODO]<5D>x<EFBFBD><78><EFBFBD>t<EFBFBD>@<40>C<EFBFBD>̌<EFBFBD><CC8C>ʂɉ<CA82><C989><EFBFBD><EFBFBD>ĕύX
|
||
if (1)
|
||
{
|
||
verify.Text = "Verify : OK";
|
||
}
|
||
else
|
||
{
|
||
verify.Text = "Verify : NG";
|
||
}
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadSeqPage: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 0;
|
||
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);
|
||
|
||
// <20>Œ胉<C592>x<EFBFBD><78>
|
||
Label index;
|
||
index.X = 0;
|
||
index.Y = 50;
|
||
index.Text = " |00 01 02 03 04 05 06 07";
|
||
page.Add(index);
|
||
|
||
Label line;
|
||
line.X = 0;
|
||
line.Y = 60;
|
||
line.Text = "---------------------------------------";
|
||
page.Add(line);
|
||
|
||
int start = 0x0;
|
||
Label dump[DUMP_NUM];
|
||
for(int i=0; i<DUMP_NUM; i++)
|
||
{
|
||
ostringstream adr;
|
||
|
||
dump[i].X = 0;
|
||
dump[i].Y = 70 + 10 * i;
|
||
|
||
// <20>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
adr << "0x";
|
||
adr.fill('0');
|
||
adr << setw(12) << right << hex << start + (0x10 * i) << "|";
|
||
|
||
// dump<6D><70><EFBFBD><EFBFBD>
|
||
for(int j=0; j<0x8; j++)
|
||
{
|
||
adr << setw(2) << left << hex << 0x00 + j << " ";
|
||
}
|
||
|
||
dump[i].Text = adr.str();
|
||
|
||
page.Add(dump[i]);
|
||
}
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class WritePageStart: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 0;
|
||
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);
|
||
|
||
// <20>Œ胉<C592>x<EFBFBD><78>
|
||
Label index;
|
||
index.X = 0;
|
||
index.Y = 50;
|
||
index.Text = " |00 01 02 03 04 05 06 07";
|
||
page.Add(index);
|
||
|
||
Label line;
|
||
line.X = 0;
|
||
line.Y = 60;
|
||
line.Text = "---------------------------------------";
|
||
page.Add(line);
|
||
|
||
int start = 0x0;
|
||
Label dump[DUMP_NUM];
|
||
for(int i=0; i<DUMP_NUM; i++)
|
||
{
|
||
ostringstream adr;
|
||
|
||
dump[i].X = 0;
|
||
dump[i].Y = 70 + 10 * i;
|
||
|
||
// <20>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
adr << "0x";
|
||
adr.fill('0');
|
||
adr << setw(12) << right << hex << start + (0x10 * i) << "|";
|
||
|
||
// dump<6D><70><EFBFBD><EFBFBD>
|
||
for(int j=0; j<0x8; j++)
|
||
{
|
||
adr << setw(2) << left << hex << 0x00 + j << " ";
|
||
}
|
||
|
||
dump[i].Text = adr.str();
|
||
|
||
page.Add(dump[i]);
|
||
}
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class WritePage: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 50;
|
||
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);
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadWREXE: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
VariableSelector menu;
|
||
menu.X = 10;
|
||
menu.Y = 0;
|
||
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);
|
||
|
||
// <20>Œ胉<C592>x<EFBFBD><78>
|
||
Label index;
|
||
index.X = 0;
|
||
index.Y = 50;
|
||
index.Text = " |00 01 02 03 04 05 06 07";
|
||
page.Add(index);
|
||
|
||
Label line;
|
||
line.X = 0;
|
||
line.Y = 60;
|
||
line.Text = "---------------------------------------";
|
||
page.Add(line);
|
||
|
||
int start = 0x0;
|
||
Label dump[DUMP_NUM];
|
||
for(int i=0; i<DUMP_NUM; i++)
|
||
{
|
||
ostringstream adr;
|
||
|
||
dump[i].X = 0;
|
||
dump[i].Y = 70 + 10 * i;
|
||
|
||
// <20>A<EFBFBD>h<EFBFBD><68><EFBFBD>X<EFBFBD>\<5C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
adr << "0x";
|
||
adr.fill('0');
|
||
adr << setw(12) << right << hex << start + (0x10 * i) << "|";
|
||
|
||
// dump<6D><70><EFBFBD><EFBFBD>
|
||
for(int j=0; j<0x8; j++)
|
||
{
|
||
adr << setw(2) << left << hex << 0x00 + j << " ";
|
||
}
|
||
|
||
dump[i].Text = adr.str();
|
||
|
||
page.Add(dump[i]);
|
||
}
|
||
|
||
while (1)
|
||
{
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (menu.Canceled)
|
||
{
|
||
menu.Canceled = false;
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadUID: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
title.Y = 10;
|
||
title.Text = "RD_UID";
|
||
page.Add(title);
|
||
|
||
Label lb0;
|
||
lb0.X = 50;
|
||
lb0.Y = 50;
|
||
lb0.Text = "UID **************";
|
||
page.Add(lb0);
|
||
|
||
KeyPad& pad = KeyPad::GetInstance();
|
||
|
||
while (1)
|
||
{
|
||
pad.ReadKey();
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadRefresh: public Program
|
||
{
|
||
public:
|
||
virtual void Execute()
|
||
{
|
||
Page page;
|
||
|
||
Label title;
|
||
title.X = 20;
|
||
title.Y = 10;
|
||
title.Text = "RD_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)
|
||
{
|
||
pad.ReadKey();
|
||
page.Show(Display::GetInstance(Display::Lower));
|
||
|
||
if (pad.IsTrigger(KeyPad::B))
|
||
{
|
||
Display::GetInstance(Display::Lower).Clear();
|
||
Display::GetInstance(Display::Lower).SwapBuffer();
|
||
break;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|
||
|
||
class ReadUndefinedCommand: public Program
|
||
{
|
||
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)
|
||
{
|
||
pad.ReadKey();
|
||
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 Program
|
||
{
|
||
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<Program> 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;
|
||
}
|
||
}
|
||
};
|
||
};
|
||
|