Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

billybass.hpp

Committer:
bikeNomad
Date:
2013-06-17
Revision:
0:84aaade0de8f
Child:
3:6c91a6232c4a

File content as of revision 0:84aaade0de8f:

#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