Add the RTOS processing. for the Network radio streaming receiver.
Fork of VS1053b by
Diff: VS1053.h
- Revision:
- 0:7728d9c6c487
- Child:
- 1:ced2c297cc1b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/VS1053.h Tue Dec 14 18:22:54 2010 +0000 @@ -0,0 +1,165 @@ +#ifndef VS1053_H +#define VS1053_H + +// ---------------------------------------------------------------------------- +// Extended settings +// ---------------------------------------------------------------------------- +// Patches, Addons +// -------------------------------------------------------------------------- + +#define VS_PATCH +//#define VS_SPECANA + +// Version +//#define VS1053_PATCH_1_4_FLAC +#define VS1053_PATCH_1_5 +//#define VS1053_PATCH_1_5_FLAC + +// ---------------------------------------------------------------------------- + + + +#if defined(VS_PATCH) && defined(VS_SPECANA) +#error "Exclusive use! Use VS_PATCH or VS_SPECANA, not both." +#endif + +#ifdef VS_PATCH +#if defined(VS1053_PATCH_1_4_FLAC) && defined(VS1053_PATCH_1_5) && defined(VS1053_PATCH_1_5_FLAC) +#error "Exclusive use of patch versions." +#endif +#if defined(VS1053_PATCH_1_4_FLAC) || defined(VS1053_PATCH_1_5) || defined(VS1053_PATCH_1_5_FLAC) +#else +#error "Select patch versions." +#endif +#endif + + + +#include "mbed.h" +//#include "SDFileSystem.h" +#include "string" +#include "string.h" + +// SCI register address assignment +#define SCI_MODE 0x0 +#define SCI_STATUS 0x1 +#define SCI_BASS 0x2 +#define SCI_CLOCKF 0x3 +#define SCI_DECODE_TOME 0x4 +#define SCI_AUDATA 0x5 +#define SCI_WRAM 0x6 +#define SCI_WRAMADDR 0x7 +#define SCI_HDAT0 0x8 +#define SCI_HDAT1 0x9 +#define SCI_AIADDR 0xA +#define SCI_VOL 0xB +#define SCI_AICTRL0 0xC +#define SCI_AICTRL1 0xD +#define SCI_AICTRL2 0xE +#define SCI_AICTRL3 0xF + + +//SCI_MODE register bits as of p.38 of the datasheet +#define SM_DIFF 0x0001 +#define SM_LAYER12 0x0002 +#define SM_RESET 0x0004 +#define SM_CANCEL 0x0008 +#define SM_EARSPEAKER_LO 0x0010 +#define SM_TESTS 0x0020 +#define SM_STREAM 0x0040 +#define SM_EARSPEAKER_HI 0x0080 +#define SM_DACT 0x0100 +#define SM_SDIORD 0x0200 +#define SM_SDISHARE 0x0400 +#define SM_SDINEW 0x0800 +#define SM_ADPCM 0x1000 +#define SM_B13 0x2000 +#define SM_LINE1 0x4000 +#define SM_CLK_RANGE 0x8000 + +//SCI_CLOCKF register bits as of p.42 of the datasheet +#define SC_MULT_XTALI 0x0000 +#define SC_MULT_XTALIx20 0x2000 +#define SC_MULT_XTALIx25 0x4000 +#define SC_MULT_XTALIx30 0x6000 +#define SC_MULT_XTALIx35 0x8000 +#define SC_MULT_XTALIx40 0xA000 +#define SC_MULT_XTALIx45 0xC000 +#define SC_MULT_XTALIx50 0xE000 +// +#define SC_ADD_NOMOD 0x0000 +#define SC_ADD_10x 0x0800 +#define SC_ADD_15x 0x1000 +#define SC_ADD_20x 0x1800 + + +// Extra Parameter in X memory (refer to p.58 of the datasheet) +#define para_chipID_0 0x1E00 +#define para_chipID_1 0x1E01 +#define para_version 0x1E02 +#define para_config1 0x1E03 +#define para_playSpeed 0x1E04 +#define para_byteRate 0x1E05 +#define para_endFillByte 0x1E06 +// +#define para_positionMsec_0 0x1E27 +#define para_positionMsec_1 0x1E28 +#define para_resync 0x1E29 + + +class VS1053 { + +public: + VS1053( + PinName _mosi, + PinName _miso, + PinName _sck, + PinName _cs, + PinName _rst, + PinName _dreq, + PinName _dcs + ); + + void cs_low(void); + void cs_high(void); + void dcs_low(void); + void dcs_high(void); + void sci_en(void); + void sci_dis(void); + void sdi_en(void); + void sdi_dis(void); + + void sci_initialise(void); + void sdi_initialise(void); + void reset(void); + void power_down(void); + + void sci_write(unsigned char, unsigned short int); + void sdi_write(unsigned char); + unsigned short int sci_read(unsigned short int); + void sine_test_activate(unsigned char); + + void sine_test_deactivate(void); + void writeStream(unsigned char *, int); +#if 0 + void putcStream(unsigned char); +#endif + void terminateStream(void); + + void initialize(void); + void setVolume(unsigned short int); + + DigitalIn _DREQ; + DigitalOut _RST; + +protected: + unsigned short int wram_read(unsigned short int); + void wram_write(unsigned short int, unsigned short int); + void write_plugin(const unsigned short *, unsigned int); + SPI _spi; + DigitalOut _CS; + DigitalOut _DCS; + int firstTime; + +}; +#endif