Big Mouth Billy Bass player that takes raw wavefiles and decision list text files from an SD card

Dependencies:   SDFileSystem mbed BillyBass

Revision:
13:c13b3db9649b
Parent:
12:1206e56712d8
Child:
14:79b3fd23c7b5
--- a/main.cpp	Tue Jun 18 14:10:40 2013 +0000
+++ b/main.cpp	Wed Jun 19 16:12:36 2013 +0000
@@ -4,64 +4,31 @@
 #include "player.hpp"
 #include "action.hpp"
 
-// Power:
-// Power GND  J9/14
-// Vin (6V)   J9/16
+//                 tailPin,  mouthPin, bodyPin   inverted
+// BillyBass testBass(LED_RED, LED_GREEN, LED_BLUE, true);
 
-//                 tailPin,  mouthPin, bodyPin   inverted
-BillyBass testBass(LED_RED, LED_GREEN, LED_BLUE, true);
-
-//               tailPin, mouthPin, bodyPin
-//                  J3/2,  J3/1, J3/3
-BillyBass realBass(PTA13, PTC12, PTC13);
-
-DigitalIn pushbutton(PTD5); // J3/4
+//                 tailPin,        mouthPin,      bodyPin
+BillyBass bass1(BASS1_TAIL,     BASS1_MOUTH,   BASS1_BODY);
+//                 tailPin,        mouthPin,      bodyPin
+BillyBass bass2(BASS2_TAIL,     BASS2_MOUTH,   BASS2_BODY);
+DigitalIn button1(BASS1_BUTTON);    // J3/4
+DigitalIn button2(BASS2_BUTTON);   // J3/2
 
 // Analog:
 // GND   J3/14
 // VrefH J3/16
 AnalogOut speaker(PTE30);              // J10/11
 
-// PTD0 D10 - Used for CS of SPI
-// PTD2 D11 - Used for MOSI of SPI
-// PTD3 D12 - Used for MISO of SPI
-// PTC5 J1/9  Used for SCLK of SPI
-
-//              MOSI, MISO, SCLK,   CS, name
-SDFileSystem sd(PTD2, PTD3, PTC5, PTD0, SD_NAME);
-
+//                 MOSI,    MISO,    SCLK,    CS, name
+SDFileSystem sd(SD_MOSI, SD_MISO, SD_SCLK, SD_CS, SD_NAME);
 Serial pc(USBTX, USBRX);
 
-static void biggestAllocation()
-{
-    size_t blksize = 16384;
-    char *m;
-
-    while (blksize > 0 && (m = (char *)malloc(blksize)) == 0) {
-        blksize -= 1024;
-    }
-
-    char *heaptop = m + blksize;
-    fprintf(stderr, "biggest: %u, heaptop: %p, current SP: %p, room: %u\r\n",
-            blksize,
-            heaptop,
-            __current_sp(),
-            (char *)__current_sp() - heaptop);
-
-    free(m);
-}
-
-static void dumpHeap()
-{
-    biggestAllocation();
-    __heapstats((__heapprt)fprintf,stderr);
-    __heapvalid((__heapprt)fprintf,stderr, 0);
-}
-
 int main()
 {
     SongPlayer player;
     pc.baud(SERIAL_BAUD);
+    button1.mode(PullUp);
+    button2.mode(PullUp);
 
     fprintf(stderr, "*** REBOOT ***\r\n");
 
@@ -77,13 +44,14 @@
     while (dirent *d = readdir(bassDir)) {
         Song *song = Song::newSong(d->d_name);
         if (song) {
-            pc.printf("Playing %s\r\n", song->getSampleFileName());
+            fprintf(stderr, "Waiting to play %s\r\n", song->getSampleFileName());
+            while (!(!button1 || !button2))
+                wait(0.1);
             player.playEntireSong(song);
-            pc.printf("total length: %f done: %u\r\n", player.timeInSong, player.actionsDone);
+            fprintf(stderr, "total length: %f done: %u\r\n", player.timeInSong, player.actionsDone);
         }
     }
-
     closedir(bassDir);
-    pc.printf("Done.\r\n");
+    fprintf(stderr, "Done.\r\n");
 }