Calculator.cpp 1.6 KB

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