board.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  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 <network_interface.h>
  9. #include "led/led.h"
  10. #include "backlight.h"
  11. #include "camera.h"
  12. void* create_board();
  13. class AudioCodec;
  14. class Display;
  15. class Board {
  16. private:
  17. Board(const Board&) = delete; // 禁用拷贝构造函数
  18. Board& operator=(const Board&) = delete; // 禁用赋值操作
  19. protected:
  20. Board();
  21. std::string GenerateUuid();
  22. // 软件生成的设备唯一标识
  23. std::string uuid_;
  24. public:
  25. static Board& GetInstance() {
  26. static Board* instance = static_cast<Board*>(create_board());
  27. return *instance;
  28. }
  29. virtual ~Board() = default;
  30. virtual std::string GetBoardType() = 0;
  31. virtual std::string GetUuid() { return uuid_; }
  32. virtual Backlight* GetBacklight() { return nullptr; }
  33. virtual Led* GetLed();
  34. virtual AudioCodec* GetAudioCodec() = 0;
  35. virtual bool GetTemperature(float& esp32temp);
  36. virtual Display* GetDisplay();
  37. virtual Camera* GetCamera();
  38. virtual NetworkInterface* GetNetwork() = 0;
  39. virtual void StartNetwork() = 0;
  40. virtual const char* GetNetworkStateIcon() = 0;
  41. virtual bool GetBatteryLevel(int &level, bool& charging, bool& discharging);
  42. virtual std::string GetJson();
  43. virtual void SetPowerSaveMode(bool enabled) = 0;
  44. virtual std::string GetBoardJson() = 0;
  45. virtual std::string GetDeviceStatusJson() = 0;
  46. virtual void postAlive();
  47. bool internetConnet=0;
  48. };
  49. #define DECLARE_BOARD(BOARD_CLASS_NAME) \
  50. void* create_board() { \
  51. return new BOARD_CLASS_NAME(); \
  52. }
  53. #endif // BOARD_H