main.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include <Arduino.h>
  2. #include "configuration.h"
  3. #include "display_task.h"
  4. #include "interface_task.h"
  5. #include "motor_task.h"
  6. Configuration config;
  7. #if SK_DISPLAY
  8. static DisplayTask display_task(0);
  9. static DisplayTask* display_task_p = &display_task;
  10. #else
  11. static DisplayTask* display_task_p = nullptr;
  12. #endif
  13. static MotorTask motor_task(1, config);
  14. InterfaceTask interface_task(0, motor_task, display_task_p);
  15. void setup() {
  16. #if SK_DISPLAY
  17. display_task.setLogger(&interface_task);
  18. display_task.begin();
  19. // Connect display to motor_task's knob state feed
  20. motor_task.addListener(display_task.getKnobStateQueue());
  21. #endif
  22. interface_task.begin();
  23. config.setLogger(&interface_task);
  24. config.loadFromDisk();
  25. motor_task.setLogger(&interface_task);
  26. motor_task.begin();
  27. // Free up the Arduino loop task
  28. vTaskDelete(NULL);
  29. }
  30. void loop() {
  31. // char buf[50];
  32. // static uint32_t last_stack_debug;
  33. // if (millis() - last_stack_debug > 1000) {
  34. // interface_task.log("Stack high water:");
  35. // snprintf(buf, sizeof(buf), " main: %d", uxTaskGetStackHighWaterMark(NULL));
  36. // interface_task.log(buf);
  37. // #if SK_DISPLAY
  38. // snprintf(buf, sizeof(buf), " display: %d", uxTaskGetStackHighWaterMark(display_task.getHandle()));
  39. // interface_task.log(buf);
  40. // #endif
  41. // snprintf(buf, sizeof(buf), " motor: %d", uxTaskGetStackHighWaterMark(motor_task.getHandle()));
  42. // interface_task.log(buf);
  43. // snprintf(buf, sizeof(buf), " interface: %d", uxTaskGetStackHighWaterMark(interface_task.getHandle()));
  44. // interface_task.log(buf);
  45. // snprintf(buf, sizeof(buf), "Heap -- free: %d, largest: %d", heap_caps_get_free_size(MALLOC_CAP_8BIT), heap_caps_get_largest_free_block(MALLOC_CAP_8BIT));
  46. // interface_task.log(buf);
  47. // last_stack_debug = millis();
  48. // }
  49. }