board.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef BOARD_H
  2. #define BOARD_H
  3. #include <http.h>
  4. #include <web_socket.h>
  5. #include <mqtt.h>
  6. #include <udp.h>
  7. #include <string>
  8. #include "led/led.h"
  9. #include "backlight.h"
  10. void* create_board();
  11. class AudioCodec;
  12. class Display;
  13. class Board {
  14. private:
  15. Board(const Board&) = delete; // 禁用拷贝构造函数
  16. Board& operator=(const Board&) = delete; // 禁用赋值操作
  17. virtual std::string GetBoardJson() = 0;
  18. protected:
  19. Board();
  20. std::string GenerateUuid();
  21. // 软件生成的设备唯一标识
  22. std::string uuid_;
  23. public:
  24. static Board& GetInstance() {
  25. static Board* instance = static_cast<Board*>(create_board());
  26. return *instance;
  27. }
  28. virtual ~Board() = default;
  29. virtual std::string GetBoardType() = 0;
  30. virtual std::string GetUuid() { return uuid_; }
  31. virtual Backlight* GetBacklight() { return nullptr; }
  32. virtual Led* GetLed();
  33. virtual AudioCodec* GetAudioCodec() = 0;
  34. virtual Display* GetDisplay();
  35. virtual Http* CreateHttp() = 0;
  36. virtual WebSocket* CreateWebSocket() = 0;
  37. virtual Mqtt* CreateMqtt() = 0;
  38. virtual Udp* CreateUdp() = 0;
  39. virtual void StartNetwork() = 0;
  40. virtual const char* GetNetworkStateIcon() = 0;
  41. virtual bool GetBatteryLevel(int &level, bool& charging, bool& discharging);
  42. virtual bool GetBatteryAverageADC(uint32_t &averageADC);
  43. virtual std::string GetJson();
  44. virtual void SetPowerSaveMode(bool enabled) = 0;
  45. };
  46. #define DECLARE_BOARD(BOARD_CLASS_NAME) \
  47. void* create_board() { \
  48. return new BOARD_CLASS_NAME(); \
  49. }
  50. #endif // BOARD_H