Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem_Warning_Fixed
Diff: SD_PlayerSkeleton.cpp
- Revision:
- 8:59d3f9c81c4f
- Parent:
- 7:930d50953ec2
- Child:
- 9:1ba92e340dce
--- a/SD_PlayerSkeleton.cpp Tue Nov 15 13:28:02 2016 +0000
+++ b/SD_PlayerSkeleton.cpp Wed Nov 16 13:38:39 2016 +0000
@@ -1,7 +1,7 @@
//--------------------------------------------------------------
// SD プレーヤー用抽象基底クラス
//
-// 2016/11/15, Copyright (c) 2016 MIKAMI, Naoki
+// 2016/11/16, Copyright (c) 2016 MIKAMI, Naoki
//--------------------------------------------------------------
#include "SD_PlayerSkeleton.hpp"
@@ -12,6 +12,7 @@
: FRAME_SIZE_(2048), sn_(FRAME_SIZE_),
mySai_(SaiIO::OUTPUT, FRAME_SIZE_, fs),
sdReader_(FRAME_SIZE_),
+ fileName_(""),
title_(214, 4, str, Label::CENTER, Font16),
selector_(0, 22, 256, 37, sdReader_),
menu_(BG_LEFT_, 2, BG_WIDTH_, BG_HEIGHT_, 5,
@@ -34,25 +35,17 @@
int32_t loopCount;
WaitTouched(0); // OPEN がタッチされるまで待つ
- SelectFile();
- bool whileFirst = true;
while (true)
{
- if (!playAfterPause) // PAUSE 後の PLAY ではない場合
+ if (playAfterPause) // PAUSE 後の PLAY の場合
+ loopCount = SD_Open();
+ else // PAUSE 後の PLAY ではない場合
{
- if (!whileFirst) // while ループで初回の処理ではない場合
- {
- menu_.Activate(1); // PLAY ボタン有効
- if (WaitTouched() == 0) SelectFile();
- }
-
- whileFirst = false;
+ if (WaitTouched() == 0) SelectFile();
loopCount = SD_Open();
WaitTouched(1); // PLAY がタッチされるまで待つ
}
- else // PAUSE 後の PLAY の場合
- loopCount = SD_Open();
selector_.Erase(0, 0, BG_LEFT_-4, 272);
title_.Draw();
@@ -88,8 +81,8 @@
{
case 1: playAfterPause = true; // 最初から PLAY
break;
- case 3: mySai_.ResumeOut(); // PAUSE したところから
- menu_.Activate(2); // PLAY 再開
+ case 3: mySai_.ResumeOut(); // PAUSE 箇所から PLAY 再開
+ menu_.Activate(2);
menu_.Inactivate(3);
menu_.TouchedColor(1);
break;
@@ -104,10 +97,9 @@
SignalProcessing();
}
mySai_.StopOut();
- menu_.Activate(0); // OPEN ボタン有効
- if (!playAfterPause)
- menu_.Activate(1); // PLAY ボタン有効
- for (int n=2; n<5; n++) // その他のボタンは無効
+ menu_.Activate(0); // OPEN ボタン有効
+ menu_.Draw(1); // PLAY ボタンの色を初期状態にする
+ for (int n=2; n<5; n++) // その他のボタンは無効
menu_.Inactivate(n);
sdReader_.Close(); // SD のファイルのクローズ
@@ -128,13 +120,13 @@
// SD カードのファイルのオープン
int32_t SD_PlayerSkeleton::SD_Open()
{
+ if (fileName_.empty()) SelectFile();
sdReader_.Open(fileName_);
sdReader_.IsWavFile();
return sdReader_.GetSize()/FRAME_SIZE_;
}
// ファイルの選択
- // selectedName: 選択されたファイル名
void SD_PlayerSkeleton::SelectFile()
{
selector_.DisplayFileList();
@@ -153,7 +145,7 @@
Modefy(); // アプリ固有のパラメータ変更(仮想関数)
}
- // メニュ-のボタンがタッチされるまで DoIfHandled() を実行しながら待つ
+ // メニューのボタンがタッチされるまで DoIfHandled() を実行しながら待つ
int SD_PlayerSkeleton::WaitTouched()
{
int touchNum;