Calculator.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include "Calculator.h"
  2. #include "SuperSensor.h"
  3. #include <MemoryFree.h>
  4. Calculator::Calculator( Scheduler* aS, Scheduler* aSensors) : Task(aS) {
  5. iS = aSensors;
  6. setTimeout(1000 * TASK_MILLISECOND);
  7. }
  8. bool Calculator::Callback() {
  9. Serial.print(millis()); Serial.print(":\t");
  10. Serial.println("CalcCallback: calculating");
  11. if ( getStatusRequest()->getStatus() >= 0) { // only calculate if statusrequest ended successfully
  12. Serial.print("CalcCallback: Max distance="); Serial.println(distance);
  13. }
  14. return false;
  15. }
  16. extern int pins[];
  17. bool Calculator::OnEnable() {
  18. Serial.print(millis()); Serial.print(":\t");
  19. Serial.println("CalcEnable: OnEnable");
  20. Serial.println("Activating sensors");
  21. StatusRequest* sr = getStatusRequest();
  22. iNS = sr->getCount();
  23. distance = 0;
  24. for (int i = 0; i < iNS; i++) {
  25. SuperSensor *s = new SuperSensor( iS, pins[i], this, sr);
  26. s->setId(i + 1);
  27. s->begin();
  28. s->restartDelayed();
  29. }
  30. return true;
  31. }
  32. void Calculator::OnDisable() {
  33. if ( timedOut() ) {
  34. getStatusRequest()->signalComplete(-1); // signal error
  35. Serial.print(millis()); Serial.print(":\t");
  36. Serial.println("MeasureCallback: ***** Timeout *****");
  37. }
  38. iS->disableAll(false); // only disable tasks in the ts scheduler
  39. Serial.print("Free mem = "); Serial.println(freeMemory()); Serial.println();
  40. }
  41. void Calculator::reportDistance(long aD) {
  42. if (distance < aD) distance = aD;
  43. }