| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #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();
- return true;
- }
- return false;
- }
- void SuperSensor::OnDisable() {
- int i = getId();
- Serial.print(millis()); Serial.print(":\t");
- Serial.print("SDisable: TaskID=");
- Serial.println(i);
- stop();
- delete this;
- }
|