5 #ifndef ADAFRUIT_VS1053_H 6 #define ADAFRUIT_VS1053_H 12 #include <pins_arduino.h> 15 #if !defined(ARDUINO_STM32_FEATHER) 16 #include "pins_arduino.h" 17 #include "wiring_private.h" 20 #include <Adafruit_SPIDevice.h> 22 #if defined(PREFER_SDFAT_LIBRARY) 30 #if defined(ARDUINO_STM32_FEATHER) 31 typedef volatile uint32
RwReg;
33 #elif defined(ARDUINO_ARCH_AVR) 34 typedef volatile uint8_t
RwReg;
36 #elif defined(__arm__) 37 #if defined(TEENSYDUINO) 38 typedef volatile uint8_t
RwReg;
41 typedef volatile uint32_t
RwReg;
44 #elif defined(ESP8266) || defined(ESP32) 45 typedef volatile uint32_t
RwReg;
47 #elif defined(__ARDUINO_ARC__) 48 typedef volatile uint32_t
RwReg;
59 #define VS1053_FILEPLAYER_TIMER0_INT \ 61 #define VS1053_FILEPLAYER_PIN_INT \ 64 #define VS1053_SCI_READ 0x03 65 #define VS1053_SCI_WRITE 0x02 67 #define VS1053_REG_MODE 0x00 68 #define VS1053_REG_STATUS 0x01 69 #define VS1053_REG_BASS 0x02 70 #define VS1053_REG_CLOCKF 0x03 71 #define VS1053_REG_DECODETIME 0x04 72 #define VS1053_REG_AUDATA 0x05 73 #define VS1053_REG_WRAM 0x06 74 #define VS1053_REG_WRAMADDR 0x07 75 #define VS1053_REG_HDAT0 0x08 76 #define VS1053_REG_HDAT1 0x09 77 #define VS1053_REG_VOLUME 0x0B 79 #define VS1053_GPIO_DDR 0xC017 80 #define VS1053_GPIO_IDATA 0xC018 81 #define VS1053_GPIO_ODATA 0xC019 83 #define VS1053_INT_ENABLE 0xC01A 85 #define VS1053_MODE_SM_DIFF \ 87 #define VS1053_MODE_SM_LAYER12 0x0002 88 #define VS1053_MODE_SM_RESET 0x0004 89 #define VS1053_MODE_SM_CANCEL 0x0008 90 #define VS1053_MODE_SM_EARSPKLO 0x0010 91 #define VS1053_MODE_SM_TESTS 0x0020 92 #define VS1053_MODE_SM_STREAM 0x0040 93 #define VS1053_MODE_SM_SDINEW 0x0800 94 #define VS1053_MODE_SM_ADPCM 0x1000 95 #define VS1053_MODE_SM_LINE1 0x4000 96 #define VS1053_MODE_SM_CLKRANGE \ 99 #define VS1053_SCI_AIADDR \ 101 #define VS1053_SCI_AICTRL0 \ 104 #define VS1053_SCI_AICTRL1 \ 106 #define VS1053_SCI_AICTRL2 \ 108 #define VS1053_SCI_AICTRL3 \ 110 #define VS1053_SCI_WRAM 0x06 111 #define VS1053_SCI_WRAMADDR 0x07 113 #define VS1053_PARA_PLAYSPEED 0x1E04 115 #define VS1053_DATABUFFERLEN 32 132 Adafruit_VS1053(int8_t mosi, int8_t miso, int8_t clk, int8_t rst, int8_t cs,
133 int8_t dcs, int8_t dreq);
160 uint16_t
sciRead(uint8_t addr);
166 void sciWrite(uint8_t addr, uint16_t data);
172 void sineTest(uint8_t n, uint16_t ms);
183 void setVolume(uint8_t left, uint8_t right);
194 void playData(uint8_t *buffer, uint8_t buffsiz);
205 void applyPatch(
const uint16_t *patch, uint16_t patchsize);
272 #ifdef ARDUINO_ARCH_SAMD 278 Adafruit_SPIDevice *spi_dev_ctrl = NULL;
279 Adafruit_SPIDevice *spi_dev_data = NULL;
280 int32_t _mosi, _miso, _clk, _reset, _cs, _dcs;
281 boolean useHardwareSPI;
285 boolean usingInterrupts =
false;
288 Adafruit_SPIDevice *spi_dev_ctrl = NULL;
289 Adafruit_SPIDevice *spi_dev_data = NULL;
290 int8_t _mosi, _miso, _clk, _reset, _cs, _dcs;
291 boolean useHardwareSPI;
313 int8_t cs, int8_t dcs, int8_t dreq, int8_t cardCS);
347 boolean useInterrupt(uint8_t type);
354 void feedBuffer(
void);
360 static boolean isMP3File(
const char *fileName);
366 unsigned long mp3_ID3Jumper(File mp3);
373 boolean startPlayingFile(
const char *trackname);
380 boolean playFullFile(
const char *trackname);
381 void stopPlaying(
void);
386 boolean paused(
void);
391 boolean stopped(
void);
396 void pausePlaying(
boolean pause);
403 void playbackLoop(
boolean loopState);
408 boolean playbackLooped();
413 uint16_t getPlaySpeed();
418 void setPlaySpeed(uint16_t speed);
421 void feedBuffer_noLock(
void);
426 #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:298
File currentTrack
File that is currently playing.
Definition: Adafruit_VS1053.h:348
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:56
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:120
uint8_t mp3buffer[VS1053_DATABUFFERLEN]
Definition: Adafruit_VS1053.h:269
uint8_t PortMask
Definition: Adafruit_VS1053.h:52
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:115
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:284
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:51
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:285
volatile boolean playingMusic
Whether or not music is playing.
Definition: Adafruit_VS1053.h:349