qappctrl.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. // qappctrl.h :
  2. //
  3. #if !defined(AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_)
  4. #define AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_
  5. #include <QObject>
  6. #include <QQmlEngine>
  7. #include <QQmlContext>
  8. #include <gfaipc.h>
  9. #ifdef __cplusplus
  10. /////////////////////////////////////////////////////////////////////////////
  11. // qappctrl.h - Declarations:
  12. class QGfaAppInfo : public QObject
  13. {
  14. Q_OBJECT
  15. Q_PROPERTY(int state READ state NOTIFY stateChanged)
  16. Q_PROPERTY(QString stateText READ stateText NOTIFY stateTextChanged)
  17. Q_PROPERTY(QString name READ name NOTIFY nameChanged)
  18. Q_PROPERTY(quint64 cycCur READ cycCur NOTIFY cycCurChanged)
  19. Q_PROPERTY(quint64 cycMin READ cycMin NOTIFY cycMinChanged)
  20. Q_PROPERTY(quint64 cycMax READ cycMax NOTIFY cycMaxChanged)
  21. Q_PROPERTY(quint64 upTime READ upTime NOTIFY upTimeChanged)
  22. Q_PROPERTY(double cpuTime READ cpuTime NOTIFY cpuTimeChanged)
  23. Q_PROPERTY(double cpuCur READ cpuCur NOTIFY cpuCurChanged)
  24. Q_PROPERTY(double cpuAvg READ cpuAvg NOTIFY cpuAvgChanged)
  25. public:
  26. Q_INVOKABLE bool pause(void);
  27. Q_INVOKABLE bool resume(void);
  28. Q_INVOKABLE bool stop(void);
  29. signals:
  30. void stateChanged(int val);
  31. void stateTextChanged(const QString &val);
  32. void nameChanged(const QString &val);
  33. void sendControlMessage(appid_t nAppID, ctrlmsg_t msg);
  34. void cycCurChanged(quint64 val);
  35. void cycMinChanged(quint64 val);
  36. void cycMaxChanged(quint64 val);
  37. void upTimeChanged(quint64 val);
  38. void cpuTimeChanged(double val);
  39. void cpuCurChanged(double val);
  40. void cpuAvgChanged(double val);
  41. public:
  42. explicit QGfaAppInfo(int nIndex, QObject *pParent = NULL);
  43. virtual ~QGfaAppInfo(void);
  44. int state(void) const;
  45. bool setState(int val);
  46. QString stateText(void) const;
  47. void setStateText(int val);
  48. QString name(void) const;
  49. void setName(const QString &val);
  50. quint64 cycCur(void) const;
  51. quint64 cycMin(void) const;
  52. quint64 cycMax(void) const;
  53. quint64 upTime(void) const;
  54. double cpuTime(void) const;
  55. double cpuCur(void) const;
  56. double cpuAvg(void) const;
  57. void setAppTimes(LPCGFA_APPCTRL_APPTIMES pat, GfaIpcAppStates state, bool bDoHeavyLoadUpdate = false);
  58. private:
  59. private:
  60. int m_state;
  61. QString m_stateText;
  62. QString m_name;
  63. int m_nIndex;
  64. appid_t m_nAppID;
  65. quint64 m_cycCur;
  66. quint64 m_cycMin;
  67. quint64 m_cycMax;
  68. quint64 m_upTime;
  69. double m_cpuTime;
  70. double m_cpuPercCur;
  71. double m_cpuPercAvg;
  72. };
  73. /////////////////////////////////////////////////////////////////////////////
  74. class QGfaAppCtrl : public QObject
  75. {
  76. Q_OBJECT
  77. Q_PROPERTY(QQmlListProperty<QGfaAppInfo> appInfo READ appInfo CONSTANT)
  78. Q_PROPERTY(quint64 minPass READ minPass NOTIFY minPassChanged)
  79. Q_PROPERTY(quint64 maxPass READ maxPass NOTIFY maxPassChanged)
  80. Q_PROPERTY(quint64 avgPass READ avgPass NOTIFY avgPassChanged)
  81. public:
  82. enum AppStates
  83. {
  84. STATE_NOT_RUNNING = GIAS_StateNotRunning,
  85. STATE_INITIALIZING,
  86. STATE_RUNNING,
  87. STATE_PAUSED,
  88. STATE_HANGING,
  89. STATE_TERMINATING,
  90. STATE_INVALID
  91. };
  92. Q_ENUM(AppStates)
  93. enum AppIndex
  94. {
  95. APP_INDEX_REMANENT = GAI_Remanent,
  96. APP_INDEX_DATALOGGER = GAI_Datalogger,
  97. APP_INDEX_SUMMARIST = GAI_Summarist,
  98. APP_INDEX_REST = GAI_Rest,
  99. APP_INDEX_MQTTCL = GAI_Mqttcl
  100. };
  101. Q_ENUM(AppIndex)
  102. signals:
  103. void minPassChanged(quint64 val);
  104. void maxPassChanged(quint64 val);
  105. void avgPassChanged(quint64 val);
  106. public:
  107. explicit QGfaAppCtrl(QObject *pParent = NULL);
  108. virtual ~QGfaAppCtrl(void);
  109. bool Create(appid_t nAppID, const char *pszDisplayName, int nTimerIntMs, clock64_t nHeavyLoadUpdateIntervalMs);
  110. void Release(void);
  111. void RegisterQmlTypes(QQmlEngine &rEng, int nVerMajor = 1, int nVerMinor = 0);
  112. bool PresetDisplayName(appid_t nAppID, const char *pszName);
  113. bool SubscribeStateEvents(appid_t nAppMask);
  114. int SetState(int nState);
  115. public:
  116. Q_INVOKABLE int appIndexFromAppID(quint64 nAppID);
  117. public:
  118. QQmlListProperty<QGfaAppInfo> appInfo(void);
  119. quint64 minPass(void) const;
  120. quint64 maxPass(void) const;
  121. quint64 avgPass(void) const;
  122. private slots:
  123. void onSendControlMessage(appid_t nAppID, ctrlmsg_t msg);
  124. void timerEvent(QTimerEvent *event) override;
  125. private:
  126. HAPPCTRL m_hAC;
  127. appid_t m_nAppID;
  128. int m_nTimerID;
  129. QList<QGfaAppInfo*> m_appInfo;
  130. clock64_t m_curPass;
  131. clock64_t m_minPass;
  132. clock64_t m_maxPass;
  133. clock64_t m_avgPass;
  134. appid_t m_nEvtSrcs;
  135. clock64_t m_nHeavyLoadUpdateIntervalUs;
  136. struct timespec m_tsLastHeavyLoadUpdate;
  137. };
  138. /////////////////////////////////////////////////////////////////////////////
  139. #endif // __cplusplus
  140. #endif // !defined(AGD_QAPPCTRL_H__ADD46467_F628_4A07_8844_613598E359DE__INCLUDED_)