Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

34 lines
691B

  1. #ifndef play_sd_wav_h_
  2. #define play_sd_wav_h_
  3. #include "AudioStream.h"
  4. #include "SD.h"
  5. class AudioPlaySDcardWAV : public AudioStream
  6. {
  7. public:
  8. AudioPlaySDcardWAV(void) : AudioStream(0, NULL) { begin(); }
  9. void begin(void);
  10. bool play(const char *filename);
  11. void stop(void);
  12. bool start(void);
  13. virtual void update(void);
  14. private:
  15. File wavfile;
  16. bool consume(void);
  17. bool parse_format(void);
  18. uint32_t header[5];
  19. uint32_t data_length; // number of bytes remaining in data section
  20. audio_block_t *block_left;
  21. audio_block_t *block_right;
  22. uint16_t block_offset;
  23. uint8_t buffer[512];
  24. uint16_t buffer_remaining;
  25. uint8_t state;
  26. uint8_t state_play;
  27. uint8_t leftover_bytes;
  28. };
  29. #endif