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

Fork of VS1053b by Christian Schmiljun

Committer:
christi_s
Date:
Wed Dec 22 18:09:33 2010 +0000
Revision:
2:5bab956cb59e
Parent:
1:ced2c297cc1b
Child:
3:88a645490529
add vsbe

Who changed what in which revision?

UserRevisionLine numberNew contents of line
christi_s 1:ced2c297cc1b 1 /* mbed VLSI VS1053b library
christi_s 1:ced2c297cc1b 2 * Copyright (c) 2010 Christian Schmiljun
christi_s 1:ced2c297cc1b 3 *
christi_s 1:ced2c297cc1b 4 * Permission is hereby granted, free of charge, to any person obtaining a copy
christi_s 1:ced2c297cc1b 5 * of this software and associated documentation files (the "Software"), to deal
christi_s 1:ced2c297cc1b 6 * in the Software without restriction, including without limitation the rights
christi_s 1:ced2c297cc1b 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
christi_s 1:ced2c297cc1b 8 * copies of the Software, and to permit persons to whom the Software is
christi_s 1:ced2c297cc1b 9 * furnished to do so, subject to the following conditions:
christi_s 1:ced2c297cc1b 10 *
christi_s 1:ced2c297cc1b 11 * The above copyright notice and this permission notice shall be included in
christi_s 1:ced2c297cc1b 12 * all copies or substantial portions of the Software.
christi_s 1:ced2c297cc1b 13 *
christi_s 1:ced2c297cc1b 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
christi_s 1:ced2c297cc1b 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
christi_s 1:ced2c297cc1b 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
christi_s 1:ced2c297cc1b 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
christi_s 1:ced2c297cc1b 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
christi_s 1:ced2c297cc1b 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
christi_s 1:ced2c297cc1b 20 * THE SOFTWARE.
christi_s 1:ced2c297cc1b 21 */
christi_s 1:ced2c297cc1b 22
christi_s 1:ced2c297cc1b 23 /* This code based on:
christi_s 1:ced2c297cc1b 24 * mbeduino_MP3_Shield_MP3Player
christi_s 1:ced2c297cc1b 25 * http://mbed.org/users/xshige/programs/mbeduino_MP3_Shield_MP3Player/lgcx63
christi_s 1:ced2c297cc1b 26 * 2010-10-16
christi_s 1:ced2c297cc1b 27 */
christi_s 1:ced2c297cc1b 28
christi_s 2:5bab956cb59e 29 #ifndef _VS1053_H
christi_s 2:5bab956cb59e 30 #define _VS1053_H
christi_s 1:ced2c297cc1b 31
christi_s 0:7728d9c6c487 32 // ----------------------------------------------------------------------------
christi_s 0:7728d9c6c487 33 // Extended settings
christi_s 0:7728d9c6c487 34 // ----------------------------------------------------------------------------
christi_s 1:ced2c297cc1b 35 // Enable debug output (Output -> printf ...)
christi_s 1:ced2c297cc1b 36 // --------------------------------------------------------------------------
christi_s 2:5bab956cb59e 37 // #define DEBUG
christi_s 2:5bab956cb59e 38 // #define DEBUGOUT (x,y...) printf(x, ##y);
christi_s 0:7728d9c6c487 39 // Patches, Addons
christi_s 0:7728d9c6c487 40 // --------------------------------------------------------------------------
christi_s 2:5bab956cb59e 41 // #define VS1053_PATCH_1_4_FLAC
christi_s 2:5bab956cb59e 42 // #define VS1053_PATCH_1_5
christi_s 2:5bab956cb59e 43 // #define VS1053_PATCH_1_5_FLAC
christi_s 2:5bab956cb59e 44 // #define VS1053_SPECANA
christi_s 2:5bab956cb59e 45 // #define VS1053B_PCM_RECORDER_0_9
christi_s 0:7728d9c6c487 46 // ----------------------------------------------------------------------------
christi_s 0:7728d9c6c487 47
christi_s 2:5bab956cb59e 48 #include "defines.h"
christi_s 2:5bab956cb59e 49 #include "mbed.h"
christi_s 2:5bab956cb59e 50
christi_s 1:ced2c297cc1b 51 #if defined(VS1053_PATCH_1_4_FLAC) && defined(VS1053_PATCH_1_5) && defined(VS1053_PATCH_1_5_FLAC) && defined(VS1053_SPECANA) && defined(VS1053B_PCM_RECORDER_0_9)
christi_s 1:ced2c297cc1b 52 #error "VS1053: Exclusive use of patch and app versions."
christi_s 1:ced2c297cc1b 53 #endif
christi_s 1:ced2c297cc1b 54 #if defined(VS1053_PATCH_1_4_FLAC) || defined(VS1053_PATCH_1_5) || defined(VS1053_PATCH_1_5_FLAC) || defined(VS1053_SPECANA) || defined(VS1053B_PCM_RECORDER_0_9)
christi_s 1:ced2c297cc1b 55 #define VS_PATCH
christi_s 0:7728d9c6c487 56 #endif
christi_s 0:7728d9c6c487 57
christi_s 2:5bab956cb59e 58 #ifndef DEBUGOUT
christi_s 2:5bab956cb59e 59 #define DEBUGOUT(x,y...)
christi_s 2:5bab956cb59e 60 #endif
christi_s 2:5bab956cb59e 61
christi_s 0:7728d9c6c487 62
christi_s 2:5bab956cb59e 63 #define DEFAULT_BALANCE_DIFERENCE_LEFT_RIGHT 0.0f
christi_s 2:5bab956cb59e 64 #define DEFAULT_VOLUME -40.0f
christi_s 2:5bab956cb59e 65 #define DEFAULT_BASS_AMPLITUDE 5 // 0 - 15 dB
christi_s 2:5bab956cb59e 66 #define DEFAULT_BASS_FREQUENCY 100 // 20 - 150 Hz
christi_s 2:5bab956cb59e 67 #define DEFAULT_TREBLE_AMPLITUDE 0 // -8 - 7 dB
christi_s 2:5bab956cb59e 68 #define DEFAULT_TREBLE_FREQUENCY 15000 //1000 - 15000 Hz
christi_s 0:7728d9c6c487 69
christi_s 0:7728d9c6c487 70 // SCI register address assignment
christi_s 0:7728d9c6c487 71 #define SCI_MODE 0x0
christi_s 0:7728d9c6c487 72 #define SCI_STATUS 0x1
christi_s 0:7728d9c6c487 73 #define SCI_BASS 0x2
christi_s 0:7728d9c6c487 74 #define SCI_CLOCKF 0x3
christi_s 0:7728d9c6c487 75 #define SCI_DECODE_TOME 0x4
christi_s 0:7728d9c6c487 76 #define SCI_AUDATA 0x5
christi_s 0:7728d9c6c487 77 #define SCI_WRAM 0x6
christi_s 0:7728d9c6c487 78 #define SCI_WRAMADDR 0x7
christi_s 0:7728d9c6c487 79 #define SCI_HDAT0 0x8
christi_s 0:7728d9c6c487 80 #define SCI_HDAT1 0x9
christi_s 0:7728d9c6c487 81 #define SCI_AIADDR 0xA
christi_s 0:7728d9c6c487 82 #define SCI_VOL 0xB
christi_s 0:7728d9c6c487 83 #define SCI_AICTRL0 0xC
christi_s 0:7728d9c6c487 84 #define SCI_AICTRL1 0xD
christi_s 0:7728d9c6c487 85 #define SCI_AICTRL2 0xE
christi_s 0:7728d9c6c487 86 #define SCI_AICTRL3 0xF
christi_s 0:7728d9c6c487 87
christi_s 0:7728d9c6c487 88
christi_s 0:7728d9c6c487 89 //SCI_MODE register bits as of p.38 of the datasheet
christi_s 0:7728d9c6c487 90 #define SM_DIFF 0x0001
christi_s 0:7728d9c6c487 91 #define SM_LAYER12 0x0002
christi_s 0:7728d9c6c487 92 #define SM_RESET 0x0004
christi_s 0:7728d9c6c487 93 #define SM_CANCEL 0x0008
christi_s 0:7728d9c6c487 94 #define SM_EARSPEAKER_LO 0x0010
christi_s 0:7728d9c6c487 95 #define SM_TESTS 0x0020
christi_s 0:7728d9c6c487 96 #define SM_STREAM 0x0040
christi_s 0:7728d9c6c487 97 #define SM_EARSPEAKER_HI 0x0080
christi_s 0:7728d9c6c487 98 #define SM_DACT 0x0100
christi_s 0:7728d9c6c487 99 #define SM_SDIORD 0x0200
christi_s 0:7728d9c6c487 100 #define SM_SDISHARE 0x0400
christi_s 0:7728d9c6c487 101 #define SM_SDINEW 0x0800
christi_s 0:7728d9c6c487 102 #define SM_ADPCM 0x1000
christi_s 0:7728d9c6c487 103 #define SM_B13 0x2000
christi_s 0:7728d9c6c487 104 #define SM_LINE1 0x4000
christi_s 0:7728d9c6c487 105 #define SM_CLK_RANGE 0x8000
christi_s 0:7728d9c6c487 106
christi_s 0:7728d9c6c487 107 //SCI_CLOCKF register bits as of p.42 of the datasheet
christi_s 2:5bab956cb59e 108 #define SC_ADD_NOMOD 0x0000
christi_s 2:5bab956cb59e 109 #define SC_ADD_10x 0x0800
christi_s 2:5bab956cb59e 110 #define SC_ADD_15x 0x1000
christi_s 2:5bab956cb59e 111 #define SC_ADD_20x 0x1800
christi_s 2:5bab956cb59e 112 #define SC_MULT_XTALI 0x0000
christi_s 2:5bab956cb59e 113 #define SC_MULT_XTALIx20 0x2000
christi_s 2:5bab956cb59e 114 #define SC_MULT_XTALIx25 0x4000
christi_s 2:5bab956cb59e 115 #define SC_MULT_XTALIx30 0x6000
christi_s 2:5bab956cb59e 116 #define SC_MULT_XTALIx35 0x8000
christi_s 2:5bab956cb59e 117 #define SC_MULT_XTALIx40 0xA000
christi_s 2:5bab956cb59e 118 #define SC_MULT_XTALIx45 0xC000
christi_s 2:5bab956cb59e 119 #define SC_MULT_XTALIx50 0xE000
christi_s 0:7728d9c6c487 120
christi_s 0:7728d9c6c487 121 // Extra Parameter in X memory (refer to p.58 of the datasheet)
christi_s 0:7728d9c6c487 122 #define para_chipID_0 0x1E00
christi_s 0:7728d9c6c487 123 #define para_chipID_1 0x1E01
christi_s 0:7728d9c6c487 124 #define para_version 0x1E02
christi_s 0:7728d9c6c487 125 #define para_config1 0x1E03
christi_s 0:7728d9c6c487 126 #define para_playSpeed 0x1E04
christi_s 0:7728d9c6c487 127 #define para_byteRate 0x1E05
christi_s 0:7728d9c6c487 128 #define para_endFillByte 0x1E06
christi_s 0:7728d9c6c487 129 //
christi_s 0:7728d9c6c487 130 #define para_positionMsec_0 0x1E27
christi_s 0:7728d9c6c487 131 #define para_positionMsec_1 0x1E28
christi_s 0:7728d9c6c487 132 #define para_resync 0x1E29
christi_s 0:7728d9c6c487 133
christi_s 0:7728d9c6c487 134
christi_s 2:5bab956cb59e 135 /** Class for VS1053 - Ogg Vorbis / MP3 / AAC / WMA / FLAC / MIDI Audio Codec Chip.
christi_s 2:5bab956cb59e 136 *
christi_s 2:5bab956cb59e 137 * This code based on:
christi_s 2:5bab956cb59e 138 * mbeduino_MP3_Shield_MP3Player
christi_s 2:5bab956cb59e 139 * http://mbed.org/users/xshige/programs/mbeduino_MP3_Shield_MP3Player/lgcx63
christi_s 2:5bab956cb59e 140 * 2010-10-16
christi_s 2:5bab956cb59e 141 *
christi_s 2:5bab956cb59e 142 * For the use of this class, a file "defines.h" must be created.
christi_s 2:5bab956cb59e 143 * It controls debug output and vs1053 patches.
christi_s 1:ced2c297cc1b 144 *
christi_s 2:5bab956cb59e 145 * defines.h:
christi_s 2:5bab956cb59e 146 *@code
christi_s 2:5bab956cb59e 147 * #ifndef _DEFINES_H
christi_s 2:5bab956cb59e 148 * #define _DEFINES_H
christi_s 2:5bab956cb59e 149 * // ----------------------------------------------------------------------------
christi_s 2:5bab956cb59e 150 * // debug output
christi_s 2:5bab956cb59e 151 * // ----------------------------------------------------------------------------
christi_s 2:5bab956cb59e 152 * // optional
christi_s 2:5bab956cb59e 153 * #define DEBUG
christi_s 2:5bab956cb59e 154 * #ifdef DEBUG
christi_s 2:5bab956cb59e 155 * # define DEBUGOUT(x,y...) printf(x, ##y);
christi_s 2:5bab956cb59e 156 * #else
christi_s 2:5bab956cb59e 157 * # define DEBUGOUT(x,y...)
christi_s 2:5bab956cb59e 158 * #endif
christi_s 2:5bab956cb59e 159 * // ----------------------------------------------------------------------------
christi_s 2:5bab956cb59e 160 * // VLSI VS1053b library, patch, apps
christi_s 2:5bab956cb59e 161 * // ----------------------------------------------------------------------------
christi_s 2:5bab956cb59e 162 * // optional, ONLY ONE
christi_s 2:5bab956cb59e 163 * //#define VS1053_PATCH_1_4_FLAC
christi_s 2:5bab956cb59e 164 * //#define VS1053_PATCH_1_5
christi_s 2:5bab956cb59e 165 * #define VS1053_PATCH_1_5_FLAC
christi_s 2:5bab956cb59e 166 * //#define VS1053_SPECANA
christi_s 2:5bab956cb59e 167 * //#define VS1053B_PCM_RECORDER_0_9
christi_s 2:5bab956cb59e 168 *
christi_s 2:5bab956cb59e 169 * #endif //_DEFINES_H
christi_s 1:ced2c297cc1b 170 *
christi_s 1:ced2c297cc1b 171 */
christi_s 0:7728d9c6c487 172 class VS1053 {
christi_s 0:7728d9c6c487 173
christi_s 0:7728d9c6c487 174 public:
christi_s 1:ced2c297cc1b 175 /** Create a vs1053b object.
christi_s 1:ced2c297cc1b 176 *
christi_s 2:5bab956cb59e 177 * @param mosi
christi_s 2:5bab956cb59e 178 * SPI Master Out, Slave In pin to vs1053b.
christi_s 2:5bab956cb59e 179 * @param miso
christi_s 2:5bab956cb59e 180 * SPI Master In, Slave Out pin to vs1053b.
christi_s 2:5bab956cb59e 181 * @param sck
christi_s 2:5bab956cb59e 182 * SPI Clock pin to vs1053b.
christi_s 2:5bab956cb59e 183 * @param cs
christi_s 2:5bab956cb59e 184 * Pin to vs1053b control chip select.
christi_s 2:5bab956cb59e 185 * @param rst
christi_s 2:5bab956cb59e 186 * Pin to vs1053b reset.
christi_s 2:5bab956cb59e 187 * @param dreq
christi_s 2:5bab956cb59e 188 * Pin to vs1053b data request.
christi_s 2:5bab956cb59e 189 * @param dcs
christi_s 2:5bab956cb59e 190 * Pin to vs1053b data chip select.
christi_s 1:ced2c297cc1b 191 */
christi_s 0:7728d9c6c487 192 VS1053(
christi_s 1:ced2c297cc1b 193 PinName mosi,
christi_s 1:ced2c297cc1b 194 PinName miso,
christi_s 1:ced2c297cc1b 195 PinName sck,
christi_s 1:ced2c297cc1b 196 PinName cs,
christi_s 1:ced2c297cc1b 197 PinName rst,
christi_s 1:ced2c297cc1b 198 PinName dreq,
christi_s 1:ced2c297cc1b 199 PinName dcs
christi_s 0:7728d9c6c487 200 );
christi_s 0:7728d9c6c487 201
christi_s 1:ced2c297cc1b 202 /** Reset the vs1053b. (hardware reset)
christi_s 1:ced2c297cc1b 203 *
christi_s 1:ced2c297cc1b 204 */
christi_s 2:5bab956cb59e 205 void reset(void);
christi_s 1:ced2c297cc1b 206
christi_s 2:5bab956cb59e 207 /** Write data stream to vs1053b.
christi_s 1:ced2c297cc1b 208 *
christi_s 2:5bab956cb59e 209 * @param data
christi_s 2:5bab956cb59e 210 * Data to be sent to vs1053b.
christi_s 2:5bab956cb59e 211 * @param length
christi_s 2:5bab956cb59e 212 * Length of data.
christi_s 1:ced2c297cc1b 213 */
christi_s 1:ced2c297cc1b 214 void writeStream(unsigned char* data, unsigned int length);
christi_s 1:ced2c297cc1b 215
christi_s 1:ced2c297cc1b 216 //void stop(void);
christi_s 1:ced2c297cc1b 217 void terminateStream(void);
christi_s 1:ced2c297cc1b 218
christi_s 2:5bab956cb59e 219 /** Initialize the vs1053b device.
christi_s 1:ced2c297cc1b 220 *
christi_s 2:5bab956cb59e 221 * @return
christi_s 2:5bab956cb59e 222 * TRUE on success, FALSE on failure.
christi_s 1:ced2c297cc1b 223 */
christi_s 2:5bab956cb59e 224 bool initialize(void);
christi_s 1:ced2c297cc1b 225
christi_s 2:5bab956cb59e 226 /** Set the volume.
christi_s 2:5bab956cb59e 227 *
christi_s 2:5bab956cb59e 228 * @param volume
christi_s 2:5bab956cb59e 229 * Volume -0.5dB, -1.0dB, .. -64.0dB.
christi_s 2:5bab956cb59e 230 */
christi_s 2:5bab956cb59e 231 void setVolume(float volume = DEFAULT_VOLUME);
christi_s 2:5bab956cb59e 232
christi_s 2:5bab956cb59e 233 /** Get the volume.
christi_s 2:5bab956cb59e 234 *
christi_s 2:5bab956cb59e 235 * @return
christi_s 2:5bab956cb59e 236 * Return the volume in dB.
christi_s 2:5bab956cb59e 237 */
christi_s 1:ced2c297cc1b 238 float getVolume();
christi_s 1:ced2c297cc1b 239
christi_s 2:5bab956cb59e 240 /** Set the balance - volume difference between left-right.
christi_s 2:5bab956cb59e 241 *
christi_s 2:5bab956cb59e 242 * @param balance
christi_s 2:5bab956cb59e 243 * Difference in dB.
christi_s 2:5bab956cb59e 244 */
christi_s 2:5bab956cb59e 245 void setBalance(float balance = DEFAULT_BALANCE_DIFERENCE_LEFT_RIGHT);
christi_s 2:5bab956cb59e 246
christi_s 2:5bab956cb59e 247 /** Get the balance - volume difference between left-right.
christi_s 2:5bab956cb59e 248 *
christi_s 2:5bab956cb59e 249 * @return
christi_s 2:5bab956cb59e 250 * Difference in dB.
christi_s 2:5bab956cb59e 251 */
christi_s 1:ced2c297cc1b 252 float getBalance();
christi_s 2:5bab956cb59e 253
christi_s 2:5bab956cb59e 254 /** Get the treble frequency limit.
christi_s 2:5bab956cb59e 255 *
christi_s 2:5bab956cb59e 256 * @return
christi_s 2:5bab956cb59e 257 * Frequenzy 1000, 2000 .. 15000Hz.
christi_s 2:5bab956cb59e 258 */
christi_s 2:5bab956cb59e 259 int getTrebleFrequency(void);
christi_s 2:5bab956cb59e 260 /** Set the treble frequency limit.
christi_s 2:5bab956cb59e 261 *
christi_s 2:5bab956cb59e 262 * @param frequency
christi_s 2:5bab956cb59e 263 * Frequenzy 1000, 2000, .. 15000Hz.
christi_s 2:5bab956cb59e 264 */
christi_s 2:5bab956cb59e 265 void setTrebleFrequency(int frequency = DEFAULT_TREBLE_FREQUENCY);
christi_s 1:ced2c297cc1b 266
christi_s 2:5bab956cb59e 267 /** Get the treble amplitude.
christi_s 2:5bab956cb59e 268 *
christi_s 2:5bab956cb59e 269 * @return
christi_s 2:5bab956cb59e 270 * Amplitude -8 .. 7dB (in 1.5dB steps); 0 = off.
christi_s 2:5bab956cb59e 271 */
christi_s 2:5bab956cb59e 272 int getTrebleAmplitude(void);
christi_s 2:5bab956cb59e 273 /** Set the treble amplitude.
christi_s 2:5bab956cb59e 274 *
christi_s 2:5bab956cb59e 275 * @param amplitude
christi_s 2:5bab956cb59e 276 * Amplitude -8 .. 7dB (in 1.5dB steps); 0 = off.
christi_s 2:5bab956cb59e 277 */
christi_s 2:5bab956cb59e 278 void setTrebleAmplitude(int amplitude = DEFAULT_TREBLE_AMPLITUDE);
christi_s 1:ced2c297cc1b 279
christi_s 2:5bab956cb59e 280 /** Get the bass frequency limit.
christi_s 2:5bab956cb59e 281 *
christi_s 2:5bab956cb59e 282 * @return
christi_s 2:5bab956cb59e 283 * Frequenzy 20, 30, .. 150Hz.
christi_s 2:5bab956cb59e 284 */
christi_s 2:5bab956cb59e 285 int getBassFrequency(void);
christi_s 2:5bab956cb59e 286 /** Set the bass frequency limit.
christi_s 2:5bab956cb59e 287 *
christi_s 2:5bab956cb59e 288 * @param frequency
christi_s 2:5bab956cb59e 289 * Frequenzy 20, 30, .. 150Hz.
christi_s 2:5bab956cb59e 290 */
christi_s 2:5bab956cb59e 291 void setBassFrequency(int frequency= DEFAULT_BASS_FREQUENCY);
christi_s 2:5bab956cb59e 292
christi_s 2:5bab956cb59e 293 /** Get the bass amplitude.
christi_s 2:5bab956cb59e 294 *
christi_s 2:5bab956cb59e 295 * @return
christi_s 2:5bab956cb59e 296 * Amplitude 0 .. 15dB (in 1dB steps); 0 = off.
christi_s 2:5bab956cb59e 297 */
christi_s 2:5bab956cb59e 298 int getBassAmplitude(void);
christi_s 2:5bab956cb59e 299 /** Set the bass amplitude.
christi_s 2:5bab956cb59e 300 *
christi_s 2:5bab956cb59e 301 * @param amplitude
christi_s 2:5bab956cb59e 302 * Amplitude 0 .. 15dB (in 1dB steps); 0 = off.
christi_s 2:5bab956cb59e 303 */
christi_s 2:5bab956cb59e 304 void setBassAmplitude(int amplitude = DEFAULT_BASS_AMPLITUDE);
christi_s 2:5bab956cb59e 305
christi_s 2:5bab956cb59e 306 /** Set the speed of a playback.
christi_s 2:5bab956cb59e 307 *
christi_s 2:5bab956cb59e 308 * @param speed
christi_s 2:5bab956cb59e 309 * Speed 0, 1, .. 4 (0, 1 normal speed).
christi_s 2:5bab956cb59e 310 */
christi_s 2:5bab956cb59e 311 void setPlaySpeed(unsigned short speed);
christi_s 1:ced2c297cc1b 312
christi_s 1:ced2c297cc1b 313 protected:
christi_s 1:ced2c297cc1b 314 unsigned short int wram_read(unsigned short int);
christi_s 1:ced2c297cc1b 315 void wram_write(unsigned short int, unsigned short int);
christi_s 1:ced2c297cc1b 316 void write_plugin(const unsigned short* , unsigned int);
christi_s 0:7728d9c6c487 317 void cs_low(void);
christi_s 0:7728d9c6c487 318 void cs_high(void);
christi_s 0:7728d9c6c487 319 void dcs_low(void);
christi_s 0:7728d9c6c487 320 void dcs_high(void);
christi_s 0:7728d9c6c487 321 void sci_en(void);
christi_s 0:7728d9c6c487 322 void sci_dis(void);
christi_s 0:7728d9c6c487 323 void sdi_en(void);
christi_s 0:7728d9c6c487 324 void sdi_dis(void);
christi_s 0:7728d9c6c487 325
christi_s 1:ced2c297cc1b 326 void spi_initialise(void);
christi_s 1:ced2c297cc1b 327
christi_s 0:7728d9c6c487 328 void sdi_initialise(void);
christi_s 0:7728d9c6c487 329
christi_s 0:7728d9c6c487 330 void sci_write(unsigned char, unsigned short int);
christi_s 0:7728d9c6c487 331 void sdi_write(unsigned char);
christi_s 0:7728d9c6c487 332 unsigned short int sci_read(unsigned short int);
christi_s 0:7728d9c6c487 333 void sine_test_activate(unsigned char);
christi_s 0:7728d9c6c487 334
christi_s 0:7728d9c6c487 335 void sine_test_deactivate(void);
christi_s 0:7728d9c6c487 336
christi_s 1:ced2c297cc1b 337 void changeVolume(void);
christi_s 1:ced2c297cc1b 338
christi_s 2:5bab956cb59e 339 // TODO
christi_s 2:5bab956cb59e 340 void power_down(void);
christi_s 2:5bab956cb59e 341 #if 0
christi_s 2:5bab956cb59e 342 void putcStream(unsigned char);
christi_s 2:5bab956cb59e 343 #endif
christi_s 2:5bab956cb59e 344 void changeBass(void);
christi_s 1:ced2c297cc1b 345
christi_s 2:5bab956cb59e 346 SPI _spi;
christi_s 2:5bab956cb59e 347 DigitalOut _CS;
christi_s 2:5bab956cb59e 348 DigitalOut _DCS;
christi_s 2:5bab956cb59e 349 DigitalIn _DREQ;
christi_s 2:5bab956cb59e 350 DigitalOut _RST;
christi_s 2:5bab956cb59e 351
christi_s 2:5bab956cb59e 352 // variables to save
christi_s 2:5bab956cb59e 353 // volume, values in db
christi_s 2:5bab956cb59e 354 float _balance;
christi_s 2:5bab956cb59e 355 float _volume;
christi_s 2:5bab956cb59e 356 // bass enhancer settings
christi_s 2:5bab956cb59e 357 int _sb_amplitude;
christi_s 2:5bab956cb59e 358 int _sb_freqlimit;
christi_s 2:5bab956cb59e 359 int _st_amplitude;
christi_s 2:5bab956cb59e 360 int _st_freqlimit;
christi_s 0:7728d9c6c487 361 };
christi_s 0:7728d9c6c487 362 #endif