Bkap / src

Dependencies:   APA102

Dependents:   BookAndPlug

Committer:
vrou44
Date:
Thu May 17 17:12:17 2018 +0000
Revision:
1:8c2e60bafc91
Parent:
0:5648c217e527
Initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vrou44 0:5648c217e527 1 /*
vrou44 0:5648c217e527 2 * Audio.h
vrou44 0:5648c217e527 3 *
vrou44 0:5648c217e527 4 * Created on: 28 mars 2018
vrou44 0:5648c217e527 5 * Author: hd01073
vrou44 0:5648c217e527 6 */
vrou44 0:5648c217e527 7
vrou44 0:5648c217e527 8 #ifndef AUDIO_H_
vrou44 0:5648c217e527 9 #define AUDIO_H_
vrou44 0:5648c217e527 10
vrou44 0:5648c217e527 11
vrou44 0:5648c217e527 12 #include "mbed.h"
vrou44 0:5648c217e527 13 #include "BNP_Ctrl.h"
vrou44 0:5648c217e527 14
vrou44 0:5648c217e527 15 #define AUDIO_OPT
vrou44 0:5648c217e527 16
vrou44 0:5648c217e527 17 #ifdef AUDIO_OPT
vrou44 0:5648c217e527 18
vrou44 0:5648c217e527 19 #define MUTE VOL_0
vrou44 0:5648c217e527 20 #define VOL_0 0xFFF0
vrou44 0:5648c217e527 21 #define VOL_1 0xFFF1
vrou44 0:5648c217e527 22 #define VOL_2 0xFFF2
vrou44 0:5648c217e527 23 #define VOL_3 0xFFF3
vrou44 0:5648c217e527 24 #define VOL_4 0xFFF4
vrou44 0:5648c217e527 25 #define VOL_5 0xFFF5
vrou44 0:5648c217e527 26 #define VOL_6 0xFFF6
vrou44 0:5648c217e527 27 #define VOL_7 0xFFF7
vrou44 0:5648c217e527 28 #define PLAY_PAUSE 0xFFFE
vrou44 0:5648c217e527 29 #define STOP 0xFFFF
vrou44 0:5648c217e527 30
vrou44 0:5648c217e527 31
vrou44 0:5648c217e527 32 /**
vrou44 0:5648c217e527 33 * soundboard class
vrou44 0:5648c217e527 34 * Used to control the WTV020SD board from sparkfun
vrou44 0:5648c217e527 35 */
vrou44 0:5648c217e527 36
vrou44 0:5648c217e527 37 class soundboard
vrou44 0:5648c217e527 38 {
vrou44 0:5648c217e527 39 public:
vrou44 0:5648c217e527 40 /** Creates the soundboard class with the specified reset pin, clock pin, data pin and busy pin*/
vrou44 0:5648c217e527 41 soundboard(PinName resetPin, PinName clockPin, PinName dataPin, PinName busyPin);
vrou44 0:5648c217e527 42
vrou44 0:5648c217e527 43 void startReset(void);
vrou44 0:5648c217e527 44 void startCommand(unsigned int);
vrou44 0:5648c217e527 45
vrou44 0:5648c217e527 46 private:
vrou44 0:5648c217e527 47 static void singleInstManageReset(void) ;
vrou44 0:5648c217e527 48 void manageReset(void) ;
vrou44 0:5648c217e527 49 static void singleInstManageCmd(void) ;
vrou44 0:5648c217e527 50 void manageCmd(void) ;
vrou44 0:5648c217e527 51
vrou44 0:5648c217e527 52 private:
vrou44 0:5648c217e527 53 DigitalOut _resetPin;
vrou44 0:5648c217e527 54 DigitalOut _clockPin;
vrou44 0:5648c217e527 55 DigitalOut _dataPin;
vrou44 0:5648c217e527 56 DigitalIn _busyPin; // TODO : use it as an interrupt with a call back
vrou44 0:5648c217e527 57 // function to notify cmd complete. Not wired
vrou44 0:5648c217e527 58 // (hardware limitation) presently
vrou44 0:5648c217e527 59
vrou44 0:5648c217e527 60 private:
vrou44 0:5648c217e527 61 volatile int resetState ;
vrou44 0:5648c217e527 62 volatile int cmdState ;
vrou44 0:5648c217e527 63 unsigned int _cmd ;
vrou44 0:5648c217e527 64 unsigned int _mask ;
vrou44 0:5648c217e527 65
vrou44 0:5648c217e527 66
vrou44 0:5648c217e527 67 };
vrou44 0:5648c217e527 68
vrou44 0:5648c217e527 69
vrou44 0:5648c217e527 70 #endif
vrou44 0:5648c217e527 71
vrou44 0:5648c217e527 72 class Audio {
vrou44 0:5648c217e527 73 public:
vrou44 0:5648c217e527 74 static void init(void) ;
vrou44 0:5648c217e527 75 static void startPlay(BNP_Ctrl::AudioTrack track) ;
vrou44 0:5648c217e527 76
vrou44 0:5648c217e527 77 private:
vrou44 0:5648c217e527 78 enum State {
vrou44 0:5648c217e527 79 noState,
vrou44 0:5648c217e527 80 soundResetInProgress,
vrou44 0:5648c217e527 81 sendingVolCmd,
vrou44 0:5648c217e527 82 waitingVolCmdComplete,
vrou44 0:5648c217e527 83 idle,
vrou44 0:5648c217e527 84 sendingPlayCmd,
vrou44 0:5648c217e527 85 waitingPlayCmdComplete
vrou44 0:5648c217e527 86 };
vrou44 0:5648c217e527 87
vrou44 0:5648c217e527 88 static State state ;
vrou44 0:5648c217e527 89 static BNP_Ctrl::AudioTrack demandedTrack ;
vrou44 0:5648c217e527 90
vrou44 0:5648c217e527 91 public:
vrou44 0:5648c217e527 92 enum Evt {
vrou44 0:5648c217e527 93 noEvt,
vrou44 0:5648c217e527 94 soundResetComplete,
vrou44 0:5648c217e527 95 soundCmdSent,
vrou44 0:5648c217e527 96 soundNotBusy,
vrou44 0:5648c217e527 97 newJingleRequired
vrou44 0:5648c217e527 98 };
vrou44 0:5648c217e527 99
vrou44 0:5648c217e527 100 static void feedFsm(Evt evt) ;
vrou44 0:5648c217e527 101 } ;
vrou44 0:5648c217e527 102
vrou44 0:5648c217e527 103
vrou44 0:5648c217e527 104
vrou44 0:5648c217e527 105 #endif /* AUDIO_H_ */