5 #ifndef ADAFRUIT_VS1053_H 6 #define ADAFRUIT_VS1053_H 12 #include <pins_arduino.h> 15 #if !defined(ARDUINO_STM32_FEATHER) && !defined(ARDUINO_UNOR4_WIFI) && \ 16 !defined(ARDUINO_UNOR4_MINIMA) 17 #include "pins_arduino.h" 18 #include "wiring_private.h" 21 #include <Adafruit_SPIDevice.h> 23 #if defined(PREFER_SDFAT_LIBRARY) 31 #if defined(ARDUINO_STM32_FEATHER) 32 typedef volatile uint32
RwReg;
34 #elif defined(ARDUINO_ARCH_AVR) 35 typedef volatile uint8_t
RwReg;
37 #elif defined(__arm__) 38 #if defined(TEENSYDUINO) 39 typedef volatile uint8_t
RwReg;
42 typedef volatile uint32_t
RwReg;
45 #elif defined(ESP8266) || defined(ESP32) 46 typedef volatile uint32_t
RwReg;
48 #elif defined(__ARDUINO_ARC__) 49 typedef volatile uint32_t
RwReg;
60 #define VS1053_FILEPLAYER_TIMER0_INT \ 62 #define VS1053_FILEPLAYER_PIN_INT \ 65 #define VS1053_SCI_READ 0x03 66 #define VS1053_SCI_WRITE 0x02 68 #define VS1053_REG_MODE 0x00 69 #define VS1053_REG_STATUS 0x01 70 #define VS1053_REG_BASS 0x02 71 #define VS1053_REG_CLOCKF 0x03 72 #define VS1053_REG_DECODETIME 0x04 73 #define VS1053_REG_AUDATA 0x05 74 #define VS1053_REG_WRAM 0x06 75 #define VS1053_REG_WRAMADDR 0x07 76 #define VS1053_REG_HDAT0 0x08 77 #define VS1053_REG_HDAT1 0x09 78 #define VS1053_REG_VOLUME 0x0B 80 #define VS1053_GPIO_DDR 0xC017 81 #define VS1053_GPIO_IDATA 0xC018 82 #define VS1053_GPIO_ODATA 0xC019 84 #define VS1053_INT_ENABLE 0xC01A 86 #define VS1053_MODE_SM_DIFF \ 88 #define VS1053_MODE_SM_LAYER12 0x0002 89 #define VS1053_MODE_SM_RESET 0x0004 90 #define VS1053_MODE_SM_CANCEL 0x0008 91 #define VS1053_MODE_SM_EARSPKLO 0x0010 92 #define VS1053_MODE_SM_TESTS 0x0020 93 #define VS1053_MODE_SM_STREAM 0x0040 94 #define VS1053_MODE_SM_SDINEW 0x0800 95 #define VS1053_MODE_SM_ADPCM 0x1000 96 #define VS1053_MODE_SM_LINE1 0x4000 97 #define VS1053_MODE_SM_CLKRANGE \ 100 #define VS1053_SCI_AIADDR \ 102 #define VS1053_SCI_AICTRL0 \ 105 #define VS1053_SCI_AICTRL1 \ 107 #define VS1053_SCI_AICTRL2 \ 109 #define VS1053_SCI_AICTRL3 \ 111 #define VS1053_SCI_WRAM 0x06 112 #define VS1053_SCI_WRAMADDR 0x07 114 #define VS1053_PARA_PLAYSPEED 0x1E04 116 #define VS1053_DATABUFFERLEN 32 133 Adafruit_VS1053(int8_t mosi, int8_t miso, int8_t clk, int8_t rst, int8_t cs,
134 int8_t dcs, int8_t dreq);
161 uint16_t
sciRead(uint8_t addr);
167 void sciWrite(uint8_t addr, uint16_t data);
173 void sineTest(uint8_t n, uint16_t ms);
184 void setVolume(uint8_t left, uint8_t right);
195 void playData(uint8_t *buffer, uint8_t buffsiz);
206 void applyPatch(
const uint16_t *patch, uint16_t patchsize);
273 #ifdef ARDUINO_ARCH_SAMD 279 Adafruit_SPIDevice *spi_dev_ctrl = NULL;
280 Adafruit_SPIDevice *spi_dev_data = NULL;
281 int32_t _mosi, _miso, _clk, _reset, _cs, _dcs;
282 boolean useHardwareSPI;
286 boolean usingInterrupts =
false;
289 Adafruit_SPIDevice *spi_dev_ctrl = NULL;
290 Adafruit_SPIDevice *spi_dev_data = NULL;
291 int8_t _mosi, _miso, _clk, _reset, _cs, _dcs;
292 boolean useHardwareSPI;
314 int8_t cs, int8_t dcs, int8_t dreq, int8_t cardCS);
348 boolean useInterrupt(uint8_t type);
355 void feedBuffer(
void);
361 static boolean isMP3File(
const char *fileName);
367 unsigned long mp3_ID3Jumper(File mp3);
374 boolean startPlayingFile(
const char *trackname);
381 boolean playFullFile(
const char *trackname);
382 void stopPlaying(
void);
387 boolean paused(
void);
392 boolean stopped(
void);
397 void pausePlaying(
boolean pause);
404 void playbackLoop(
boolean loopState);
409 boolean playbackLooped();
414 uint16_t getPlaySpeed();
419 void setPlaySpeed(uint16_t speed);
422 void feedBuffer_noLock(
void);
427 #endif // ADAFRUIT_VS1053_H uint16_t recordedWordsWaiting(void)
Returns the number of words recorded.
Definition: Adafruit_VS1053.cpp:564
File player for the Adafruit VS1053.
Definition: Adafruit_VS1053.h:299
File currentTrack
File that is currently playing.
Definition: Adafruit_VS1053.h:349
void stopRecordOgg(void)
Stop the recording.
Definition: Adafruit_VS1053.cpp:601
void GPIO_digitalWrite(uint8_t i, uint8_t val)
Write to a GPIO pin.
Definition: Adafruit_VS1053.cpp:647
uint16_t decodeTime(void)
Reads the DECODETIME register from the chip.
Definition: Adafruit_VS1053.cpp:494
void sineTest(uint8_t n, uint16_t ms)
Generate a sine-wave test signal.
Definition: Adafruit_VS1053.cpp:691
void softReset(void)
Attempts a soft reset of the chip.
Definition: Adafruit_VS1053.cpp:502
boolean readyForData(void)
Test if ready for more data.
Definition: Adafruit_VS1053.cpp:473
volatile RwReg PortReg
Definition: Adafruit_VS1053.h:57
uint16_t loadPlugin(char *fn)
Load the specified plug-in.
Definition: Adafruit_VS1053.cpp:415
uint16_t GPIO_digitalRead(void)
Read all 8 GPIO pins at once.
Definition: Adafruit_VS1053.cpp:663
void reset(void)
Performs a hard reset of the chip.
Definition: Adafruit_VS1053.cpp:507
uint8_t begin(void)
Initialize communication and (hard) reset the chip.
Definition: Adafruit_VS1053.cpp:526
Definition: Adafruit_VS1053.h:121
uint8_t mp3buffer[VS1053_DATABUFFERLEN]
Definition: Adafruit_VS1053.h:270
uint8_t PortMask
Definition: Adafruit_VS1053.h:53
void sciWrite(uint8_t addr, uint16_t data)
Writes to the specified register on the chip.
Definition: Adafruit_VS1053.cpp:685
#define VS1053_DATABUFFERLEN
Length of the data buffer.
Definition: Adafruit_VS1053.h:116
void setVolume(uint8_t left, uint8_t right)
Set the output volume for the chip.
Definition: Adafruit_VS1053.cpp:479
boolean prepareRecordOgg(char *plugin)
Initialize chip for OGG recording.
Definition: Adafruit_VS1053.cpp:572
Adafruit_VS1053(int8_t mosi, int8_t miso, int8_t clk, int8_t rst, int8_t cs, int8_t dcs, int8_t dreq)
Software SPI constructor - must specify all pins.
Definition: Adafruit_VS1053.cpp:360
uint16_t sciRead(uint8_t addr)
Reads from the specified register on the chip.
Definition: Adafruit_VS1053.cpp:679
void dumpRegs(void)
Prints the contents of the MODE, STATUS, CLOCKF and VOLUME registers.
Definition: Adafruit_VS1053.cpp:553
uint8_t _dreq
Data request pin.
Definition: Adafruit_VS1053.h:285
void applyPatch(const uint16_t *patch, uint16_t patchsize)
Apply a code patch.
Definition: Adafruit_VS1053.cpp:386
uint16_t recordedReadWord(void)
Reads the next word from the buffer of recorded words.
Definition: Adafruit_VS1053.cpp:568
void playData(uint8_t *buffer, uint8_t buffsiz)
Decode and play the contents of the supplied buffer.
Definition: Adafruit_VS1053.cpp:475
void startRecordOgg(boolean mic)
Start recording.
Definition: Adafruit_VS1053.cpp:603
volatile uint8_t RwReg
1-byte read-write register
Definition: Adafruit_VS1053.h:52
void GPIO_pinMode(uint8_t i, uint8_t dir)
Set the Pin Mode (INPUT/OUTPUT) for a GPIO pin.
Definition: Adafruit_VS1053.cpp:626
boolean usingInterrupts
True if using interrupts.
Definition: Adafruit_VS1053.h:286
volatile boolean playingMusic
Whether or not music is playing.
Definition: Adafruit_VS1053.h:350