gfativaflash.h 9.3 KB

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