Lab Checkoff

Dependencies:   SDFileSystem TextLCD mbed-rtos mbed wave_player FATFileSystem

Committer:
doubster
Date:
Wed Nov 13 20:00:28 2013 +0000
Revision:
0:67dbd54e60d4
Lab Checkoff

Who changed what in which revision?

UserRevisionLine numberNew contents of line
doubster 0:67dbd54e60d4 1 #include <mbed.h>
doubster 0:67dbd54e60d4 2
doubster 0:67dbd54e60d4 3 typedef struct uFMT_STRUCT {
doubster 0:67dbd54e60d4 4 short comp_code;
doubster 0:67dbd54e60d4 5 short num_channels;
doubster 0:67dbd54e60d4 6 unsigned sample_rate;
doubster 0:67dbd54e60d4 7 unsigned avg_Bps;
doubster 0:67dbd54e60d4 8 short block_align;
doubster 0:67dbd54e60d4 9 short sig_bps;
doubster 0:67dbd54e60d4 10 } FMT_STRUCT;
doubster 0:67dbd54e60d4 11
doubster 0:67dbd54e60d4 12
doubster 0:67dbd54e60d4 13 /** wave file player class.
doubster 0:67dbd54e60d4 14 *
doubster 0:67dbd54e60d4 15 * Example:
doubster 0:67dbd54e60d4 16 * @code
doubster 0:67dbd54e60d4 17 * #include <mbed.h>
doubster 0:67dbd54e60d4 18 * #include <wave_player.h>
doubster 0:67dbd54e60d4 19 *
doubster 0:67dbd54e60d4 20 * AnalogOut DACout(p18);
doubster 0:67dbd54e60d4 21 * wave_player waver(&DACout);
doubster 0:67dbd54e60d4 22 *
doubster 0:67dbd54e60d4 23 * int main() {
doubster 0:67dbd54e60d4 24 * FILE *wave_file;
doubster 0:67dbd54e60d4 25 *
doubster 0:67dbd54e60d4 26 * printf("\n\n\nHello, wave world!\n");
doubster 0:67dbd54e60d4 27 * wave_file=fopen("/sd/44_8_st.wav","r");
doubster 0:67dbd54e60d4 28 * waver.play(wave_file);
doubster 0:67dbd54e60d4 29 * fclose(wave_file);
doubster 0:67dbd54e60d4 30 * }
doubster 0:67dbd54e60d4 31 * @endcode
doubster 0:67dbd54e60d4 32 */
doubster 0:67dbd54e60d4 33 class wave_player {
doubster 0:67dbd54e60d4 34
doubster 0:67dbd54e60d4 35 public:
doubster 0:67dbd54e60d4 36 /** Create a wave player using a pointer to the given AnalogOut object.
doubster 0:67dbd54e60d4 37 *
doubster 0:67dbd54e60d4 38 * @param _dac pointer to an AnalogOut object to which the samples are sent.
doubster 0:67dbd54e60d4 39 */
doubster 0:67dbd54e60d4 40 wave_player(AnalogOut *_dac);
doubster 0:67dbd54e60d4 41
doubster 0:67dbd54e60d4 42 /** the player function.
doubster 0:67dbd54e60d4 43 *
doubster 0:67dbd54e60d4 44 * @param wavefile A pointer to an opened wave file
doubster 0:67dbd54e60d4 45 */
doubster 0:67dbd54e60d4 46 void play(FILE *wavefile);
doubster 0:67dbd54e60d4 47
doubster 0:67dbd54e60d4 48 /** Set the printf verbosity of the wave player. A nonzero verbosity level
doubster 0:67dbd54e60d4 49 * will put wave_player in a mode where the complete contents of the wave
doubster 0:67dbd54e60d4 50 * file are echoed to the screen, including header values, and including
doubster 0:67dbd54e60d4 51 * all of the sample values placed into the DAC FIFO, and the sample values
doubster 0:67dbd54e60d4 52 * removed from the DAC FIFO by the ISR. The sample output frequency is
doubster 0:67dbd54e60d4 53 * fixed at 2 Hz in this mode, so it's all very slow and the DAC output isn't
doubster 0:67dbd54e60d4 54 * very useful, but it lets you see what's going on and may help for debugging
doubster 0:67dbd54e60d4 55 * wave files that don't play correctly.
doubster 0:67dbd54e60d4 56 *
doubster 0:67dbd54e60d4 57 * @param v the verbosity level
doubster 0:67dbd54e60d4 58 */
doubster 0:67dbd54e60d4 59 void set_verbosity(int v);
doubster 0:67dbd54e60d4 60
doubster 0:67dbd54e60d4 61 private:
doubster 0:67dbd54e60d4 62 void dac_out(void);
doubster 0:67dbd54e60d4 63 int verbosity;
doubster 0:67dbd54e60d4 64 AnalogOut *wave_DAC;
doubster 0:67dbd54e60d4 65 Ticker tick;
doubster 0:67dbd54e60d4 66 unsigned short DAC_fifo[256];
doubster 0:67dbd54e60d4 67 short DAC_wptr;
doubster 0:67dbd54e60d4 68 volatile short DAC_rptr;
doubster 0:67dbd54e60d4 69 short DAC_on;
doubster 0:67dbd54e60d4 70 };
doubster 0:67dbd54e60d4 71
doubster 0:67dbd54e60d4 72
doubster 0:67dbd54e60d4 73