adventsfenster/include/mp3.h

85 lines
1.5 KiB
C++

#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();
void begin(byte vol=30);
void play_vol(size_t nr, byte vol);
void vol(byte val);
};
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);
}
mp3::~mp3()
{
}
void mp3::begin(byte vol)
{
player->begin(9600);
delay(500);
player->sendCommand(CMD_SEL_DEV, 0, 2); //select sd-card
delay(500);
player->setVol(vol);
}
void mp3::play_vol(size_t nr, byte vol)
{
player->setVol(vol);
player->play(nr);
_play_since_ms = millis();
}
void mp3::play(size_t nr)
{
player->playSL(nr);
_play_since_ms = millis();
}
void mp3::vol(byte val)
{
player->setVol(val);
_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