#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