Do RFID scans only at specified intervals. System sounds are now supported, as well as more sound formats (.ogg, .mp4...).

This commit is contained in:
2019-08-08 05:31:27 +02:00
parent b8d4d6bb92
commit 1bf2b04303
6 changed files with 97 additions and 54 deletions

View File

@ -28,7 +28,8 @@
class Player {
private:
enum state { uninitialized, idle, playing, stopping };
enum state { uninitialized, idle, playing, stopping,
system_sound_while_playing, system_sound_while_stopped };
struct album_state {
uint8_t index;
uint32_t position;
@ -42,10 +43,12 @@ private:
uint16_t _read_wram(uint16_t address);
state _state = state::uninitialized;
void _refill();
bool _refill_needed();
void _flush_and_cancel();
void _flush(uint bytes);
void _set_last_track(const char* album, uint8_t track, uint32_t position);
std::map<String, album_state> _last_tracks;
void _play_file(String filename, uint32_t offset);
void _finish_playing();
void _finish_stopping();
void _mute();
@ -56,6 +59,7 @@ private:
SPISettings* _spi_settings = &_spi_settings_slow;
std::list<String> _files_in_dir(String dir);
String _find_album_dir(String album);
File _file;
uint8_t _buffer[32];
String _playing_album;
@ -74,6 +78,7 @@ public:
bool play_album(String album);
bool play_song(String album, uint8_t song_index, uint32_t offset=0);
void play_system_sound(String filename);
void stop();
bool loop();
void set_volume(uint8_t vol, bool save = true);