Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

Committer:
bikeNomad
Date:
Thu Jun 20 15:03:49 2013 +0000
Revision:
8:ad0c038ebfc1
Parent:
7:dba9221acf48
Made main loop repeat forever; eliminated time shifting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bikeNomad 0:84aaade0de8f 1
bikeNomad 0:84aaade0de8f 2 #include "billybass.hpp"
bikeNomad 0:84aaade0de8f 3 #include <string.h>
bikeNomad 0:84aaade0de8f 4
bikeNomad 0:84aaade0de8f 5 // class static
bikeNomad 0:84aaade0de8f 6 BillyBass* BillyBass::fish[ MAX_FISH ];
bikeNomad 0:84aaade0de8f 7 unsigned BillyBass::numFish;
bikeNomad 0:84aaade0de8f 8 char const * BillyBass::mouthName = "mouth";
bikeNomad 0:84aaade0de8f 9 char const * BillyBass::bodyName = "body";
bikeNomad 0:84aaade0de8f 10 char const * BillyBass::tailName = "tail";
bikeNomad 0:84aaade0de8f 11
bikeNomad 7:dba9221acf48 12 DigitalOut *BillyBass::outputNamed(char const *_outputName, char const **_pName, float *_pOnDelay, float *_pOffDelay, float *_pMinOnTime)
bikeNomad 0:84aaade0de8f 13 {
bikeNomad 0:84aaade0de8f 14 DigitalOut *output = 0;
bikeNomad 7:dba9221acf48 15 float onDelay = 0.0, offDelay = 0.0, minOnTime = 0.0;
bikeNomad 7:dba9221acf48 16 char const *name = 0;
bikeNomad 0:84aaade0de8f 17
bikeNomad 0:84aaade0de8f 18 if (!strcmp(_outputName, mouthName)) {
bikeNomad 0:84aaade0de8f 19 output = &mouth;
bikeNomad 7:dba9221acf48 20 name = mouthName;
bikeNomad 7:dba9221acf48 21 onDelay = MOUTH_ON_DELAY;
bikeNomad 7:dba9221acf48 22 offDelay = MOUTH_OFF_DELAY;
bikeNomad 7:dba9221acf48 23 minOnTime = MOUTH_ON_DELAY / 2;
bikeNomad 4:f009306756b3 24 } else if (!strcmp(_outputName, "head") || !strcmp(_outputName, bodyName)) {
bikeNomad 0:84aaade0de8f 25 output = &body;
bikeNomad 7:dba9221acf48 26 name = bodyName;
bikeNomad 7:dba9221acf48 27 minOnTime = onDelay = BODY_ON_DELAY;
bikeNomad 7:dba9221acf48 28 offDelay = BODY_OFF_DELAY;
bikeNomad 4:f009306756b3 29 } else if (!strcmp(_outputName, tailName)) {
bikeNomad 0:84aaade0de8f 30 output = &tail;
bikeNomad 7:dba9221acf48 31 name = tailName;
bikeNomad 7:dba9221acf48 32 minOnTime = onDelay = TAIL_ON_DELAY;
bikeNomad 7:dba9221acf48 33 offDelay = TAIL_OFF_DELAY;
bikeNomad 0:84aaade0de8f 34 }
bikeNomad 7:dba9221acf48 35 if (_pOnDelay) *_pOnDelay = onDelay;
bikeNomad 7:dba9221acf48 36 if (_pOffDelay) *_pOffDelay = offDelay;
bikeNomad 7:dba9221acf48 37 if (_pMinOnTime) *_pMinOnTime = minOnTime;
bikeNomad 7:dba9221acf48 38 if (_pName) *_pName = name;
bikeNomad 0:84aaade0de8f 39 return output;
bikeNomad 0:84aaade0de8f 40 }
bikeNomad 4:f009306756b3 41
bikeNomad 4:f009306756b3 42 char const *BillyBass::outputName(DigitalOut const *out) const
bikeNomad 4:f009306756b3 43 {
bikeNomad 4:f009306756b3 44 if (out == &tail) return tailName;
bikeNomad 4:f009306756b3 45 else if (out == &body) return bodyName;
bikeNomad 4:f009306756b3 46 else if (out == &mouth) return mouthName;
bikeNomad 4:f009306756b3 47 else return "unknown";
bikeNomad 4:f009306756b3 48 }