interface_task.h 1014 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <AceButton.h>
  3. #include <Arduino.h>
  4. #include "display_task.h"
  5. #include "logger.h"
  6. #include "motor_task.h"
  7. #include "serial/serial_protocol_plaintext.h"
  8. #include "serial/serial_protocol_protobuf.h"
  9. #include "serial/uart_stream.h"
  10. #include "task.h"
  11. class InterfaceTask : public Task<InterfaceTask>, public Logger {
  12. friend class Task<InterfaceTask>; // Allow base Task to invoke protected run()
  13. public:
  14. InterfaceTask(const uint8_t task_core, MotorTask& motor_task, DisplayTask* display_task);
  15. ~InterfaceTask();
  16. void log(const char* msg) override;
  17. protected:
  18. void run();
  19. private:
  20. UartStream stream_;
  21. MotorTask& motor_task_;
  22. DisplayTask* display_task_;
  23. char buf_[64];
  24. int current_config_ = 0;
  25. QueueHandle_t log_queue_;
  26. SerialProtocolPlaintext plaintext_protocol_;
  27. SerialProtocolProtobuf proto_protocol_;
  28. void changeConfig(bool next);
  29. void updateHardware();
  30. };