#include "nakayama.h" using namespace nn::red::nakayama; class CardFunctionTest: public CardTestProgram { public: virtual void Execute() { bool run = false; Page page; Label title; title.X = 10; title.Y = 10; if ( card_type == CARD_TYPE_S1 ) { title.Text = "[S1 Function Test]"; } else { title.Text = "[S2 Function Test]"; } page.Add(title); Label running; running.X = 120; running.Y = 100; running.Text = "Running"; page.Add(running); Label loop; loop.X = 10; loop.Y = 200; loop.Text = "Loop:"; page.Add(loop); Label count; count.X = 60; count.Y = 200; count.Text = "0000000000000"; page.Add(count); KeyPad& pad = KeyPad::GetInstance(); while (1) { pad.ReadKey(); page.Show(Display::GetInstance(Display::Lower)); if (pad.IsTrigger(KeyPad::A)) { // 実行中でなければ if( !run ) { run = true; #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; if ( card_type == CARD_TYPE_S1 ) { // パラメータ設定 cardSettingMenu( TID_FUNC_TEST1, &setting ); // S1なら 引数:buffer, BUFFER_SIZE, TestCaseID(TID_FUNC_TEST1), detailInfo cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_TEST1, &detail); } else { // パラメータ設定 cardSettingMenu( TID_FUNC_TEST2, &setting ); // S2なら 引数:buffer, BUFFER_SIZE, TestCaseID(TID_FUNC_TEST2), detailInfo cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_TEST2, &detail); } #endif } } if (pad.IsTrigger(KeyPad::B)) { // 実行中であれば if( run ) { run = false; #ifdef INTEGRATION_TEST cardFunctionTestEnd(); #endif } else { Display::GetInstance(Display::Lower).Clear(); Display::GetInstance(Display::Lower).SwapBuffer(); break; } } } }; }; class IrregularAccessTest: public CardTestProgram { public: virtual void Execute() { bool run = false; Page page; Label title; title.X = 10; title.Y = 10; title.Text = "[Irregular Access Test]"; page.Add(title); Label loop; loop.X = 10; loop.Y = 200; loop.Text = "Loop:"; page.Add(loop); Label count; count.X = 60; count.Y = 200; count.Text = "0000000000000"; page.Add(count); KeyPad& pad = KeyPad::GetInstance(); while (1) { pad.ReadKey(); page.Show(Display::GetInstance(Display::Lower)); if (pad.IsTrigger(KeyPad::A)) { // 実行中でなければ if( !run ) { run = true; #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; // パラメータ設定 cardSettingMenu( TID_FUNC_INTEG, &setting ); // 処理開始 cardFunctionTestStart( (u8*)card_test_buffer, BUFFER_SIZE, TID_FUNC_INTEG, &detail); #endif } } if (pad.IsTrigger(KeyPad::B)) { // 実行中であれば if( run ) { run = false; #ifdef INTEGRATION_TEST cardFunctionTestEnd(); #endif } else { Display::GetInstance(Display::Lower).Clear(); Display::GetInstance(Display::Lower).SwapBuffer(); break; } } } }; }; class FunctionTest: public CardTestProgram { virtual void Execute() { string test_label; Page page; Label title; title.X = 20; title.Y = 10; title.Text = "Function Test"; page.Add(title); Label date; date.X = 250; date.Y = 10; date.Text = __DATE__; page.Add(date); Selector menu; menu.X = 30; menu.Y = 40; page.Add(menu); // [TODO] カードID読み出し card_type = CARD_TYPE_S1; if ( card_type == CARD_TYPE_S1 ) { test_label = "S1 Function Test"; } else { test_label = "S2 Function Test"; } menu.Register(test_label , *(new CardFunctionTest())); menu.Register("Irregular Access Test", *(new IrregularAccessTest())); while (1) { page.Show(Display::GetInstance(Display::Upper)); if (menu.Selected) { menu.GetSelectedItem()->Execute(); menu.Selected = false; } if (menu.Canceled) { menu.Canceled = false; break; } } }; };