Big Mouth Billy Bass player that takes raw wavefiles and decision list text files from an SD card
Dependencies: SDFileSystem mbed BillyBass
Diff: main.cpp
- Revision:
- 8:1dd2bb31dec6
- Parent:
- 7:ce27f959813b
- Child:
- 9:99213347474f
--- a/main.cpp Mon Jun 17 22:18:12 2013 +0000 +++ b/main.cpp Tue Jun 18 00:07:56 2013 +0000 @@ -32,12 +32,59 @@ Serial pc(USBTX, USBRX); +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); +} + +void dumpHeap() +{ + biggestAllocation(); + __heapstats((__heapprt)fprintf,stderr); + __heapvalid((__heapprt)fprintf,stderr, 0); +} + int main() { SongPlayer player; pc.baud(SERIAL_BAUD); - pc.printf("*** REBOOT ***\r\n"); + fprintf(stderr, "*** REBOOT ***\r\n"); + fprintf(stderr, "sizeof Action=%u, Song=%u\r\n", sizeof(Action), sizeof(Song)); + dumpHeap(); + Song *song = Song::newSong("6_1_sciencefish.raw"); + delete song; + dumpHeap(); + song = Song::newSong("2_1_i_hardly_slept.raw"); + dumpHeap(); + delete song; + dumpHeap(); + song = Song::newSong("1_1_a_sound.raw"); + dumpHeap(); + delete song; + song = Song::newSong("4_1_GoodEvening.raw"); + dumpHeap(); + delete song; + song = Song::newSong("5_1_listen_kid_THISONE.raw"); + dumpHeap(); + delete song; + Song::newSong("3_1_BoatingThemeSong.raw"); + dumpHeap(); + delete song; // read the directory DIR *bassDir = 0; @@ -48,12 +95,6 @@ wait(1.0); } - if (!Song::readAllSongs(bassDir)) { - pc.printf("Found no songs!\r\n"); - } else { - for (std::list<Song *>::const_iterator song_it = Song::songs.begin(); song_it != Song::songs.end(); song_it++) { - Song *song = *song_it; - song->print(pc); - } - } + closedir(bassDir); } +