2021-11-03 17:55:42 +01:00
|
|
|
#ifndef __mp3_H__
|
|
|
|
#define __mp3_H__
|
|
|
|
|
|
|
|
#include "SerialMP3Player.h"
|
|
|
|
|
|
|
|
class mp3
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
const char* STARTED_STRING = "Status: playing";
|
|
|
|
const char* STOPPED_STRING = "Status: stopped";
|
|
|
|
|
|
|
|
SerialMP3Player *player;
|
|
|
|
size_t _rx_pin,_tx_pin;
|
|
|
|
unsigned long _play_since_ms = 0;
|
|
|
|
public:
|
|
|
|
mp3(size_t rx_pin, size_t tx_pin);
|
|
|
|
~mp3();
|
|
|
|
void stop();
|
|
|
|
void play(size_t nr);
|
|
|
|
unsigned long is_playing();
|
2021-11-15 08:25:19 +01:00
|
|
|
void begin(byte vol=30);
|
|
|
|
void play_vol(size_t nr, byte vol);
|
|
|
|
void vol(byte val);
|
2021-11-03 17:55:42 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
mp3::mp3(size_t rx_pin, size_t tx_pin)
|
|
|
|
{
|
|
|
|
_rx_pin = rx_pin;
|
|
|
|
_tx_pin = tx_pin;
|
|
|
|
player = new SerialMP3Player(_rx_pin, _tx_pin);
|
2021-11-15 08:25:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
mp3::~mp3()
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void mp3::begin(byte vol)
|
|
|
|
{
|
2021-11-03 17:55:42 +01:00
|
|
|
player->begin(9600);
|
|
|
|
delay(500);
|
|
|
|
player->sendCommand(CMD_SEL_DEV, 0, 2); //select sd-card
|
|
|
|
delay(500);
|
2021-11-15 08:25:19 +01:00
|
|
|
player->setVol(vol);
|
2021-11-03 17:55:42 +01:00
|
|
|
}
|
|
|
|
|
2021-11-15 08:25:19 +01:00
|
|
|
void mp3::play_vol(size_t nr, byte vol)
|
2021-11-03 17:55:42 +01:00
|
|
|
{
|
2021-11-15 08:25:19 +01:00
|
|
|
player->setVol(vol);
|
|
|
|
player->play(nr);
|
|
|
|
_play_since_ms = millis();
|
2021-11-03 17:55:42 +01:00
|
|
|
}
|
|
|
|
|
2021-11-15 08:25:19 +01:00
|
|
|
|
2021-11-03 17:55:42 +01:00
|
|
|
void mp3::play(size_t nr)
|
|
|
|
{
|
2021-11-15 08:25:19 +01:00
|
|
|
player->playSL(nr);
|
|
|
|
_play_since_ms = millis();
|
|
|
|
}
|
|
|
|
|
|
|
|
void mp3::vol(byte val)
|
|
|
|
{
|
|
|
|
player->setVol(val);
|
2021-11-03 17:55:42 +01:00
|
|
|
_play_since_ms = millis();
|
|
|
|
}
|
|
|
|
|
|
|
|
unsigned long mp3::is_playing()
|
|
|
|
{
|
|
|
|
player->qStatus();
|
|
|
|
if (player->available()){
|
|
|
|
String answer = player->decodeMP3Answer();
|
|
|
|
if(answer.indexOf(STARTED_STRING) > -1)
|
|
|
|
{
|
|
|
|
return(millis() - _play_since_ms);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void mp3::stop()
|
|
|
|
{
|
|
|
|
player->stop();
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|