gfativaflash.cpp 26 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157
  1. #include <stdio.h>
  2. #include <stdarg.h>
  3. #include <string>
  4. #include <regex>
  5. #include "gfativaflash.h"
  6. #define _TEST_VERBOSITY(v, n) (((v) == -1) && ((n) <= 2)) || (((v) >= 0) && ((v) >= (n)))
  7. /////////////////////////////////////////////////////////////////////////////
  8. #if 0
  9. static std::string _formatString(const char *fmt, ...)
  10. {
  11. int n;
  12. std::string s;
  13. char *p = NULL;
  14. va_list ap;
  15. va_start(ap, fmt);
  16. n = ::vasprintf(&p, fmt, ap);
  17. va_end(ap);
  18. if(n >= 0)
  19. {
  20. s = p;
  21. free(p);
  22. }
  23. return s;
  24. }
  25. #endif
  26. /////////////////////////////////////////////////////////////////////////////
  27. TivaFlash::TivaFlash(QObject *pParent) : QObject(pParent),
  28. m_nExitCode(0),
  29. m_slvIdIsNodeAddr(false),
  30. m_verbosity(-1),
  31. m_bExecuting(false),
  32. m_xBaudRate(0),
  33. m_curSlvID(0),
  34. m_appAddress(0),
  35. m_blockSize(0),
  36. m_pageEraseTime(0),
  37. m_mbCtrlRegister(0),
  38. m_forceAllParities(false),
  39. m_imgSizeFile(0),
  40. m_imgCRC32File(0.0),
  41. m_imgUpldProg(this),
  42. m_qProcess(this)
  43. {
  44. setObjectName("TivaFlash");
  45. for(int i = 0; i < _MAX_SLAVE_COUNT; i++)
  46. {
  47. m_materialEeprom.append("");
  48. m_serialEeprom.append("");
  49. m_imgSizeBoot.append(0);
  50. m_imgCRC32Boot.append(0.0);
  51. m_imgMaterialBoot.append("");
  52. m_imgBuildBoot.append("");
  53. m_imgSizeApp.append(0);
  54. m_imgCRC32App.append(0.0);
  55. m_imgMaterialApp.append("");
  56. m_imgBuildApp.append("");
  57. }
  58. connect(&m_qProcess, SIGNAL(started()), SLOT(onProcessStarted()));
  59. connect(&m_qProcess, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(onProcessFinished(int, QProcess::ExitStatus)));
  60. connect(&m_qProcess, SIGNAL(readyReadStandardOutput()), SLOT(onProcessReadyReadStandardOutput()));
  61. connect(&m_qProcess, SIGNAL(stateChanged(QProcess::ProcessState)), SLOT(onProcessStateChanged(QProcess::ProcessState)));
  62. m_qProcess.setProcessChannelMode(QProcess::MergedChannels);
  63. }
  64. TivaFlash::~TivaFlash(void)
  65. {
  66. }
  67. /////////////////////////////////////////////////////////////////////////////
  68. void TivaFlash::onProcessStarted(void)
  69. {
  70. setExecuting(true);
  71. emit processStarted(m_curSlvID);
  72. }
  73. void TivaFlash::onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
  74. {
  75. setExecuting(false);
  76. emit processFinished(m_curSlvID, exitCode, exitStatus == QProcess::ExitStatus::NormalExit);
  77. }
  78. void TivaFlash::onProcessReadyReadStandardOutput(void)
  79. {
  80. char szLine[256];
  81. while(m_qProcess.readLine(szLine, sizeof(szLine)) > 0)
  82. {
  83. onCmdOutput(m_curSlvID, szLine);
  84. }
  85. }
  86. void TivaFlash::onProcessStateChanged(QProcess::ProcessState newState)
  87. {
  88. setExecuting(newState != QProcess::ProcessState::NotRunning);
  89. }
  90. /////////////////////////////////////////////////////////////////////////////
  91. #if 0
  92. bool TivaFlash::execFlashUtil(int nSlvID, const char *pszOpt)
  93. {
  94. FILE* pd;
  95. char buffer[256];
  96. m_nExitCode = -1;
  97. std::string strCmd = _formatString("\"%s\" %s --plugin-mode 2>&1", m_tivaFlashUtilPath.c_str(), pszOpt);
  98. if((pd = popen(strCmd.c_str(), "r")))
  99. {
  100. while(fgets(buffer, sizeof buffer, pd))
  101. {
  102. onCmdOutput(nSlvID, buffer);
  103. }
  104. pclose(pd);
  105. }
  106. return m_nExitCode == 0;
  107. }
  108. /////////////////////////////////////////////////////////////////////////////
  109. std::string TivaFlash::getSlavIDs(int nSlvID, int nMbID) const
  110. {
  111. std::string ret;
  112. if(m_slvIdIsNodeAddr)
  113. ret = _formatString("--node-addr=%d", nSlvID);
  114. else
  115. ret = _formatString("--stat-num=%d", nSlvID);
  116. if(_IS_VALID_MB_ID(nMbID))
  117. ret += _formatString(" --mb-slave-id=%d", nMbID);
  118. return ret;
  119. }
  120. #endif
  121. void TivaFlash::getSlavIDs(int nSlvID, int nMbID, QStringList &rargs) const
  122. {
  123. std::string ret;
  124. if(m_slvIdIsNodeAddr)
  125. rargs << QString::asprintf("--node-addr=%d", nSlvID);
  126. else
  127. rargs << QString::asprintf("--stat-num=%d", nSlvID);
  128. if(_IS_VALID_MB_ID(nMbID))
  129. {
  130. rargs << QString::asprintf("--mb-slave-id=%d", nMbID);
  131. if(m_mbCtrlRegister > 0)
  132. rargs << QString::asprintf("--mb-bl-ctrl-reg=%d", m_mbCtrlRegister);
  133. }
  134. }
  135. /////////////////////////////////////////////////////////////////////////////
  136. void TivaFlash::getXBaud(QStringList &rargs) const
  137. {
  138. if(m_xBaudRate > 0)
  139. {
  140. rargs << QString::asprintf("--x-baud-rate=%d", m_xBaudRate);
  141. }
  142. }
  143. /////////////////////////////////////////////////////////////////////////////
  144. void TivaFlash::getAppAddr(QStringList &rargs) const
  145. {
  146. if(m_appAddress > 0)
  147. {
  148. rargs << QString::asprintf("--app-addr=0x%X", m_appAddress);
  149. }
  150. }
  151. /////////////////////////////////////////////////////////////////////////////
  152. void TivaFlash::getBlockSize(QStringList &rargs) const
  153. {
  154. if(m_blockSize > 0)
  155. {
  156. rargs << QString::asprintf("--block-size=%d", m_blockSize);
  157. }
  158. }
  159. /////////////////////////////////////////////////////////////////////////////
  160. void TivaFlash::getPageEraseTime(QStringList &rargs) const
  161. {
  162. if(m_pageEraseTime > 0)
  163. {
  164. rargs << QString::asprintf("--page-erase-time=%d", m_pageEraseTime);
  165. }
  166. }
  167. /////////////////////////////////////////////////////////////////////////////
  168. void TivaFlash::getForceAllParities(QStringList &rargs) const
  169. {
  170. if(m_forceAllParities)
  171. {
  172. rargs << QString::asprintf("--force-all-par");
  173. }
  174. }
  175. /////////////////////////////////////////////////////////////////////////////
  176. int TivaFlash::parseTaggedString(const char *pszIn, std::string &sOut) const
  177. {
  178. static const std::string strRegEx = "<([0-9]+)>(.+)<\\/\\1>";
  179. static std::regex reg(strRegEx, std::regex_constants::ECMAScript | std::regex_constants::optimize);
  180. std::cmatch res;
  181. if(pszIn && *pszIn)
  182. {
  183. try
  184. {
  185. if(regex_search(pszIn, res, reg))
  186. {
  187. size_t nSize = res.size();
  188. if(nSize == 3)
  189. {
  190. std::string strTagName = res[1].str();
  191. sOut = res[2].str();
  192. return atoi(strTagName.c_str());
  193. }
  194. }
  195. }
  196. catch(...)
  197. {
  198. }
  199. }
  200. return -1;
  201. }
  202. /////////////////////////////////////////////////////////////////////////////
  203. int TivaFlash::parseTaggedValues(const char *pszIn, int &rnVal1, int &rnVal2) const
  204. {
  205. static const std::string strRegEx = "([0-9]+)\\|([0-9]+)";
  206. static std::regex reg(strRegEx, std::regex_constants::ECMAScript | std::regex_constants::optimize);
  207. std::cmatch res;
  208. if(pszIn && *pszIn)
  209. {
  210. try
  211. {
  212. if(regex_search(pszIn, res, reg))
  213. {
  214. size_t nSize = res.size();
  215. if(nSize == 3)
  216. {
  217. rnVal1 = atoi(res[1].str().c_str());
  218. rnVal2 = atoi(res[2].str().c_str());
  219. return nSize - 1;
  220. }
  221. }
  222. }
  223. catch(...)
  224. {
  225. }
  226. }
  227. return -1;
  228. }
  229. /////////////////////////////////////////////////////////////////////////////
  230. void TivaFlash::onCmdOutput(int nSlvID, const char *pszOut)
  231. {
  232. std::string s;
  233. int nTag = parseTaggedString(pszOut, s);
  234. int nVal1, nVal2;
  235. if(nTag >= 0)
  236. {
  237. QString qs = QString::fromStdString(s);
  238. switch(nTag)
  239. {
  240. /////////////////////////////////////////////////////////////////////
  241. case PLUGIN_TAG_EXIT_CODE:
  242. m_nExitCode = qs.toInt();
  243. break;
  244. /////////////////////////////////////////////////////////////////////
  245. case PLUGIN_TAG_STATUS:
  246. if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_STATUS))
  247. emit processOutput(nSlvID, nTag, qs);
  248. break;
  249. case PLUGIN_TAG_INFO:
  250. if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_INFO))
  251. emit processOutput(nSlvID, nTag, qs);
  252. break;
  253. case PLUGIN_TAG_ERROR:
  254. if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_ERROR))
  255. emit processOutput(nSlvID, nTag, qs);
  256. break;
  257. /////////////////////////////////////////////////////////////////////
  258. case PLUGIN_TAG_IMG_MATERIAL_EEPROM:
  259. setMaterialEeprom(nSlvID, qs);
  260. break;
  261. case PLUGIN_TAG_IMG_SERIAL_EEPROM:
  262. setSerialEeprom(nSlvID, qs);
  263. break;
  264. /////////////////////////////////////////////////////////////////////
  265. case PLUGIN_TAG_IMG_LENGTH_BOOT:
  266. setImgSizeBoot(nSlvID, qs.toUInt());
  267. break;
  268. case PLUGIN_TAG_IMG_CRC32_BOOT:
  269. setImgCRC32Boot(nSlvID, qs.toDouble());
  270. break;
  271. case PLUGIN_TAG_IMG_BUILD_BOOT:
  272. setImgBuildBoot(nSlvID, qs);
  273. break;
  274. case PLUGIN_TAG_IMG_MATERIAL_BOOT:
  275. setImgMaterialBoot(nSlvID, qs);
  276. break;
  277. /////////////////////////////////////////////////////////////////////
  278. case PLUGIN_TAG_IMG_LENGTH_APP:
  279. setImgSizeApp(nSlvID, qs.toUInt());
  280. break;
  281. case PLUGIN_TAG_IMG_CRC32_APP:
  282. setImgCRC32App(nSlvID, qs.toDouble());
  283. break;
  284. case PLUGIN_TAG_IMG_MATERIAL_APP:
  285. setImgBuildApp(nSlvID, qs);
  286. break;
  287. case PLUGIN_TAG_IMG_BUILD_APP:
  288. setImgMaterialApp(nSlvID, qs);
  289. break;
  290. /////////////////////////////////////////////////////////////////////
  291. case PLUGIN_TAG_IMG_LENGTH_FILE:
  292. setImgSizeFile(qs.toUInt());
  293. break;
  294. case PLUGIN_TAG_IMG_CRC32_FILE:
  295. setImgCRC32File(qs.toDouble());
  296. break;
  297. case PLUGIN_TAG_IMG_MATERIAL_FILE:
  298. setImgMaterialFile(qs);
  299. break;
  300. case PLUGIN_TAG_IMG_BUILD_FILE:
  301. setImgBuildFile(qs);
  302. break;
  303. /////////////////////////////////////////////////////////////////////
  304. case PLUGIN_TAG_UPLOAD_START_ERASE_FLASH:
  305. m_imgUpldProg.clear();
  306. m_imgUpldProg.setCtx(ImgUploadStatus::EraseFlashStart);
  307. if(parseTaggedValues(s.c_str(), nVal1, nVal2) == 2)
  308. {
  309. m_imgUpldProg.setCntFlashPages(nVal1);
  310. m_imgUpldProg.setCbTotal(nVal2);
  311. emit imgUploadProgress(&m_imgUpldProg);
  312. }
  313. break;
  314. case PLUGIN_TAG_UPLOAD_END_ERASE_FLASH:
  315. m_imgUpldProg.setCtx(ImgUploadStatus::EraseFlashEnd);
  316. emit imgUploadProgress(&m_imgUpldProg);
  317. break;
  318. case PLUGIN_TAG_UPLOAD_BLOCKS_START:
  319. m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadStart);
  320. m_imgUpldProg.setCbBlock(qs.toInt());
  321. emit imgUploadProgress(&m_imgUpldProg);
  322. break;
  323. case PLUGIN_TAG_UPLOAD_BLOCK:
  324. m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadBlock);
  325. if(parseTaggedValues(s.c_str(), nVal1, nVal2) == 2)
  326. {
  327. int nCbTotal = m_imgUpldProg.cbTotal();
  328. int nCbSent = nVal1;
  329. m_imgUpldProg.setCbSent(nCbSent);
  330. m_imgUpldProg.setPercentSent(nCbSent * 100 / nCbTotal);
  331. m_imgUpldProg.SetBlockNr(nVal2);
  332. emit imgUploadProgress(&m_imgUpldProg);
  333. }
  334. break;
  335. case PLUGIN_TAG_UPLOAD_BLOCKS_END:
  336. m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadSuccess);
  337. m_imgUpldProg.setErrorCode(0);
  338. emit imgUploadProgress(&m_imgUpldProg);
  339. break;
  340. case PLUGIN_TAG_UPLOAD_ERROR:
  341. m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadError);
  342. m_imgUpldProg.setErrorCode(qs.toInt());
  343. emit imgUploadProgress(&m_imgUpldProg);
  344. break;
  345. }
  346. }
  347. }
  348. /////////////////////////////////////////////////////////////////////////////
  349. /////////////////////////////////////////////////////////////////////////////
  350. /////////////////////////////////////////////////////////////////////////////
  351. bool TivaFlash::getMatSer(int nSlvID, int nMbID)
  352. {
  353. if(m_bExecuting)
  354. return false;
  355. if(!_IS_VALID_SLV_ID(nSlvID))
  356. return false;
  357. m_curSlvID = nSlvID;
  358. setMaterialEeprom(nSlvID, "");
  359. setSerialEeprom(nSlvID, "");
  360. QStringList args;
  361. args << "--show-mat-ser";
  362. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  363. getSlavIDs(nSlvID, nMbID, args);
  364. getForceAllParities(args);
  365. args << "--plugin-mode";
  366. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  367. return true;
  368. }
  369. bool TivaFlash::getTargetImgInfo(int nSlvID, int nMbID)
  370. {
  371. if(m_bExecuting)
  372. return false;
  373. if(!_IS_VALID_SLV_ID(nSlvID))
  374. return false;
  375. m_curSlvID = nSlvID;
  376. setImgSizeBoot(nSlvID, 0);
  377. setImgCRC32Boot(nSlvID, 0.0);
  378. setImgMaterialBoot(nSlvID, "");
  379. setImgBuildBoot(nSlvID, "");
  380. setImgSizeApp(nSlvID, 0);
  381. setImgCRC32App(nSlvID, 0.0);
  382. setImgMaterialApp(nSlvID, "");
  383. setImgBuildApp(nSlvID, "");
  384. QStringList args;
  385. args << "--show-dev-img-info";
  386. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  387. getSlavIDs(nSlvID, nMbID, args);
  388. getXBaud(args);
  389. getAppAddr(args);
  390. getForceAllParities(args);
  391. args << "--plugin-mode";
  392. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  393. return true;
  394. }
  395. bool TivaFlash::pingTarget(int nSlvID, int nMbID)
  396. {
  397. if(m_bExecuting)
  398. return false;
  399. if(!_IS_VALID_SLV_ID(nSlvID))
  400. return false;
  401. m_curSlvID = nSlvID;
  402. QStringList args;
  403. args << "--ping-target";
  404. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  405. getSlavIDs(nSlvID, nMbID, args);
  406. getForceAllParities(args);
  407. args << "--plugin-mode";
  408. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  409. return true;
  410. }
  411. bool TivaFlash::startBootloader(int nSlvID, int nMbID)
  412. {
  413. if(m_bExecuting)
  414. return false;
  415. if(!_IS_VALID_SLV_ID(nSlvID))
  416. return false;
  417. m_curSlvID = nSlvID;
  418. QStringList args;
  419. args << "--start-boot";
  420. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  421. getSlavIDs(nSlvID, nMbID, args);
  422. getForceAllParities(args);
  423. args << "--plugin-mode";
  424. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  425. return true;
  426. }
  427. bool TivaFlash::resetBootloader(int nSlvID, int nMbID)
  428. {
  429. if(m_bExecuting)
  430. return false;
  431. if(!_IS_VALID_SLV_ID(nSlvID))
  432. return false;
  433. m_curSlvID = nSlvID;
  434. QStringList args;
  435. args << "--reset-boot";
  436. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  437. getSlavIDs(nSlvID, nMbID, args);
  438. getForceAllParities(args);
  439. args << "--plugin-mode";
  440. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  441. return true;
  442. }
  443. bool TivaFlash::validateImgFile(int nSlvID, int nMbID)
  444. {
  445. if(m_bExecuting)
  446. return false;
  447. if(!_IS_VALID_SLV_ID(nSlvID))
  448. return false;
  449. m_curSlvID = nSlvID;
  450. QStringList args;
  451. args << "--validate-img";
  452. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  453. getSlavIDs(nSlvID, nMbID, args);
  454. getAppAddr(args);
  455. getForceAllParities(args);
  456. args << "--plugin-mode";
  457. args << QString::fromStdString(m_imgFile);
  458. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  459. return true;
  460. }
  461. bool TivaFlash::uploadImgFile(int nSlvID, int nMbID)
  462. {
  463. if(m_bExecuting)
  464. return false;
  465. if(!_IS_VALID_SLV_ID(nSlvID))
  466. return false;
  467. m_curSlvID = nSlvID;
  468. QStringList args;
  469. args << "--upload-img";
  470. args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
  471. getSlavIDs(nSlvID, nMbID, args);
  472. getXBaud(args);
  473. getAppAddr(args);
  474. getBlockSize(args);
  475. getPageEraseTime(args);
  476. getForceAllParities(args);
  477. args << "--plugin-mode";
  478. args << QString::fromStdString(m_imgFile);
  479. m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
  480. return true;
  481. }
  482. bool TivaFlash::clearImgInfo(int nSlvID)
  483. {
  484. if(m_bExecuting)
  485. return false;
  486. if(!_IS_VALID_SLV_ID(nSlvID))
  487. return false;
  488. setImgSizeFile(0);
  489. setImgCRC32File(0);
  490. setImgMaterialFile(0);
  491. setImgBuildFile(0);
  492. if(nSlvID > 0)
  493. {
  494. setMaterialEeprom(nSlvID, "");
  495. setSerialEeprom(nSlvID, "");
  496. setImgSizeBoot(nSlvID, 0);
  497. setImgCRC32Boot(nSlvID, 0);
  498. setImgMaterialBoot(nSlvID, "");
  499. setImgBuildBoot(nSlvID, "");
  500. setImgSizeApp(nSlvID, 0);
  501. setImgCRC32App(nSlvID, 0);
  502. setImgMaterialApp(nSlvID, "");
  503. setImgBuildApp(nSlvID, "");
  504. }
  505. else
  506. {
  507. for(int i = 0; i < _MAX_SLAVE_COUNT; ++i)
  508. {
  509. setMaterialEeprom(i, "");
  510. setSerialEeprom(i, "");
  511. setImgSizeBoot(i, 0);
  512. setImgCRC32Boot(i, 0);
  513. setImgMaterialBoot(i, "");
  514. setImgBuildBoot(i, "");
  515. setImgSizeApp(i, 0);
  516. setImgCRC32App(i, 0);
  517. setImgMaterialApp(i, "");
  518. setImgBuildApp(i, "");
  519. }
  520. }
  521. return true;
  522. }
  523. /////////////////////////////////////////////////////////////////////////////
  524. /////////////////////////////////////////////////////////////////////////////
  525. /////////////////////////////////////////////////////////////////////////////
  526. QString TivaFlash::tivaFlashUtilPath(void) const
  527. {
  528. return QString::fromStdString(m_tivaFlashUtilPath);
  529. }
  530. void TivaFlash::setTivaFlashUtilPath(const QString &val)
  531. {
  532. m_tivaFlashUtilPath = val.toStdString();
  533. }
  534. /////////////////////////////////////////////////////////////////////////////
  535. QString TivaFlash::itfName(void) const
  536. {
  537. return QString::fromStdString(m_itfName);
  538. }
  539. void TivaFlash::setItfName(const QString &val)
  540. {
  541. m_itfName = val.toStdString();
  542. }
  543. /////////////////////////////////////////////////////////////////////////////
  544. bool TivaFlash::slvIdIsNodeAddr(void) const
  545. {
  546. return m_slvIdIsNodeAddr;
  547. }
  548. void TivaFlash::setSlvIdIsNodeAddr(bool val)
  549. {
  550. if(m_slvIdIsNodeAddr != val)
  551. {
  552. m_slvIdIsNodeAddr = val;
  553. }
  554. }
  555. /////////////////////////////////////////////////////////////////////////////
  556. int TivaFlash::verbosity(void) const
  557. {
  558. return m_verbosity;
  559. }
  560. void TivaFlash::setVerbosity(int val)
  561. {
  562. if(val < 0)
  563. val = 0;
  564. else if(val > 3)
  565. val = 3;
  566. if(m_verbosity != val)
  567. {
  568. m_verbosity = val;
  569. }
  570. }
  571. /////////////////////////////////////////////////////////////////////////////
  572. QString TivaFlash::imgFile(void) const
  573. {
  574. return QString::fromStdString(m_imgFile);
  575. }
  576. void TivaFlash::setImgFile(const QString &val)
  577. {
  578. m_imgFile = val.toStdString();
  579. }
  580. /////////////////////////////////////////////////////////////////////////////
  581. bool TivaFlash::executing(void) const
  582. {
  583. return m_bExecuting;
  584. }
  585. void TivaFlash::setExecuting(bool val)
  586. {
  587. if(m_bExecuting != val)
  588. {
  589. m_bExecuting = val;
  590. emit executingChanged(m_bExecuting);
  591. }
  592. }
  593. /////////////////////////////////////////////////////////////////////////////
  594. int TivaFlash::xBaudRate(void) const
  595. {
  596. return m_xBaudRate;
  597. }
  598. void TivaFlash::setXBaudRate(int val)
  599. {
  600. if(m_xBaudRate != val)
  601. {
  602. m_xBaudRate = val;
  603. }
  604. }
  605. /////////////////////////////////////////////////////////////////////////////
  606. int TivaFlash::appAddress(void) const
  607. {
  608. return m_appAddress;
  609. }
  610. void TivaFlash::setAppAddress(int val)
  611. {
  612. if(m_appAddress != val)
  613. {
  614. m_appAddress = val;
  615. }
  616. }
  617. /////////////////////////////////////////////////////////////////////////////
  618. int TivaFlash::blockSize(void) const
  619. {
  620. return m_blockSize;
  621. }
  622. void TivaFlash::setBlockSize(int val)
  623. {
  624. if(m_blockSize != val)
  625. {
  626. m_blockSize = val;
  627. }
  628. }
  629. /////////////////////////////////////////////////////////////////////////////
  630. int TivaFlash::pageEraseTime(void) const
  631. {
  632. return m_pageEraseTime;
  633. }
  634. void TivaFlash::setPageEraseTime(int val)
  635. {
  636. if(m_pageEraseTime != val)
  637. {
  638. m_pageEraseTime = val;
  639. }
  640. }
  641. /////////////////////////////////////////////////////////////////////////////
  642. int TivaFlash::mbCtrlRegister(void) const
  643. {
  644. return m_mbCtrlRegister;
  645. }
  646. void TivaFlash::setMbCtrlRegister(int val)
  647. {
  648. if(m_mbCtrlRegister != val)
  649. {
  650. m_mbCtrlRegister = val;
  651. }
  652. }
  653. /////////////////////////////////////////////////////////////////////////////
  654. bool TivaFlash::forceAllParities(void) const
  655. {
  656. return m_forceAllParities;
  657. }
  658. void TivaFlash::setForceAllParities(bool val)
  659. {
  660. if(m_forceAllParities != val)
  661. {
  662. m_forceAllParities = val;
  663. }
  664. }
  665. /////////////////////////////////////////////////////////////////////////////
  666. /////////////////////////////////////////////////////////////////////////////
  667. /////////////////////////////////////////////////////////////////////////////
  668. const QStringList& TivaFlash::materialEeprom(void) const
  669. {
  670. return m_materialEeprom;
  671. }
  672. void TivaFlash::setMaterialEeprom(int nSlvID, const QString &val)
  673. {
  674. if(m_materialEeprom[nSlvID] != val)
  675. {
  676. m_materialEeprom[nSlvID] = val;
  677. emit materialEepromChanged();
  678. }
  679. }
  680. /////////////////////////////////////////////////////////////////////////////
  681. const QStringList& TivaFlash::serialEeprom(void) const
  682. {
  683. return m_serialEeprom;
  684. }
  685. void TivaFlash::setSerialEeprom(int nSlvID, const QString &val)
  686. {
  687. if(m_serialEeprom[nSlvID] != val)
  688. {
  689. m_serialEeprom[nSlvID] = val;
  690. emit serialEepromChanged();
  691. }
  692. }
  693. /////////////////////////////////////////////////////////////////////////////
  694. /////////////////////////////////////////////////////////////////////////////
  695. /////////////////////////////////////////////////////////////////////////////
  696. const QList<int>& TivaFlash::imgSizeBoot(void) const
  697. {
  698. return m_imgSizeBoot;
  699. }
  700. void TivaFlash::setImgSizeBoot(int nSlvID, int val)
  701. {
  702. if(m_imgSizeBoot[nSlvID] != val)
  703. {
  704. m_imgSizeBoot[nSlvID] = val;
  705. emit imgSizeBootChanged();
  706. }
  707. }
  708. /////////////////////////////////////////////////////////////////////////////
  709. const QList<double>& TivaFlash::imgCRC32Boot(void) const
  710. {
  711. return m_imgCRC32Boot;
  712. }
  713. void TivaFlash::setImgCRC32Boot(int nSlvID, double val)
  714. {
  715. if(m_imgCRC32Boot[nSlvID] != val)
  716. {
  717. m_imgCRC32Boot[nSlvID] = val;
  718. emit imgCRC32BootChanged();
  719. }
  720. }
  721. /////////////////////////////////////////////////////////////////////////////
  722. const QStringList& TivaFlash::imgMaterialBoot(void) const
  723. {
  724. return m_imgMaterialBoot;
  725. }
  726. void TivaFlash::setImgMaterialBoot(int nSlvID, const QString &val)
  727. {
  728. if(m_imgMaterialBoot[nSlvID] != val)
  729. {
  730. m_imgMaterialBoot[nSlvID] = val;
  731. emit imgMaterialBootChanged();
  732. }
  733. }
  734. /////////////////////////////////////////////////////////////////////////////
  735. const QStringList& TivaFlash::imgBuildBoot(void) const
  736. {
  737. return m_imgBuildBoot;
  738. }
  739. void TivaFlash::setImgBuildBoot(int nSlvID, const QString &val)
  740. {
  741. if(m_imgBuildBoot[nSlvID] != val)
  742. {
  743. m_imgBuildBoot[nSlvID] = val;
  744. emit imgBuildBootChanged();
  745. }
  746. }
  747. /////////////////////////////////////////////////////////////////////////////
  748. /////////////////////////////////////////////////////////////////////////////
  749. /////////////////////////////////////////////////////////////////////////////
  750. const QList<int>& TivaFlash::imgSizeApp(void) const
  751. {
  752. return m_imgSizeApp;
  753. }
  754. void TivaFlash::setImgSizeApp(int nSlvID, int val)
  755. {
  756. if(m_imgSizeApp[nSlvID] != val)
  757. {
  758. m_imgSizeApp[nSlvID] = val;
  759. emit imgSizeAppChanged();
  760. }
  761. }
  762. /////////////////////////////////////////////////////////////////////////////
  763. const QList<double>& TivaFlash::imgCRC32App(void) const
  764. {
  765. return m_imgCRC32App;
  766. }
  767. void TivaFlash::setImgCRC32App(int nSlvID, double val)
  768. {
  769. if(m_imgCRC32App[nSlvID] != val)
  770. {
  771. m_imgCRC32App[nSlvID] = val;
  772. emit imgCRC32AppChanged();
  773. }
  774. }
  775. /////////////////////////////////////////////////////////////////////////////
  776. const QStringList& TivaFlash::imgMaterialApp(void) const
  777. {
  778. return m_imgMaterialApp;
  779. }
  780. void TivaFlash::setImgMaterialApp(int nSlvID, const QString &val)
  781. {
  782. if(m_imgMaterialApp[nSlvID] != val)
  783. {
  784. m_imgMaterialApp[nSlvID] = val;
  785. emit imgMaterialAppChanged();
  786. }
  787. }
  788. /////////////////////////////////////////////////////////////////////////////
  789. const QStringList& TivaFlash::imgBuildApp(void) const
  790. {
  791. return m_imgBuildApp;
  792. }
  793. void TivaFlash::setImgBuildApp(int nSlvID, const QString &val)
  794. {
  795. if(m_imgBuildApp[nSlvID] != val)
  796. {
  797. m_imgBuildApp[nSlvID] = val;
  798. emit imgBuildAppChanged();
  799. }
  800. }
  801. /////////////////////////////////////////////////////////////////////////////
  802. /////////////////////////////////////////////////////////////////////////////
  803. /////////////////////////////////////////////////////////////////////////////
  804. int TivaFlash::imgSizeFile(void) const
  805. {
  806. return m_imgSizeFile;
  807. }
  808. void TivaFlash::setImgSizeFile(int val)
  809. {
  810. if(m_imgSizeFile != val)
  811. {
  812. m_imgSizeFile = val;
  813. emit imgSizeFileChanged(m_imgSizeFile);
  814. }
  815. }
  816. /////////////////////////////////////////////////////////////////////////////
  817. double TivaFlash::imgCRC32File(void) const
  818. {
  819. return m_imgCRC32File;
  820. }
  821. void TivaFlash::setImgCRC32File(double val)
  822. {
  823. if(m_imgCRC32File != val)
  824. {
  825. m_imgCRC32File = val;
  826. emit imgCRC32FileChanged(m_imgCRC32File);
  827. }
  828. }
  829. /////////////////////////////////////////////////////////////////////////////
  830. const QString& TivaFlash::imgMaterialFile(void) const
  831. {
  832. return m_imgMaterialFile;
  833. }
  834. void TivaFlash::setImgMaterialFile(const QString &val)
  835. {
  836. if(m_imgMaterialFile != val)
  837. {
  838. m_imgMaterialFile = val;
  839. emit materialFileChanged(m_imgMaterialFile);
  840. }
  841. }
  842. /////////////////////////////////////////////////////////////////////////////
  843. const QString& TivaFlash::imgBuildFile(void) const
  844. {
  845. return m_imgBuildFile;
  846. }
  847. void TivaFlash::setImgBuildFile(const QString &val)
  848. {
  849. if(m_imgBuildFile != val)
  850. {
  851. m_imgBuildFile = val;
  852. emit imgBuildFileChanged(m_imgBuildFile);
  853. }
  854. }
  855. /////////////////////////////////////////////////////////////////////////////
  856. /////////////////////////////////////////////////////////////////////////////
  857. /////////////////////////////////////////////////////////////////////////////
  858. ImgUploadStatus::ImgUploadStatus(QObject *pParent) : QObject(pParent)
  859. {
  860. setObjectName("ImgUploadStatus");
  861. clear();
  862. }
  863. ImgUploadStatus::~ImgUploadStatus(void)
  864. {
  865. }
  866. /////////////////////////////////////////////////////////////////////////////
  867. void ImgUploadStatus::clear(void)
  868. {
  869. m_nCtx = 0;
  870. m_nErrorCode = 0;
  871. m_nCbBlock = 0;
  872. m_nBlockNr = 0;
  873. m_nCbTotal = 0;
  874. m_nCbSent = 0;
  875. m_nPercentSent = 0;
  876. m_nCntFlashPages = 0;
  877. }
  878. /////////////////////////////////////////////////////////////////////////////
  879. int ImgUploadStatus::ctx(void) const
  880. {
  881. return m_nCtx;
  882. }
  883. void ImgUploadStatus::setCtx(int val)
  884. {
  885. if(m_nCtx != val)
  886. m_nCtx = val;
  887. }
  888. /////////////////////////////////////////////////////////////////////////////
  889. int ImgUploadStatus::errorCode(void) const
  890. {
  891. return m_nErrorCode;
  892. }
  893. void ImgUploadStatus::setErrorCode(int val)
  894. {
  895. if(m_nErrorCode != val)
  896. m_nErrorCode = val;
  897. }
  898. /////////////////////////////////////////////////////////////////////////////
  899. int ImgUploadStatus::cbBlock(void) const
  900. {
  901. return m_nCbBlock;
  902. }
  903. void ImgUploadStatus::setCbBlock(int val)
  904. {
  905. if(m_nCbBlock != val)
  906. m_nCbBlock = val;
  907. }
  908. /////////////////////////////////////////////////////////////////////////////
  909. int ImgUploadStatus::blockNr(void) const
  910. {
  911. return m_nBlockNr;
  912. }
  913. void ImgUploadStatus::SetBlockNr(int val)
  914. {
  915. if(m_nBlockNr != val)
  916. m_nBlockNr = val;
  917. }
  918. /////////////////////////////////////////////////////////////////////////////
  919. int ImgUploadStatus::cbTotal(void) const
  920. {
  921. return m_nCbTotal;
  922. }
  923. void ImgUploadStatus::setCbTotal(int val)
  924. {
  925. if(m_nCbTotal != val)
  926. m_nCbTotal = val;
  927. }
  928. /////////////////////////////////////////////////////////////////////////////
  929. int ImgUploadStatus::cbSent(void) const
  930. {
  931. return m_nCbSent;
  932. }
  933. void ImgUploadStatus::setCbSent(int val)
  934. {
  935. if(m_nCbSent != val)
  936. m_nCbSent = val;
  937. }
  938. /////////////////////////////////////////////////////////////////////////////
  939. int ImgUploadStatus::percentSent(void) const
  940. {
  941. return m_nPercentSent;
  942. }
  943. void ImgUploadStatus::setPercentSent(int val)
  944. {
  945. if(m_nPercentSent != val)
  946. m_nPercentSent = val;
  947. }
  948. /////////////////////////////////////////////////////////////////////////////
  949. int ImgUploadStatus::cntFlashPages(void) const
  950. {
  951. return m_nCntFlashPages;
  952. }
  953. void ImgUploadStatus::setCntFlashPages(int val)
  954. {
  955. if(m_nCntFlashPages != val)
  956. m_nCntFlashPages = val;
  957. }