Big Mouth Billy Bass automation library
billybass.cpp@7:dba9221acf48, 2013-06-20 (annotated)
- Committer:
- bikeNomad
- Date:
- Thu Jun 20 04:10:22 2013 +0000
- Revision:
- 7:dba9221acf48
- Parent:
- 4:f009306756b3
try to shift times and enforce minimum times
Who changed what in which revision?
User | Revision | Line number | New 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 | } |