Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

Revision:
7:dba9221acf48
Parent:
4:f009306756b3
--- a/billybass.cpp	Thu Jun 20 03:04:36 2013 +0000
+++ b/billybass.cpp	Thu Jun 20 04:10:22 2013 +0000
@@ -9,21 +9,33 @@
 char const * BillyBass::bodyName = "body";
 char const * BillyBass::tailName = "tail";
 
-DigitalOut *BillyBass::outputNamed(char const *_outputName, char const **_pName)
+DigitalOut *BillyBass::outputNamed(char const *_outputName, char const **_pName, float *_pOnDelay, float *_pOffDelay, float *_pMinOnTime)
 {
     DigitalOut *output = 0;
+    float onDelay = 0.0, offDelay = 0.0, minOnTime = 0.0;
+    char const *name = 0;
 
     if (!strcmp(_outputName, mouthName)) {
         output = &mouth;
-        if (_pName) *_pName = mouthName;
+        name = mouthName;
+        onDelay = MOUTH_ON_DELAY;
+        offDelay = MOUTH_OFF_DELAY;
+        minOnTime = MOUTH_ON_DELAY / 2;
     } else if (!strcmp(_outputName, "head") || !strcmp(_outputName, bodyName)) {
         output = &body;
-        if (_pName) *_pName = bodyName;
+        name = bodyName;
+        minOnTime = onDelay = BODY_ON_DELAY;
+        offDelay = BODY_OFF_DELAY;
     } else if (!strcmp(_outputName, tailName)) {
         output = &tail;
-        if (_pName) *_pName = tailName;
+        name = tailName;
+        minOnTime = onDelay = TAIL_ON_DELAY;
+        offDelay = TAIL_OFF_DELAY;
     }
-
+    if (_pOnDelay) *_pOnDelay = onDelay;
+    if (_pOffDelay) *_pOffDelay = offDelay;
+    if (_pMinOnTime) *_pMinOnTime = minOnTime;
+    if (_pName) *_pName = name;
     return output;
 }