| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #include "SuperSensor.h"
- SuperSensor::SuperSensor(Scheduler* aScheduler, int aPin, Calculator* aC, StatusRequest* aS) : Task(TASK_MILLISECOND, TASK_FOREVER, aScheduler, false) {
- iPin = aPin;
- iC = aC;
- iS = aS;
- }
- SuperSensor::~SuperSensor() {
- iValue = -1;
- }
- void SuperSensor::begin() {
- iDelay = random(300, 1500);
- iValue = -1;
- }
- void SuperSensor::stop() {
- //nothing to do
- }
- long SuperSensor::trigger() {
- iStart = millis();
- return iDelay;
- }
- bool SuperSensor::measurementReady() {
- if ( millis() - iStart > iDelay ) {
- iValue = random(501);
- return true;
- }
- return false;
- }
- long SuperSensor::value() {
- return iValue;
- }
- bool SuperSensor::OnEnable() {
- int i = getId();
- Serial.print(millis()); Serial.print(":\t");
- Serial.print("SEnable: TaskID=");
- Serial.println(i);
- Serial.print("Triggering sensor. Delay=");
- long dly = trigger();
- Serial.println( dly );
- return true;
- }
- bool SuperSensor::Callback() {
- if ( measurementReady() ) {
- int i = getId();
- Serial.print(millis()); Serial.print(":\t");
- Serial.print("SCallback: TaskID=");
- Serial.println(i);
- Serial.print("Emulating measurement. d=");
- long d = value();
- iC->reportDistance(d);
- Serial.println(d);
- iS->signal();
- disable();
- delete this;
- return true;
- }
- return false;
- }
- void SuperSensor::OnDisable() {
- int i = getId();
- Serial.print(millis()); Serial.print(":\t");
- Serial.print("SDisable: TaskID=");
- Serial.println(i);
- stop();
- }
|