Ejemplo n.º 1
0
 void onElectricThink()
 {
     InputPin *value = getInputPin("value");
     OutputPin *control = getOutputPin("control");
     Signal::Voltage fValue = value->outputSignal().getVoltage();
     bool controlOutput = control->outputSignal().isHigh();
     if(mBelowMax)
     {
         if(fValue < mHigher)
             controlOutput = true;
         else
         {
             mBelowMax = false;
             controlOutput = false;
         }
     }
     else
     {
         if(fValue > mLower)
             controlOutput = false;
         else
         {
             mBelowMax = true;
             controlOutput = true;
         }
     }
     if(control->outputSignal().isHigh() != controlOutput)
         control->inputSignal(Signal(controlOutput));
     Device::sleep();
 }
Ejemplo n.º 2
0
 virtual void onElectricThink()
 {
     InputPin *enable = getInputPin("enable");
     if(enable->outputSignal().isHigh())
     {
         cout << "[generator] turning on" << endl;
         mEnabled = true;
     }
     else if(enable->outputSignal().isLow())
     {
         cout << "[generator] turning off" << endl;
         mEnabled = false;
     }
     if(mEnabled && !Module::isAwake())
         Module::awakenWithoutNotifying();
     Device::sleep();
 }