Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers billybass.cpp Source File

billybass.cpp

00001 
00002 #include "billybass.hpp"
00003 #include <string.h>
00004 
00005 // class static
00006 BillyBass* BillyBass::fish[ MAX_FISH ];
00007 unsigned BillyBass::numFish;
00008 char const * BillyBass::mouthName = "mouth";
00009 char const * BillyBass::bodyName = "body";
00010 char const * BillyBass::tailName = "tail";
00011 
00012 DigitalOut *BillyBass::outputNamed(char const *_outputName, char const **_pName, float *_pOnDelay, float *_pOffDelay, float *_pMinOnTime)
00013 {
00014     DigitalOut *output = 0;
00015     float onDelay = 0.0, offDelay = 0.0, minOnTime = 0.0;
00016     char const *name = 0;
00017 
00018     if (!strcmp(_outputName, mouthName)) {
00019         output = &mouth;
00020         name = mouthName;
00021         onDelay = MOUTH_ON_DELAY;
00022         offDelay = MOUTH_OFF_DELAY;
00023         minOnTime = MOUTH_ON_DELAY / 2;
00024     } else if (!strcmp(_outputName, "head") || !strcmp(_outputName, bodyName)) {
00025         output = &body;
00026         name = bodyName;
00027         minOnTime = onDelay = BODY_ON_DELAY;
00028         offDelay = BODY_OFF_DELAY;
00029     } else if (!strcmp(_outputName, tailName)) {
00030         output = &tail;
00031         name = tailName;
00032         minOnTime = onDelay = TAIL_ON_DELAY;
00033         offDelay = TAIL_OFF_DELAY;
00034     }
00035     if (_pOnDelay) *_pOnDelay = onDelay;
00036     if (_pOffDelay) *_pOffDelay = offDelay;
00037     if (_pMinOnTime) *_pMinOnTime = minOnTime;
00038     if (_pName) *_pName = name;
00039     return output;
00040 }
00041 
00042 char const *BillyBass::outputName(DigitalOut const *out) const
00043 {
00044     if (out == &tail) return tailName;
00045     else if (out == &body) return bodyName;
00046     else if (out == &mouth) return mouthName;
00047     else return "unknown";
00048 }