Library for Skeleton of SD card player. SD カードプレーヤのための骨組みとして使うためのライブラリ.このライブラリを登録した際のプログラム:「F746_SD_Player_Demo」

Dependencies:   SDFileSystem_Warning_Fixed

Dependents:   F746_SD_Player_Demo F746_SD_VarableFilter F746_SD_GraphicEqualizer F746_MySoundMachine ... more

Revision:
1:c7968701f7b3
Parent:
0:d310bb78455d
Child:
2:511479736d6e
--- a/SD_PlayerSkeleton.cpp	Mon Aug 15 04:38:45 2016 +0000
+++ b/SD_PlayerSkeleton.cpp	Mon Aug 15 06:06:52 2016 +0000
@@ -1,28 +1,30 @@
 //--------------------------------------------------------------
 //  SD プレーヤー用抽象基底クラス
 //
-//  2016/07/17, Copyright (c) 2016 MIKAMI, Naoki
+//  2016/08/15, Copyright (c) 2016 MIKAMI, Naoki
 //--------------------------------------------------------------
 
 #include "SD_PlayerSkeleton.hpp"
 
 namespace Mikami
 {
-    SD_PlayerSkeleton::SD_PlayerSkeleton(string str, int fs)
+    SD_PlayerSkeleton::SD_PlayerSkeleton(string str, int fs, bool reset)
         : FRAME_SIZE_(2048), sn_(FRAME_SIZE_),
           mySai_(SaiIO::OUTPUT, FRAME_SIZE_, fs),
           sdReader_(FRAME_SIZE_),
           title_(214, 4, str, Label::CENTER, Font16),
-          selector_(4, 22, 7, 37, sdReader_),
+          selector_(0, 22, 7, 37, sdReader_),
           menu_(BG_LEFT_, 2, BG_WIDTH_, BG_HEIGHT_, 5,
                 (string[]){"OPEN", "PLAY", "PAUSE", "RESUME", "STOP"},
-                0, 2, 1)
+                0, 2, 1),
+          resetActive_(reset)
     {
         if (!selector_.CreateTable())
             BlinkLabel errLabel(240, 100, "SD CARD ERROR", Label::CENTER);
 
         menu_.InactivateAll();
         menu_.Activate(0);
+        if (resetActive_) reset_ = new ResetButton();
     }
 
     void SD_PlayerSkeleton::Execute()
@@ -39,7 +41,7 @@
                 {
                     whileFirst = false;
                     while (!menu_.Touched(0))   // OPEN がタッチされるまで待つ
-                        Modefy();
+                        CheckCtrl();
                     SelectFile();
                 }
                 else
@@ -47,13 +49,13 @@
                     menu_.Activate(1);          // PLAY 有効
                     int touch10;
                     while (!menu_.GetTouchedNumber(touch10))
-                        Modefy();
+                        CheckCtrl();
                     if (touch10 == 0) SelectFile();
                 }
 
                 loopCount = SD_Open();
                 while (!menu_.Touched(1))       // PLAY がタッチされるまで待つ
-                    Modefy();
+                    CheckCtrl();
             }
             else
                 loopCount = SD_Open();
@@ -62,6 +64,7 @@
             title_.Draw();
 
             Display();  // アプリ固有の表示処理
+            if (resetActive_) reset_->Draw();
 
             menu_.Inactivate(0);    // OPEN 無効
             menu_.Activate(2);      // PAUSE 有効
@@ -88,7 +91,7 @@
                     // PLAY か RESUME か STOP がタッチされるまで待つ
                     int touch134 = -1;
                     while (!menu_.GetTouchedNumber(touch134))
-                        Modefy();
+                        CheckCtrl();
                     switch (touch134)
                     {
                         case 1: playOk = true;      // 最初から PLAY
@@ -104,7 +107,7 @@
                 }
                 if (playOk || stopOk) break;
 
-                Modefy();
+                CheckCtrl();
                 // 1フレーム分の信号処理の実行
                 SignalProcessing();
             }
@@ -138,4 +141,11 @@
             wait_ms(200);
         } while (!menu_.Touched(1));    // PLAY がタッチされるまで繰り返す
     }
+
+    // パネル操作のチェック
+    void SD_PlayerSkeleton::CheckCtrl()
+    {
+        if (resetActive_) reset_->Do();
+        Modefy();
+    }
 }