You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

134 lines
5.8 KiB

3 months ago
  1. #pragma once
  2. #include "apphardware/apphardware.hpp"
  3. #include "config/config.hpp"
  4. #include "uappbase/base.hpp"
  5. //
  6. #include "ui_state_mgr.hpp"
  7. #include "uicontroler/base/ui_state.hpp"
  8. //
  9. #include "tjc/tjc.hpp"
  10. namespace iflytop {
  11. using namespace std;
  12. typedef struct {
  13. uint8_t data[TJC_MAX_PACKET_SIZE];
  14. uint16_t datalen;
  15. } tjc_rx_packet_t;
  16. #define UIS UIControler::ins()
  17. class UIControler {
  18. ZThread m_thread;
  19. tjc_rx_packet_t ackcache;
  20. zmutex m_cmdlock = {"UI_LOCK"};
  21. public:
  22. UIControler() {};
  23. ~UIControler() {};
  24. static UIControler* ins() {
  25. static UIControler instance;
  26. return &instance;
  27. }
  28. void postInitialize();
  29. void initialize();
  30. void pageInitialize();
  31. int getNowPage() { return UIStateMgr::ins()->nowPage; }
  32. void chpage(uint8_t page, bool triggerEvent);
  33. bool echo(uint8_t tx, uint8_t* rx);
  34. void startSchedule();
  35. /***********************************************************************************************************************
  36. * WRITE *
  37. ***********************************************************************************************************************/
  38. void virtualClick(uint8_t pid, uint8_t bid, uint8_t event);
  39. bool setTxt(uint8_t pid, uint8_t bid, const char* txt, ...);
  40. bool setTxt(uint8_t pid, uint8_t bid, const char* txt, va_list args);
  41. void setPic(uint8_t pid, uint8_t bid, int32_t picNum);
  42. void setAph(uint8_t pid, uint8_t bid, int32_t state); // ����͸���ȣ�����127,����Ϊ0����������,�¼���Ȼ�ᴥ��,�����ɵײ�����
  43. bool setVal(uint8_t pid, uint8_t bid, int32_t val);
  44. void setEnumComponentState(uint8_t pid, uint8_t bid, int32_t state);
  45. void setPicturePicNum(uint8_t pid, uint8_t bid, uint8_t fromBid);
  46. void setButtonPicNum(uint8_t pid, uint8_t bid, uint8_t fromBid);
  47. void setPicturePicNumFromGlobal(uint8_t pid, uint8_t bid, uint8_t fromPid, uint8_t fromBid);
  48. void setButtonPicNumFromGlobal(uint8_t pid, uint8_t bid, uint8_t fromPid, uint8_t fromBid);
  49. void setrtc(zdate_t* date);
  50. void setPath(uint8_t pid, uint8_t bid, const char* path) {
  51. zlock_guard lg(m_cmdlock);
  52. sendcmd("p[%d].b[%d].path=\"%s\"", pid, bid, path);
  53. }
  54. void sendcmd(const char* format, ...);
  55. void sendcmd(const char* format, va_list args);
  56. void setEffect(uint8_t pid, uint8_t bid, tjc_effet_t effect) {
  57. zlock_guard lg(m_cmdlock);
  58. sendcmd("p[%d].b[%d].effect=%d", pid, bid, effect);
  59. }
  60. /***********************************************************************************************************************
  61. * READ *
  62. ***********************************************************************************************************************/
  63. bool readTxt(uint8_t pid, uint8_t bid, char* txt, int32_t txtbuflen);
  64. bool readInt(uint8_t pid, uint8_t bid, int32_t* val);
  65. bool readFiledAsInt(uint8_t pid, uint8_t bid, const char* filedName, int32_t* val);
  66. /***********************************************************************************************************************
  67. * POP_WIN *
  68. ***********************************************************************************************************************/
  69. void popWin(UIPopWinType_t type, const char* info, function<void(bool)> onConfirm);
  70. void popWarningWin(const char* info) { popWin(UI_POP_WIN_TYPE_WARNING_INFO, info, nullptr); }
  71. void popFatalErrorWin(const char* info) { popWin(UI_POP_WIN_TYPE_FATAL_ERROR, info, nullptr); }
  72. void popConfirmWin(const char* info, function<void(bool)> onConfirm) { popWin(UI_POP_WIN_TYPE_CONFIRM, info, onConfirm); }
  73. void popInfoWin(const char* info, function<void(bool)> onConfirm = nullptr) { popWin(UI_POP_WIN_TYPE_INFO, info, onConfirm); }
  74. void popPowerOffWin(const char* info) { popWin(UI_POP_WIN_TYPE_POWER_OFF_INFO, info, nullptr); }
  75. void doInUILockArea(function<void()> fn) {
  76. zlock_guard lg(m_cmdlock);
  77. fn();
  78. }
  79. /**
  80. * @brief
  81. */
  82. void popFullKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength, const char* initval);
  83. void popPasswdKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength);
  84. void popNumKeyBoard(uint8_t fromPid, uint8_t fromBid, int limitLength, const char* initval, ...);
  85. void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char** selectvals);
  86. void popKeyBMutSel(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* selectvals);
  87. void popKeyBMutSelFix(uint8_t fromPid, uint8_t fromBid, int selectvalindex, const char* keyboardName, const char** selectvals);
  88. /***********************************************************************************************************************
  89. * UTILS *
  90. ***********************************************************************************************************************/
  91. bool visEx(uint8_t pid, uint8_t bid, bool val); // ͨ����������ʵ�ֿ�ҳ������
  92. bool movePicToXY(uint8_t pid, uint8_t bid, int32_t x, int32_t y);
  93. bool movePicTo(uint8_t pid, uint8_t bid, uint8_t toBid);
  94. bool movePicOutOfScreen(uint8_t pid, uint8_t bid);
  95. void doBlockWork(const char* blockmask, function<void()> fn) ;
  96. private:
  97. void processScreenRxPacket(uint8_t* data, size_t len);
  98. void startReceiveAck();
  99. void callUsrEventCb(UIEvent* event);
  100. bool _readFiledAsInt(uint8_t pid, uint8_t bid, const char* valName, int32_t* val);
  101. private:
  102. bool vis(uint16_t bid, int32_t val); // ��֧�ֿ�ҳ������
  103. void setTouchEnableState(uint8_t bid, uint8_t enable); // ��֧�ֿ�ҳ������
  104. void placeHolder() {}
  105. };
  106. } // namespace iflytop