gfativaflash.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. // gfativaflash.h :
  2. //
  3. #if !defined(AGD_GFATIVAFLASH_H__49F09E25_28B7_4178_B4B6_6DAFF98ABECD__INCLUDED_)
  4. #define AGD_GFATIVAFLASH_H__49F09E25_28B7_4178_B4B6_6DAFF98ABECD__INCLUDED_
  5. #include <string>
  6. #include <QObject>
  7. #include <QList>
  8. #include <QStringList>
  9. #include <QProcess>
  10. //#include <QQmlListProperty>
  11. //#include <qqmlparserstatus.h>
  12. #include "tagnames.h"
  13. #ifdef __cplusplus
  14. /////////////////////////////////////////////////////////////////////////////
  15. // gfativaflash.h - Declarations:
  16. #define _MAX_SLAVE_COUNT 256
  17. #define _MB_BROADCAST_ADDRESS 0
  18. #define _MB_MAX_SLAVE_ID 247
  19. #define _IS_VALID_SLV_ID(id) (((id) >= 0) && ((id) < _MAX_SLAVE_COUNT))
  20. #define _IS_VALID_MB_ID(id) (((id) != _MB_BROADCAST_ADDRESS) && ((id) <= _MB_MAX_SLAVE_ID))
  21. /////////////////////////////////////////////////////////////////////////////
  22. class ImgUploadStatus : public QObject
  23. {
  24. Q_OBJECT
  25. Q_PROPERTY(int ctx READ ctx NOTIFY ctxChanged)
  26. Q_PROPERTY(int errorCode READ errorCode NOTIFY errorCodeChanged)
  27. Q_PROPERTY(int cntFlashPages READ cntFlashPages NOTIFY cntFlashPagesChanged)
  28. Q_PROPERTY(int cbBlock READ cbBlock NOTIFY cbBlockChanged)
  29. Q_PROPERTY(int blockNr READ blockNr NOTIFY blockNrChanged)
  30. Q_PROPERTY(int cbTotal READ cbTotal NOTIFY cbTotalChanged)
  31. Q_PROPERTY(int cbSent READ cbSent NOTIFY cbSentChanged)
  32. Q_PROPERTY(int percentSent READ percentSent NOTIFY percentSentChanged)
  33. Q_PROPERTY(bool uploadInProgress READ uploadInProgress NOTIFY uploadInProgressChanged)
  34. public:
  35. enum StatusCtx
  36. {
  37. EraseFlashStart,
  38. EraseFlashEnd,
  39. ImgUploadStart,
  40. ImgUploadBlock,
  41. ImgUploadSuccess,
  42. ImgUploadError
  43. };
  44. Q_ENUMS(StatusCtx);
  45. public:
  46. explicit ImgUploadStatus(QObject *pParent = NULL);
  47. virtual ~ImgUploadStatus(void);
  48. void clear(void);
  49. signals:
  50. void ctxChanged(int val);
  51. void errorCodeChanged(int val);
  52. void cntFlashPagesChanged(int val);
  53. void cbBlockChanged(int val);
  54. void blockNrChanged(int val);
  55. void cbTotalChanged(int val);
  56. void cbSentChanged(int val);
  57. void percentSentChanged(int val);
  58. void uploadInProgressChanged(bool val);
  59. public:
  60. int ctx(void) const;
  61. void setCtx(int val);
  62. int errorCode(void) const;
  63. void setErrorCode(int val);
  64. int cbBlock(void) const;
  65. void setCbBlock(int val);
  66. int blockNr(void) const;
  67. void SetBlockNr(int val);
  68. int cbTotal(void) const;
  69. void setCbTotal(int val);
  70. int cbSent(void) const;
  71. void setCbSent(int val);
  72. int percentSent(void) const;
  73. void setPercentSent(int val);
  74. int cntFlashPages(void) const;
  75. void setCntFlashPages(int val);
  76. bool uploadInProgress(void) const;
  77. void setUploadInProgress(bool val);
  78. private:
  79. int m_nCtx;
  80. int m_nErrorCode;
  81. int m_nCbBlock;
  82. int m_nBlockNr;
  83. int m_nCbTotal;
  84. int m_nCbSent;
  85. int m_nPercentSent;
  86. int m_nCntFlashPages;
  87. bool m_bUploadInProgress;
  88. };
  89. /////////////////////////////////////////////////////////////////////////////
  90. class TivaFlash : public QObject
  91. {
  92. Q_OBJECT
  93. Q_PROPERTY(QString tivaFlashUtilPath READ tivaFlashUtilPath WRITE setTivaFlashUtilPath)
  94. Q_PROPERTY(QString itfName READ itfName WRITE setItfName)
  95. Q_PROPERTY(bool slvIdIsNodeAddr READ slvIdIsNodeAddr WRITE setSlvIdIsNodeAddr)
  96. Q_PROPERTY(int verbosity READ verbosity WRITE setVerbosity)
  97. Q_PROPERTY(QString imgFile READ imgFile WRITE setImgFile)
  98. Q_PROPERTY(bool executing READ executing NOTIFY executingChanged)
  99. Q_PROPERTY(int xBaudRate READ xBaudRate WRITE setXBaudRate)
  100. Q_PROPERTY(int appAddress READ appAddress WRITE setAppAddress)
  101. Q_PROPERTY(int blockSize READ blockSize WRITE setBlockSize)
  102. Q_PROPERTY(int pageEraseTime READ pageEraseTime WRITE setPageEraseTime)
  103. Q_PROPERTY(int mbCtrlRegister READ mbCtrlRegister WRITE setMbCtrlRegister)
  104. Q_PROPERTY(bool forceAllParities READ forceAllParities WRITE setForceAllParities)
  105. Q_PROPERTY(ImgUploadStatus* imgUploadStatus READ imgUploadStatus CONSTANT)
  106. Q_PROPERTY(QStringList materialEeprom READ materialEeprom NOTIFY materialEepromChanged)
  107. Q_PROPERTY(QStringList serialEeprom READ serialEeprom NOTIFY serialEepromChanged)
  108. Q_PROPERTY(QStringList imgMaterialBoot READ imgMaterialBoot NOTIFY imgMaterialBootChanged)
  109. Q_PROPERTY(QStringList imgBuildBoot READ imgBuildBoot NOTIFY imgBuildBootChanged)
  110. Q_PROPERTY(QList<int> imgSizeBoot READ imgSizeBoot NOTIFY imgSizeBootChanged)
  111. Q_PROPERTY(QList<double> imgCRC32Boot READ imgCRC32Boot NOTIFY imgCRC32BootChanged)
  112. Q_PROPERTY(QStringList imgMaterialApp READ imgMaterialApp NOTIFY imgMaterialAppChanged)
  113. Q_PROPERTY(QStringList imgBuildApp READ imgBuildApp NOTIFY imgBuildAppChanged)
  114. Q_PROPERTY(QList<int> imgSizeApp READ imgSizeApp NOTIFY imgSizeAppChanged)
  115. Q_PROPERTY(QList<double> imgCRC32App READ imgCRC32App NOTIFY imgCRC32AppChanged)
  116. Q_PROPERTY(QString imgMaterialFile READ imgMaterialFile NOTIFY materialFileChanged)
  117. Q_PROPERTY(QString imgBuildFile READ imgBuildFile NOTIFY imgBuildFileChanged)
  118. Q_PROPERTY(int imgSizeFile READ imgSizeFile NOTIFY imgSizeFileChanged)
  119. Q_PROPERTY(double imgCRC32File READ imgCRC32File NOTIFY imgCRC32FileChanged)
  120. public:
  121. explicit TivaFlash(QObject *pParent = NULL);
  122. virtual ~TivaFlash(void);
  123. public:
  124. Q_INVOKABLE bool getMatSer(int nSlvID, int nMbID = 0);
  125. Q_INVOKABLE bool getTargetImgInfo(int nSlvID, int nMbID = 0);
  126. Q_INVOKABLE bool pingTarget(int nSlvID, int nMbID = 0);
  127. Q_INVOKABLE bool startBootloader(int nSlvID, int nMbID = 0);
  128. Q_INVOKABLE bool resetBootloader(int nSlvID, int nMbID = 0);
  129. Q_INVOKABLE bool validateImgFile(int nSlvID, int nMbID = 0);
  130. Q_INVOKABLE bool uploadImgFile(int nSlvID, int nMbID = 0);
  131. Q_INVOKABLE bool clearImgInfo(int nSlvID);
  132. signals:
  133. void materialEepromChanged(void) const;
  134. void serialEepromChanged(void) const;
  135. void imgSizeBootChanged(void) const;
  136. void imgCRC32BootChanged(void) const;
  137. void imgMaterialBootChanged(void) const;
  138. void imgBuildBootChanged(void) const;
  139. void imgSizeAppChanged(void) const;
  140. void imgCRC32AppChanged(void) const;
  141. void imgMaterialAppChanged(void) const;
  142. void imgBuildAppChanged(void) const;
  143. void materialFileChanged(const QString &val) const;
  144. void imgBuildFileChanged(const QString &val) const;
  145. void imgSizeFileChanged(int val) const;
  146. void imgCRC32FileChanged(double val) const;
  147. void executingChanged(bool val) const;
  148. void processStarted(int slv) const;
  149. void processFinished(int slv, int exitcode, bool normalExit) const;
  150. void processOutput(int slv, int ctx, QString msg) const;
  151. void imgUploadProgress(ImgUploadStatus *stat);
  152. private:
  153. QString tivaFlashUtilPath(void) const;
  154. void setTivaFlashUtilPath(const QString &val);
  155. QString itfName(void) const;
  156. void setItfName(const QString &val);
  157. bool slvIdIsNodeAddr(void) const;
  158. void setSlvIdIsNodeAddr(bool val);
  159. int verbosity(void) const;
  160. void setVerbosity(int val);
  161. QString imgFile(void) const;
  162. void setImgFile(const QString &val);
  163. bool executing(void) const;
  164. void setExecuting(bool val);
  165. int xBaudRate(void) const;
  166. void setXBaudRate(int val);
  167. int appAddress(void) const;
  168. void setAppAddress(int val);
  169. int blockSize(void) const;
  170. void setBlockSize(int val);
  171. int pageEraseTime(void) const;
  172. void setPageEraseTime(int val);
  173. int mbCtrlRegister(void) const;
  174. void setMbCtrlRegister(int val);
  175. bool forceAllParities(void) const;
  176. void setForceAllParities(bool val);
  177. ImgUploadStatus* imgUploadStatus(void);
  178. const QStringList& materialEeprom(void) const;
  179. void setMaterialEeprom(int nSlvID, const QString &val);
  180. const QStringList& serialEeprom(void) const;
  181. void setSerialEeprom(int nSlvID, const QString &val);
  182. const QList<int>& imgSizeBoot(void) const;
  183. void setImgSizeBoot(int nSlvID, int val);
  184. const QList<double>& imgCRC32Boot(void) const;
  185. void setImgCRC32Boot(int nSlvID, double val);
  186. const QStringList& imgMaterialBoot(void) const;
  187. void setImgMaterialBoot(int nSlvID, const QString &val);
  188. const QStringList& imgBuildBoot(void) const;
  189. void setImgBuildBoot(int nSlvID, const QString &val);
  190. const QList<int>& imgSizeApp(void) const;
  191. void setImgSizeApp(int nSlvID, int val);
  192. const QList<double>& imgCRC32App(void) const;
  193. void setImgCRC32App(int nSlvID, double val);
  194. const QStringList& imgMaterialApp(void) const;
  195. void setImgMaterialApp(int nSlvID, const QString &val);
  196. const QStringList& imgBuildApp(void) const;
  197. void setImgBuildApp(int nSlvID, const QString &val);
  198. int imgSizeFile(void) const;
  199. void setImgSizeFile(int val);
  200. double imgCRC32File(void) const;
  201. void setImgCRC32File(double val);
  202. const QString& imgMaterialFile(void) const;
  203. void setImgMaterialFile(const QString &val);
  204. const QString& imgBuildFile(void) const;
  205. void setImgBuildFile(const QString &val);
  206. private:
  207. void onCmdOutput(int nSlvID, const char *pszOut);
  208. void getSlavIDs(int nSlvID, int nMbID, QStringList &rargs) const;
  209. void getXBaud(QStringList &rargs) const;
  210. void getAppAddr(QStringList &rargs) const;
  211. void getBlockSize(QStringList &rargs) const;
  212. void getPageEraseTime(QStringList &rargs) const;
  213. void getForceAllParities(QStringList &rargs) const;
  214. int parseTaggedString(const char *pszIn, std::string &sOut) const;
  215. int parseTaggedValues(const char *pszIn, int &rnVal1, int &rnVal2) const;
  216. private slots:
  217. void onProcessStarted(void);
  218. void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
  219. void onProcessReadyReadStandardOutput(void);
  220. void onProcessStateChanged(QProcess::ProcessState newState);
  221. private:
  222. int m_nExitCode;
  223. std::string m_tivaFlashUtilPath;
  224. std::string m_itfName;
  225. bool m_slvIdIsNodeAddr;
  226. int m_verbosity;
  227. bool m_bExecuting;
  228. int m_xBaudRate;
  229. int m_curSlvID;
  230. int m_appAddress;
  231. int m_blockSize;
  232. int m_pageEraseTime;
  233. int m_mbCtrlRegister;
  234. bool m_forceAllParities;
  235. std::string m_imgFile;
  236. QStringList m_materialEeprom;
  237. QStringList m_serialEeprom;
  238. QList<int> m_imgSizeBoot;
  239. QList<double> m_imgCRC32Boot;
  240. QStringList m_imgMaterialBoot;
  241. QStringList m_imgBuildBoot;
  242. QList<int> m_imgSizeApp;
  243. QList<double> m_imgCRC32App;
  244. QStringList m_imgMaterialApp;
  245. QStringList m_imgBuildApp;
  246. int m_imgSizeFile;
  247. double m_imgCRC32File;
  248. QString m_imgMaterialFile;
  249. QString m_imgBuildFile;
  250. ImgUploadStatus m_imgUpldProg;
  251. QProcess m_qProcess;
  252. };
  253. /////////////////////////////////////////////////////////////////////////////
  254. #endif // __cplusplus
  255. #endif // !defined(AGD_GFATIVAFLASH_H__49F09E25_28B7_4178_B4B6_6DAFF98ABECD__INCLUDED_)