Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

Revision:
0:84aaade0de8f
Child:
3:6c91a6232c4a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/billybass.hpp	Mon Jun 17 22:17:59 2013 +0000
@@ -0,0 +1,45 @@
+#ifndef __included_billybass_hpp
+#define __included_billybass_hpp
+
+#include "mbed.h"
+#include "config.hpp"
+#include <list>
+#include <vector>
+#include <cmath>
+
+extern AnalogOut speaker;
+extern Serial pc;
+
+class BillyBass
+{
+public:
+
+    BillyBass(PinName tailPin, PinName mouthPin, PinName bodyPin) : 
+        tail(tailPin), mouth(mouthPin), body(bodyPin)
+    {
+        tail.write(0);
+        mouth.write(0);
+        body.write(0);
+        if (numFish < MAX_FISH) fish[numFish++] = this;
+        // else error
+    }
+
+    // if *_pName, it will get the string name of the output
+    DigitalOut *outputNamed(char const *_outputName, char const **_pName = 0);
+
+    static BillyBass *bassNumber(unsigned which) { return (which >= numFish) ? 0 : fish[which]; }
+    static unsigned getNumFish() { return numFish; }
+
+protected:
+    static BillyBass* fish[ MAX_FISH ];
+    static unsigned numFish;
+    static char const * mouthName;
+    static char const * bodyName;
+    static char const * tailName;
+
+    DigitalOut tail;
+    DigitalOut mouth;
+    DigitalOut body;
+};
+
+#endif