Big Mouth Billy Bass automation library
billybass.hpp
- Committer:
- bikeNomad
- Date:
- 2013-06-20
- Revision:
- 7:dba9221acf48
- Parent:
- 4:f009306756b3
File content as of revision 7:dba9221acf48:
#ifndef __included_billybass_hpp
#define __included_billybass_hpp
#include "mbed.h"
#include "config.hpp"
#include <list>
#include <vector>
#include <cmath>
#include "mbed_debug.h"
class BillyBass
{
public:
BillyBass(PinName tailPin, PinName mouthPin, PinName bodyPin, bool _inverted=false) :
tail(tailPin), mouth(mouthPin), body(bodyPin), inverted(!!_inverted) {
relax();
if (numFish < MAX_FISH) fish[numFish++] = this;
else fprintf(stderr, "Too many fish!\r\n");
}
// if *_pName, it will get the string name of the output
DigitalOut *outputNamed(char const *_outputName, char const **_pName = 0, float *_pOnDelay = 0, float *_pOffDelay = 0, float *_pMinOn = 0);
static BillyBass *bassNumber(unsigned which) {
return (which >= numFish) ? 0 : fish[which];
}
static unsigned getNumFish() {
return numFish;
}
int onState() const {
return !inverted;
}
int offState() const {
return inverted;
}
void relax() {
tail.write(offState());
mouth.write(offState());
body.write(offState());
}
char const * outputName(DigitalOut const *out) const;
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;
int inverted;
};
#endif
Ned Konz