Add the RTOS processing. for the Network radio streaming receiver.

Fork of VS1053b by Christian Schmiljun

Committer:
christi_s
Date:
Tue Dec 14 18:22:54 2010 +0000
Revision:
0:7728d9c6c487
Child:
1:ced2c297cc1b
initial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
christi_s 0:7728d9c6c487 1 #ifndef VS1053_H
christi_s 0:7728d9c6c487 2 #define VS1053_H
christi_s 0:7728d9c6c487 3
christi_s 0:7728d9c6c487 4 // ----------------------------------------------------------------------------
christi_s 0:7728d9c6c487 5 // Extended settings
christi_s 0:7728d9c6c487 6 // ----------------------------------------------------------------------------
christi_s 0:7728d9c6c487 7 // Patches, Addons
christi_s 0:7728d9c6c487 8 // --------------------------------------------------------------------------
christi_s 0:7728d9c6c487 9
christi_s 0:7728d9c6c487 10 #define VS_PATCH
christi_s 0:7728d9c6c487 11 //#define VS_SPECANA
christi_s 0:7728d9c6c487 12
christi_s 0:7728d9c6c487 13 // Version
christi_s 0:7728d9c6c487 14 //#define VS1053_PATCH_1_4_FLAC
christi_s 0:7728d9c6c487 15 #define VS1053_PATCH_1_5
christi_s 0:7728d9c6c487 16 //#define VS1053_PATCH_1_5_FLAC
christi_s 0:7728d9c6c487 17
christi_s 0:7728d9c6c487 18 // ----------------------------------------------------------------------------
christi_s 0:7728d9c6c487 19
christi_s 0:7728d9c6c487 20
christi_s 0:7728d9c6c487 21
christi_s 0:7728d9c6c487 22 #if defined(VS_PATCH) && defined(VS_SPECANA)
christi_s 0:7728d9c6c487 23 #error "Exclusive use! Use VS_PATCH or VS_SPECANA, not both."
christi_s 0:7728d9c6c487 24 #endif
christi_s 0:7728d9c6c487 25
christi_s 0:7728d9c6c487 26 #ifdef VS_PATCH
christi_s 0:7728d9c6c487 27 #if defined(VS1053_PATCH_1_4_FLAC) && defined(VS1053_PATCH_1_5) && defined(VS1053_PATCH_1_5_FLAC)
christi_s 0:7728d9c6c487 28 #error "Exclusive use of patch versions."
christi_s 0:7728d9c6c487 29 #endif
christi_s 0:7728d9c6c487 30 #if defined(VS1053_PATCH_1_4_FLAC) || defined(VS1053_PATCH_1_5) || defined(VS1053_PATCH_1_5_FLAC)
christi_s 0:7728d9c6c487 31 #else
christi_s 0:7728d9c6c487 32 #error "Select patch versions."
christi_s 0:7728d9c6c487 33 #endif
christi_s 0:7728d9c6c487 34 #endif
christi_s 0:7728d9c6c487 35
christi_s 0:7728d9c6c487 36
christi_s 0:7728d9c6c487 37
christi_s 0:7728d9c6c487 38 #include "mbed.h"
christi_s 0:7728d9c6c487 39 //#include "SDFileSystem.h"
christi_s 0:7728d9c6c487 40 #include "string"
christi_s 0:7728d9c6c487 41 #include "string.h"
christi_s 0:7728d9c6c487 42
christi_s 0:7728d9c6c487 43 // SCI register address assignment
christi_s 0:7728d9c6c487 44 #define SCI_MODE 0x0
christi_s 0:7728d9c6c487 45 #define SCI_STATUS 0x1
christi_s 0:7728d9c6c487 46 #define SCI_BASS 0x2
christi_s 0:7728d9c6c487 47 #define SCI_CLOCKF 0x3
christi_s 0:7728d9c6c487 48 #define SCI_DECODE_TOME 0x4
christi_s 0:7728d9c6c487 49 #define SCI_AUDATA 0x5
christi_s 0:7728d9c6c487 50 #define SCI_WRAM 0x6
christi_s 0:7728d9c6c487 51 #define SCI_WRAMADDR 0x7
christi_s 0:7728d9c6c487 52 #define SCI_HDAT0 0x8
christi_s 0:7728d9c6c487 53 #define SCI_HDAT1 0x9
christi_s 0:7728d9c6c487 54 #define SCI_AIADDR 0xA
christi_s 0:7728d9c6c487 55 #define SCI_VOL 0xB
christi_s 0:7728d9c6c487 56 #define SCI_AICTRL0 0xC
christi_s 0:7728d9c6c487 57 #define SCI_AICTRL1 0xD
christi_s 0:7728d9c6c487 58 #define SCI_AICTRL2 0xE
christi_s 0:7728d9c6c487 59 #define SCI_AICTRL3 0xF
christi_s 0:7728d9c6c487 60
christi_s 0:7728d9c6c487 61
christi_s 0:7728d9c6c487 62 //SCI_MODE register bits as of p.38 of the datasheet
christi_s 0:7728d9c6c487 63 #define SM_DIFF 0x0001
christi_s 0:7728d9c6c487 64 #define SM_LAYER12 0x0002
christi_s 0:7728d9c6c487 65 #define SM_RESET 0x0004
christi_s 0:7728d9c6c487 66 #define SM_CANCEL 0x0008
christi_s 0:7728d9c6c487 67 #define SM_EARSPEAKER_LO 0x0010
christi_s 0:7728d9c6c487 68 #define SM_TESTS 0x0020
christi_s 0:7728d9c6c487 69 #define SM_STREAM 0x0040
christi_s 0:7728d9c6c487 70 #define SM_EARSPEAKER_HI 0x0080
christi_s 0:7728d9c6c487 71 #define SM_DACT 0x0100
christi_s 0:7728d9c6c487 72 #define SM_SDIORD 0x0200
christi_s 0:7728d9c6c487 73 #define SM_SDISHARE 0x0400
christi_s 0:7728d9c6c487 74 #define SM_SDINEW 0x0800
christi_s 0:7728d9c6c487 75 #define SM_ADPCM 0x1000
christi_s 0:7728d9c6c487 76 #define SM_B13 0x2000
christi_s 0:7728d9c6c487 77 #define SM_LINE1 0x4000
christi_s 0:7728d9c6c487 78 #define SM_CLK_RANGE 0x8000
christi_s 0:7728d9c6c487 79
christi_s 0:7728d9c6c487 80 //SCI_CLOCKF register bits as of p.42 of the datasheet
christi_s 0:7728d9c6c487 81 #define SC_MULT_XTALI 0x0000
christi_s 0:7728d9c6c487 82 #define SC_MULT_XTALIx20 0x2000
christi_s 0:7728d9c6c487 83 #define SC_MULT_XTALIx25 0x4000
christi_s 0:7728d9c6c487 84 #define SC_MULT_XTALIx30 0x6000
christi_s 0:7728d9c6c487 85 #define SC_MULT_XTALIx35 0x8000
christi_s 0:7728d9c6c487 86 #define SC_MULT_XTALIx40 0xA000
christi_s 0:7728d9c6c487 87 #define SC_MULT_XTALIx45 0xC000
christi_s 0:7728d9c6c487 88 #define SC_MULT_XTALIx50 0xE000
christi_s 0:7728d9c6c487 89 //
christi_s 0:7728d9c6c487 90 #define SC_ADD_NOMOD 0x0000
christi_s 0:7728d9c6c487 91 #define SC_ADD_10x 0x0800
christi_s 0:7728d9c6c487 92 #define SC_ADD_15x 0x1000
christi_s 0:7728d9c6c487 93 #define SC_ADD_20x 0x1800
christi_s 0:7728d9c6c487 94
christi_s 0:7728d9c6c487 95
christi_s 0:7728d9c6c487 96 // Extra Parameter in X memory (refer to p.58 of the datasheet)
christi_s 0:7728d9c6c487 97 #define para_chipID_0 0x1E00
christi_s 0:7728d9c6c487 98 #define para_chipID_1 0x1E01
christi_s 0:7728d9c6c487 99 #define para_version 0x1E02
christi_s 0:7728d9c6c487 100 #define para_config1 0x1E03
christi_s 0:7728d9c6c487 101 #define para_playSpeed 0x1E04
christi_s 0:7728d9c6c487 102 #define para_byteRate 0x1E05
christi_s 0:7728d9c6c487 103 #define para_endFillByte 0x1E06
christi_s 0:7728d9c6c487 104 //
christi_s 0:7728d9c6c487 105 #define para_positionMsec_0 0x1E27
christi_s 0:7728d9c6c487 106 #define para_positionMsec_1 0x1E28
christi_s 0:7728d9c6c487 107 #define para_resync 0x1E29
christi_s 0:7728d9c6c487 108
christi_s 0:7728d9c6c487 109
christi_s 0:7728d9c6c487 110 class VS1053 {
christi_s 0:7728d9c6c487 111
christi_s 0:7728d9c6c487 112 public:
christi_s 0:7728d9c6c487 113 VS1053(
christi_s 0:7728d9c6c487 114 PinName _mosi,
christi_s 0:7728d9c6c487 115 PinName _miso,
christi_s 0:7728d9c6c487 116 PinName _sck,
christi_s 0:7728d9c6c487 117 PinName _cs,
christi_s 0:7728d9c6c487 118 PinName _rst,
christi_s 0:7728d9c6c487 119 PinName _dreq,
christi_s 0:7728d9c6c487 120 PinName _dcs
christi_s 0:7728d9c6c487 121 );
christi_s 0:7728d9c6c487 122
christi_s 0:7728d9c6c487 123 void cs_low(void);
christi_s 0:7728d9c6c487 124 void cs_high(void);
christi_s 0:7728d9c6c487 125 void dcs_low(void);
christi_s 0:7728d9c6c487 126 void dcs_high(void);
christi_s 0:7728d9c6c487 127 void sci_en(void);
christi_s 0:7728d9c6c487 128 void sci_dis(void);
christi_s 0:7728d9c6c487 129 void sdi_en(void);
christi_s 0:7728d9c6c487 130 void sdi_dis(void);
christi_s 0:7728d9c6c487 131
christi_s 0:7728d9c6c487 132 void sci_initialise(void);
christi_s 0:7728d9c6c487 133 void sdi_initialise(void);
christi_s 0:7728d9c6c487 134 void reset(void);
christi_s 0:7728d9c6c487 135 void power_down(void);
christi_s 0:7728d9c6c487 136
christi_s 0:7728d9c6c487 137 void sci_write(unsigned char, unsigned short int);
christi_s 0:7728d9c6c487 138 void sdi_write(unsigned char);
christi_s 0:7728d9c6c487 139 unsigned short int sci_read(unsigned short int);
christi_s 0:7728d9c6c487 140 void sine_test_activate(unsigned char);
christi_s 0:7728d9c6c487 141
christi_s 0:7728d9c6c487 142 void sine_test_deactivate(void);
christi_s 0:7728d9c6c487 143 void writeStream(unsigned char *, int);
christi_s 0:7728d9c6c487 144 #if 0
christi_s 0:7728d9c6c487 145 void putcStream(unsigned char);
christi_s 0:7728d9c6c487 146 #endif
christi_s 0:7728d9c6c487 147 void terminateStream(void);
christi_s 0:7728d9c6c487 148
christi_s 0:7728d9c6c487 149 void initialize(void);
christi_s 0:7728d9c6c487 150 void setVolume(unsigned short int);
christi_s 0:7728d9c6c487 151
christi_s 0:7728d9c6c487 152 DigitalIn _DREQ;
christi_s 0:7728d9c6c487 153 DigitalOut _RST;
christi_s 0:7728d9c6c487 154
christi_s 0:7728d9c6c487 155 protected:
christi_s 0:7728d9c6c487 156 unsigned short int wram_read(unsigned short int);
christi_s 0:7728d9c6c487 157 void wram_write(unsigned short int, unsigned short int);
christi_s 0:7728d9c6c487 158 void write_plugin(const unsigned short *, unsigned int);
christi_s 0:7728d9c6c487 159 SPI _spi;
christi_s 0:7728d9c6c487 160 DigitalOut _CS;
christi_s 0:7728d9c6c487 161 DigitalOut _DCS;
christi_s 0:7728d9c6c487 162 int firstTime;
christi_s 0:7728d9c6c487 163
christi_s 0:7728d9c6c487 164 };
christi_s 0:7728d9c6c487 165 #endif