Browse Source

Erste Plugin-Version mit File-Upload. Verwendet nun QProcess.

Rind 5 years ago
parent
commit
9da1c00fe5

+ 20 - 0
main.c

@@ -487,6 +487,7 @@ static int _UploadImg(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla, GFA_BLM
 		if(ctx == GfaBlmCtx_App)
 		{
 			TRACE3("Starting bootloader.\n");
+			TTRACE3("Starting bootloader");
 
 			if((nRet = GfaBlmBootloaderExecute(hBlm, pcla->nNodeAddr, NULL, 1000)) != 0)
 			{
@@ -499,6 +500,7 @@ static int _UploadImg(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla, GFA_BLM
         if(pcla->nExBaudrate != pcla->nBootBaudrate)
         {
 			TRACE3("Setting baud-rate to %u.\n", pcla->nExBaudrate);
+			TTRACE3("Setting baud-rate to %u", pcla->nExBaudrate);
 
 			if((nRet = GfaBlmBootloaderSetBaudrate(hBlm, pcla->nNodeAddr, pcla->nExBaudrate)) != 0)
 			{
@@ -519,6 +521,7 @@ static int _UploadImg(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla, GFA_BLM
 		        if(pcla->nExBaudrate != pcla->nBootBaudrate)
 		        {
 					TRACE3("Trying to reset baud-rate to %u.\n", pcla->nBootBaudrate);
+					TTRACE3("Trying to reset baud-rate to %u", pcla->nBootBaudrate);
 
 					if((nRet = GfaBlmBootloaderSetBaudrate(hBlm, pcla->nNodeAddr, pcla->nBootBaudrate)) != 0)
 					{
@@ -535,6 +538,7 @@ static int _UploadImg(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla, GFA_BLM
 	        if(pcla->nExBaudrate != pcla->nBootBaudrate)
 	        {
 				TRACE3("Trying to reset baud-rate to %u.\n", pcla->nBootBaudrate);
+				TTRACE3("Trying to reset baud-rate to %u", pcla->nBootBaudrate);
 
 				if((nRet = GfaBlmBootloaderSetBaudrate(hBlm, pcla->nNodeAddr, pcla->nBootBaudrate)) != 0)
 				{
@@ -547,6 +551,7 @@ static int _UploadImg(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla, GFA_BLM
         }
 
 		TRACE3("Starting application.\n");
+		TTRACE3("Starting application");
 
         if((nRet = GfaBlmBUCmdReset(hBlm, pcla->nNodeAddr, pcla->nInitBaudrate)) != 0)
         {
@@ -608,7 +613,10 @@ static int _ReviveBootloader(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS pcla,
 	memset(data, 0, sizeof(data));
 
 	if(!bImplicitCall)
+	{
 		TRACE2("Reviving bootloader.\n");
+		TTRACE2("Reviving bootloader");
+	}
 
 	while(!g_bSig)
     {
@@ -666,6 +674,7 @@ static int _ModbusStartBootloader(HIMGFILE hIf, HGFABLM hBlm, LPCCMD_LINE_ARGS p
 	UNUSED(ctx);
 
 	TRACE3("Starting bootloader.\n");
+	TTRACE3("Starting bootloader");
 
 	if(hMst)
 	{
@@ -896,22 +905,30 @@ static void _OnUploadProgress(const char *pszFile, int nLine, LPGFA_BLM_DL_PROGR
 			UNUSED(nLine);
 			TRACE1("Error: %s!\n", GfaBlmStrError(pdlpp->nErrorCode));
 			TTRACE1(GfaBlmStrError(pdlpp->nErrorCode));
+			TTRACE(PLUGIN_TAG_UPLOAD_ERROR, "%d", pdlpp->nErrorCode);
 #endif	//	_DEBUG
 			break;
 		case GBDPS_StartEraseFlash:
 			TRACE2("Start download of %u bytes to node 0x%02hhX @ address 0x%X.\n", pdlpp->nCbTotal, pdlpp->nNodeAddr, pdlpp->nFlashStartAddr);
 			TRACE2("Erasing %u flash pages.\n", pdlpp->nCntFlashPages);
+			TTRACE2("Start download of %u bytes to node 0x%02hhX @ address 0x%X", pdlpp->nCbTotal, pdlpp->nNodeAddr, pdlpp->nFlashStartAddr);
+			TTRACE2("Erasing %u flash pages", pdlpp->nCntFlashPages);
+			TTRACE(PLUGIN_TAG_UPLOAD_START_ERASE_FLASH, "%u|%u", pdlpp->nCntFlashPages, pdlpp->nCbTotal);
 			GfaTfuGetClock(&tsStart);
 			break;
 		case GBDPS_EndEraseFlash:
 			GfaTfuGetClock(&tsEnd);
 			nInterval = GfaTfuClockDiff(&tsEnd, &tsStart);
 			TRACE2("Erased %u flash pages in %lld ms (%.1f ms/page).\n", pdlpp->nCntFlashPages, nInterval / 1000000, ((double)nInterval / 1000000.0) / (double)pdlpp->nCntFlashPages);
+			TTRACE2("Erased %u flash pages in %lld ms (%.1f ms/page)", pdlpp->nCntFlashPages, nInterval / 1000000, ((double)nInterval / 1000000.0) / (double)pdlpp->nCntFlashPages);
+			TTRACE(PLUGIN_TAG_UPLOAD_END_ERASE_FLASH, "%u|%u", pdlpp->nCntFlashPages, pdlpp->nCbTotal);
 			break;
 		case GBDPS_StartUploadBlocks:
 			nBlockNr = 0;
 			nOldPerc = -1;
 			TRACE2("Start sending data to node 0x%02hhX - block size: %u bytes.\n", pdlpp->nNodeAddr, pdlpp->nCbBlock);
+			TTRACE2("Start sending data to node 0x%02hhX - block size: %u bytes", pdlpp->nNodeAddr, pdlpp->nCbBlock);
+			TTRACE(PLUGIN_TAG_UPLOAD_BLOCKS_START, "%u", pdlpp->nCbBlock);
 			GfaTfuGetClock(&tsStart);
 			break;
 		case GBDPS_UploadBlock:
@@ -926,6 +943,7 @@ static void _OnUploadProgress(const char *pszFile, int nLine, LPGFA_BLM_DL_PROGR
 				}
 			}
 			++nBlockNr;
+			TTRACE(PLUGIN_TAG_UPLOAD_BLOCK, "%u|%u", pdlpp->nCbSent, nBlockNr);
 			break;
 		case GBDPS_EndUploadBlocks:
 			GfaTfuGetClock(&tsEnd);
@@ -933,6 +951,8 @@ static void _OnUploadProgress(const char *pszFile, int nLine, LPGFA_BLM_DL_PROGR
 			if(!pcla || !pcla->bNoProgressBlock)
 				TRACE2(" - Done.\n");
 			TRACE2("Sent %u blocks to node 0x%02hhX in %llu ms (%.1f Kb/s).\n", nBlockNr, pdlpp->nNodeAddr, nInterval / 1000000, (double)pdlpp->nCbTotal / ((double)nInterval / 1000000000.0) / 1024.0);
+			TTRACE2("Sent %u blocks to node 0x%02hhX in %llu ms (%.1f Kb/s)", nBlockNr, pdlpp->nNodeAddr, nInterval / 1000000, (double)pdlpp->nCbTotal / ((double)nInterval / 1000000000.0) / 1024.0);
+			TTRACE(PLUGIN_TAG_UPLOAD_BLOCKS_END, "%u", nBlockNr);
 			break;
 		}
 	}

+ 11 - 0
qmlplugin/.gitignore

@@ -0,0 +1,11 @@
+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~
+
+build*/
+Debug/
+Profile/
+Release/

+ 301 - 72
qmlplugin/Demo/main.qml

@@ -39,9 +39,9 @@ Window {
 
     Rectangle
     {
-        x: 100
+        x: 5
         y: 75
-        width: 100
+        width: 50
         height: 40
         color: "darkred"
 
@@ -52,149 +52,378 @@ Window {
         }
     }
 
+    Rectangle
+    {
+        x: 60
+        y: 75
+        width: 120
+        height: 20
+        color: "darkred"
+
+	    Text {
+	        id: materialEepromText
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.materialEeprom[statNr]
+	    }
+	}
+
+    Rectangle
+    {
+        x: 60
+        y: 95
+        width: 120
+        height: 20
+        color: "darkred"
+
+	    Text {
+	        id: serialEepromText
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.serialEeprom[statNr]
+	    }
+	}
+
+    Rectangle
+    {
+        x: 185
+        y: 75
+        width: 40
+        height: 40
+        color: "darkblue"
+
+	    Text {
+	        id: idUploadPercent
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: ""
+	    }
+	}
+
+    Rectangle
+    {
+        x: 230
+        y: 75
+        width: 120
+        height: 20
+        color: "darkblue"
+
+	    Text {
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.imgSizeApp[statNr]
+	    }
+	}
+
+    Rectangle
+    {
+        x: 230
+        y: 95
+        width: 120
+        height: 20
+        color: "darkblue"
+
+	    Text {
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.imgCRC32App[statNr].toString(16)
+	    }
+	}
+
+    Rectangle
+    {
+        x: 355
+        y: 75
+        width: 120
+        height: 20
+        color: "darkblue"
+
+	    Text {
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.imgMaterialApp[statNr]
+	    }
+	}
+
+    Rectangle
+    {
+        x: 355
+        y: 95
+        width: 120
+        height: 20
+        color: "darkblue"
+
+	    Text {
+            anchors.centerIn: parent
+	        color: "white"
+	        font.pixelSize: 14
+	        text: idTivaFlash.imgBuildApp[statNr]
+	    }
+	}
+
     Rectangle
     {
         x: 500
         y: 75
         width: 200
         height: 40
-        color: "green"
+        color: idTivaFlash.executing ? "red" : "green"
 
         Text {
-            text: "getMatSer"
+            text: "uploadImgFile"
             anchors.centerIn: parent
             color: "white"
         }
         MouseArea
         {
             anchors.fill: parent
-            onClicked: idTivaFlash.getMatSer(statNr)
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+                idTivaFlash.uploadImgFile(statNr, mbAddr);
+            }
         }
     }
 
-    Text {
-        id: materialEepromText
+    Rectangle
+    {
         x: 500
         y: 125
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.materialEeprom[statNr]
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "startBootloader"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.startBootloader(statNr);
+			}
+        }
     }
 
-    Text {
-        id: serialEepromText
+    Rectangle
+    {
         x: 500
-        y: 145
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.serialEeprom[statNr]
+        y: 175
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "resetBootloader"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.resetBootloader(statNr);
+			}
+        }
     }
 
     Rectangle
     {
         x: 500
-        y: 200
+        y: 225
         width: 200
         height: 40
-        color: "green"
+        color: idTivaFlash.executing ? "red" : "green"
 
         Text {
-            text: "getTargetImgInfo"
+            text: "pingTarget"
             anchors.centerIn: parent
             color: "white"
         }
         MouseArea
         {
             anchors.fill: parent
-            onClicked: idTivaFlash.getTargetImgInfo(statNr)
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.pingTarget(statNr);
+			}
         }
     }
 
-    Text {
-        id: imgSizeAppText
+    Rectangle
+    {
         x: 500
-        y: 250
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.imgSizeApp[statNr]
+        y: 275
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "getTargetImgInfo"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.getTargetImgInfo(statNr);
+			}
+        }
     }
 
-    Text {
-        id: imgCRC32AppText
+    Rectangle
+    {
         x: 500
-        y: 270
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.imgCRC32App[statNr].toString(16)
+        y: 325
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "validateImgFile"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.validateImgFile(statNr);
+			}
+        }
     }
 
-    Text {
-        id: imgMaterialAppText
+    Rectangle
+    {
         x: 500
-        y: 290
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.imgMaterialApp[statNr]
+        y: 375
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "getMatSer"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+	            idTivaFlash.getMatSer(statNr);
+			}
+        }
     }
 
-    Text {
-        id: imgBuildAppText
+    Rectangle
+    {
         x: 500
-        y: 310
-        color: "white"
-        font.pixelSize: 14
-        text: idTivaFlash.imgBuildApp[statNr]
+        y: 425
+        width: 200
+        height: 40
+        color: idTivaFlash.executing ? "red" : "green"
+
+        Text {
+            text: "clearImgInfo"
+            anchors.centerIn: parent
+            color: "white"
+        }
+        MouseArea
+        {
+            anchors.fill: parent
+            enabled: !idTivaFlash.executing
+            onClicked:
+            {
+                idExecOut.text = "";
+        		idUploadPercent.text = "";
+	            idTivaFlash.clearImgInfo(statNr);
+			}
+        }
     }
 
     Text {
          id: idExecOut
          x: 5
-         y: 200
-         width: 630
+         y: 150
+         width: 495
          height: 300
          color: "white"
          font.pixelSize: 14
-         text: "Test"
      }
 
     TivaFlash {
         id: idTivaFlash
         tivaFlashUtilPath: "/opt/GfA/tivaflashutil/gfativaflashutil"
         itfName: "/dev/ttyO4"
+        xBaudRate: 115200
         slvIdIsNodeAddr: false
         imgFile: "/opt/GfA/tivaflashutil/OLS-1V1_0009_crc.bin"
-        verbosity: 3
-
-        onMaterialFileChanged:
+        verbosity: 2
+        
+        onProcessStarted:	// arguments: slv (number, Slave ID)
         {
-//            materialEepromText.text = materialEeprom[1];
+            console.info("Process started");
+        }
+        
+        onProcessFinished:	// arguments: slv (number, Slave ID), exitcode (number Exit code), normalExit (bool, Normal exit or crash)
+        {
+            console.info("Process finished - exitcode: " + (normalExit ? exitcode : "crashed!"));
         }
 
-        onExecOut:
+        onProcessOutput:	// arguments: slv (number, Slave ID), ctx (number, 1=error, 2=info, 3=status), msg (string, Message)
         {
             idExecOut.text += msg + "\n";
-            idExecOut.update();
-            console.log(msg);
         }
-	}
 
-    MouseArea {
-        x: 0
-        y: 0
-        width: 400
-        height: 480
-//        anchors.fill: parent
-        onClicked:
+        onImgUploadProgress:	// arguments: stat (object ImgUploadStatus)
         {
-//        	var statNr = 1;
-//        	var mbAddr = 100;
-            var ret = false;
-            idExecOut.text = "";
-            ret = idTivaFlash.pingTarget(statNr);
-//            ret = idTivaFlash.startBootloader(statNr, mbAddr);
-//            ret = idTivaFlash.resetBootloader(statNr, mbAddr);
-//            ret = idTivaFlash.validateImgFile(statNr, mbAddr);
-            ret = false;
+        	switch(stat.ctx)
+        	{
+        	case ImgUploadStatus.EraseFlashStart:
+        		idUploadPercent.text = "";
+        		break;
+            case ImgUploadStatus.EraseFlashEnd:
+                break;
+            case ImgUploadStatus.ImgUploadStart:
+        		idUploadPercent.text = "0";
+                break;
+            case ImgUploadStatus.ImgUploadBlock:
+                idUploadPercent.text = stat.percentSent;
+                break;
+            case ImgUploadStatus.ImgUploadSuccess:
+        		idUploadPercent.text = "Ok";
+                break;
+            case ImgUploadStatus.ImgUploadError:
+        		idUploadPercent.text = "Err";
+                break;
+            }
         }
-    }
+	}
 }

+ 0 - 13
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/.qmake.stash

@@ -1,13 +0,0 @@
-QMAKE_DEFAULT_INCDIRS = \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/include/c++/4.9.3 \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/include/c++/4.9.3/arm-buildroot-linux-gnueabihf \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/include/c++/4.9.3/backward \
-    /opt/GfA/TC_L44104_C493_QT57/usr/lib/gcc/arm-buildroot-linux-gnueabihf/4.9.3/include \
-    /opt/GfA/TC_L44104_C493_QT57/usr/lib/gcc/arm-buildroot-linux-gnueabihf/4.9.3/include-fixed \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/include \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include
-QMAKE_DEFAULT_LIBDIRS = \
-    /opt/GfA/TC_L44104_C493_QT57/usr/lib/gcc/arm-buildroot-linux-gnueabihf/4.9.3 \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/lib \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/lib \
-    /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib

BIN
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/Demo


+ 0 - 581
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/Makefile

@@ -1,581 +0,0 @@
-#############################################################################
-# Makefile for building: Demo
-# Generated by qmake (3.0) (Qt 5.7.0)
-# Project:  ../Demo/Demo.pro
-# Template: app
-# Command: /opt/GfA/TC_L44104_C493_QT57/usr/bin/qmake -spec devices/linux-buildroot-g++ CONFIG+=debug CONFIG+=qml_debug -o Makefile ../Demo/Demo.pro
-#############################################################################
-
-MAKEFILE      = Makefile
-
-####### Compiler, tools and options
-
-CC            = /opt/GfA/TC_L44104_C493_QT57/usr/bin/arm-buildroot-linux-gnueabihf-gcc
-CXX           = /opt/GfA/TC_L44104_C493_QT57/usr/bin/arm-buildroot-linux-gnueabihf-g++
-DEFINES       = -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB
-CFLAGS        = -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os --sysroot=/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot -g -Wall -W -D_REENTRANT -fPIC $(DEFINES)
-CXXFLAGS      = -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os --sysroot=/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot -g -std=gnu++11 -Wall -W -D_REENTRANT -fPIC $(DEFINES)
-INCPATH       = -I../Demo -I. -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5 -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtQuick -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtGui -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtQml -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtNetwork -isystem /opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/include/qt5/QtCore -I. -I/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/linux-buildroot-g++
-QMAKE         = /opt/GfA/TC_L44104_C493_QT57/usr/bin/qmake
-DEL_FILE      = rm -f
-CHK_DIR_EXISTS= test -d
-MKDIR         = mkdir -p
-COPY          = cp -f
-COPY_FILE     = cp -f
-COPY_DIR      = cp -f -R
-INSTALL_FILE  = install -m 644 -p
-INSTALL_PROGRAM = install -m 755 -p
-INSTALL_DIR   = cp -f -R
-DEL_FILE      = rm -f
-SYMLINK       = ln -f -s
-DEL_DIR       = rmdir
-MOVE          = mv -f
-TAR           = tar -cf
-COMPRESS      = gzip -9f
-DISTNAME      = Demo1.0.0
-DISTDIR = /home/fjd/Sandbox/gfativaflashutil/qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/.tmp/Demo1.0.0
-LINK          = /opt/GfA/TC_L44104_C493_QT57/usr/bin/arm-buildroot-linux-gnueabihf-g++
-LFLAGS        = --sysroot=/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot
-LIBS          = $(SUBLIBS) -lQt5Quick -L/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib -lQt5Gui -lQt5Qml -lQt5Network -lQt5Core -lrt -ldl -lGLESv2 -lpthread 
-AR            = /opt/GfA/TC_L44104_C493_QT57/usr/bin/arm-buildroot-linux-gnueabihf-ar cqs
-RANLIB        = 
-SED           = sed
-STRIP         = /opt/GfA/TC_L44104_C493_QT57/usr/bin/arm-buildroot-linux-gnueabihf-strip
-
-####### Output directory
-
-OBJECTS_DIR   = ./
-
-####### Files
-
-SOURCES       = ../Demo/main.cpp qrc_qml.cpp
-OBJECTS       = main.o \
-		qrc_qml.o
-DIST          = /opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_pre.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/linux.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/sanitize.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base-unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-base.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qdevice.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/device_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_pre.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_post.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qconfig.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bootstrap_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_packetprotocol_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_platformsupport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldebug_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldevtools_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickparticles_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_zlib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_functions.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/linux-buildroot-g++/qmake.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_post.prf \
-		../Demo/.qmake.stash \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exclusive_builds.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_pre.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resolve_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_post.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qml_debug.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/warn_on.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resources.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/moc.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/opengl.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/thread.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/file_copies.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/testcase_targets.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exceptions.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/yacc.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/lex.prf \
-		../Demo/Demo.pro  ../Demo/main.cpp
-QMAKE_TARGET  = Demo
-DESTDIR       = 
-TARGET        = Demo
-
-
-first: all
-####### Build rules
-
-$(TARGET):  $(OBJECTS)  
-	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
-
-Makefile: ../Demo/Demo.pro /opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/linux-buildroot-g++/qmake.conf /opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_pre.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/linux.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/sanitize.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base-unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-base.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-unix.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qdevice.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/device_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_pre.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_post.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qconfig.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bootstrap_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_packetprotocol_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_platformsupport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldebug_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldevtools_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickparticles_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_zlib_private.pri \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_functions.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/linux-buildroot-g++/qmake.conf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_post.prf \
-		.qmake.stash \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exclusive_builds.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_pre.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resolve_config.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_post.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qml_debug.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/warn_on.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resources.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/moc.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/opengl.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/thread.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/file_copies.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/testcase_targets.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exceptions.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/yacc.prf \
-		/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/lex.prf \
-		../Demo/Demo.pro \
-		../Demo/qml.qrc \
-		/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Quick.prl \
-		/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Gui.prl \
-		/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Qml.prl \
-		/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Network.prl \
-		/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Core.prl
-	$(QMAKE) -spec devices/linux-buildroot-g++ CONFIG+=debug CONFIG+=qml_debug -o Makefile ../Demo/Demo.pro
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_pre.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/unix.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/linux.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/sanitize.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/gcc-base-unix.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-base.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/common/g++-unix.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qdevice.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/device_config.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_pre.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/common/linux_device_post.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/qconfig.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dcore_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dextras_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dinput_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dlogic_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquick_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickextras_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickinput_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3dquickrender_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_3drender_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bluetooth_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_bootstrap_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_charts_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_concurrent_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_core_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_datavisualization_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_dbus_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_eglfs_device_lib_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_enginio_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_gui_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_location_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimedia_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_network_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_nfc_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_opengl_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_openglextensions_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_packetprotocol_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_platformsupport_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_positioning_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_printsupport_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qml_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldebug_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmldevtools_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qmltest_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quick_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickparticles_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_quickwidgets_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sensors_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialbus_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_serialport_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_sql_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_svg_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_testlib_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandclient_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_waylandcompositor_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webchannel_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webengine_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecore_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_webenginewidgets_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_websockets_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_widgets_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xml_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/modules/qt_lib_zlib_private.pri:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_functions.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt_config.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/devices/linux-buildroot-g++/qmake.conf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/spec_post.prf:
-.qmake.stash:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exclusive_builds.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_pre.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resolve_config.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/default_post.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qml_debug.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/warn_on.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/qt.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/resources.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/moc.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/opengl.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/unix/thread.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/file_copies.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/testcase_targets.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/exceptions.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/yacc.prf:
-/opt/GfA/TC_L44104_C493_QT57/usr/mkspecs/features/lex.prf:
-../Demo/Demo.pro:
-../Demo/qml.qrc:
-/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Quick.prl:
-/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Gui.prl:
-/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Qml.prl:
-/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Network.prl:
-/opt/GfA/TC_L44104_C493_QT57/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/libQt5Core.prl:
-qmake: FORCE
-	@$(QMAKE) -spec devices/linux-buildroot-g++ CONFIG+=debug CONFIG+=qml_debug -o Makefile ../Demo/Demo.pro
-
-qmake_all: FORCE
-
-
-all: Makefile $(TARGET)
-
-dist: distdir FORCE
-	(cd `dirname $(DISTDIR)` && $(TAR) $(DISTNAME).tar $(DISTNAME) && $(COMPRESS) $(DISTNAME).tar) && $(MOVE) `dirname $(DISTDIR)`/$(DISTNAME).tar.gz . && $(DEL_FILE) -r $(DISTDIR)
-
-distdir: FORCE
-	@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
-	$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
-	$(COPY_FILE) --parents ../Demo/qml.qrc $(DISTDIR)/
-	$(COPY_FILE) --parents ../Demo/main.cpp $(DISTDIR)/
-
-
-clean: compiler_clean 
-	-$(DEL_FILE) $(OBJECTS)
-	-$(DEL_FILE) *~ core *.core
-
-
-distclean: clean 
-	-$(DEL_FILE) $(TARGET) 
-	-$(DEL_FILE) .qmake.stash
-	-$(DEL_FILE) Makefile
-
-
-####### Sub-libraries
-
-mocclean: compiler_moc_header_clean compiler_moc_source_clean
-
-mocables: compiler_moc_header_make_all compiler_moc_source_make_all
-
-check: first
-
-benchmark: first
-
-compiler_rcc_make_all: qrc_qml.cpp
-compiler_rcc_clean:
-	-$(DEL_FILE) qrc_qml.cpp
-qrc_qml.cpp: ../Demo/qml.qrc \
-		/opt/GfA/TC_L44104_C493_QT57/usr/bin/rcc \
-		../Demo/main.qml
-	/opt/GfA/TC_L44104_C493_QT57/usr/bin/rcc -name qml ../Demo/qml.qrc -o qrc_qml.cpp
-
-compiler_moc_header_make_all:
-compiler_moc_header_clean:
-compiler_moc_source_make_all:
-compiler_moc_source_clean:
-compiler_yacc_decl_make_all:
-compiler_yacc_decl_clean:
-compiler_yacc_impl_make_all:
-compiler_yacc_impl_clean:
-compiler_lex_make_all:
-compiler_lex_clean:
-compiler_clean: compiler_rcc_clean 
-
-####### Compile
-
-main.o: ../Demo/main.cpp 
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o ../Demo/main.cpp
-
-qrc_qml.o: qrc_qml.cpp 
-	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o qrc_qml.o qrc_qml.cpp
-
-####### Install
-
-install_target: first FORCE
-	@test -d $(INSTALL_ROOT)/opt/Demo/bin || mkdir -p $(INSTALL_ROOT)/opt/Demo/bin
-	-$(INSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/Demo/bin/$(QMAKE_TARGET)
-
-uninstall_target: FORCE
-	-$(DEL_FILE) $(INSTALL_ROOT)/opt/Demo/bin/$(QMAKE_TARGET)
-	-$(DEL_DIR) $(INSTALL_ROOT)/opt/Demo/bin/ 
-
-
-install: install_target  FORCE
-
-uninstall: uninstall_target  FORCE
-
-FORCE:
-

BIN
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/main.o


+ 0 - 139
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/qrc_qml.cpp

@@ -1,139 +0,0 @@
-/****************************************************************************
-** Resource object code
-**
-** Created by: The Resource Compiler for Qt version 5.7.0
-**
-** WARNING! All changes made in this file will be lost!
-*****************************************************************************/
-
-static const unsigned char qt_resource_data[] = {
-  // /home/fjd/Sandbox/gfativaflashutil/qmlplugin/Demo/main.qml
-  0x0,0x0,0x3,0xca,
-  0x0,
-  0x0,0xf,0xc0,0x78,0x9c,0xd5,0x57,0xdf,0x6f,0xda,0x30,0x10,0x7e,0x1e,0x7f,0x85,
-  0x95,0x27,0xd0,0xb6,0x90,0x50,0x68,0xd7,0xa0,0x3d,0x74,0x55,0x3b,0x21,0xad,0xed,
-  0x3a,0xd8,0xf6,0xb0,0x55,0x95,0x89,0x4d,0xb0,0x6a,0xec,0xcc,0x36,0xb4,0xac,0xea,
-  0xff,0x3e,0x9b,0xfc,0x72,0x2,0x85,0x54,0x63,0xf,0xf3,0x3,0x22,0x77,0x39,0xdf,
-  0x77,0xe7,0xcf,0x77,0x17,0x32,0x8b,0xb9,0x50,0xe0,0x5a,0x5d,0xcf,0x49,0x78,0x7,
-  0x3a,0xee,0x51,0x83,0x94,0x44,0xee,0x77,0xc2,0x10,0xbf,0xd7,0x9a,0x4e,0xa6,0x89,
-  0x26,0xd0,0x8d,0xe9,0x3c,0x22,0x4c,0xba,0xbf,0x66,0xd4,0x55,0x64,0x1,0x27,0x14,
-  0xca,0x29,0xf0,0x5d,0xaf,0xd1,0x48,0xd,0x1e,0x1b,0x40,0xaf,0x5,0x91,0x64,0x4c,
-  0x71,0x0,0x94,0x98,0xe3,0x95,0xe4,0x9e,0x20,0x35,0xd,0xc0,0x61,0xd7,0x5b,0x3d,
-  0x4e,0x31,0x89,0xa6,0x2a,0x0,0xdd,0x77,0xda,0xd4,0x8,0x62,0xc1,0x63,0x2c,0xd4,
-  0x12,0x10,0xa6,0x80,0x54,0x50,0x5d,0x8a,0x0,0xf8,0xeb,0xaa,0xd9,0xf8,0x4,0x21,
-  0xa3,0xf2,0x52,0xc3,0x2f,0x38,0x54,0x90,0x45,0x14,0xa7,0xae,0xcd,0x82,0x2c,0x9c,
-  0x72,0x21,0xdd,0x9,0xa1,0x34,0x0,0x31,0x14,0x98,0xa9,0x5c,0x19,0x9,0x88,0x88,
-  0x16,0x4,0xe0,0x63,0xfa,0xcf,0xb2,0x34,0x2b,0x13,0xf,0x15,0x8f,0xc1,0x23,0x88,
-  0xb9,0x24,0x8a,0x70,0x16,0x0,0xcf,0xf5,0xfa,0x20,0xe4,0x94,0x6b,0xff,0x8e,0xde,
-  0x66,0xe9,0x80,0xa7,0xba,0x96,0xbd,0xc2,0x72,0x4c,0x61,0x78,0x57,0xdb,0xd4,0xb7,
-  0x9d,0x22,0x32,0xab,0xfa,0x4d,0xfe,0x3d,0x25,0xc9,0x18,0xe1,0x7,0x3b,0x1a,0x82,
-  0x2,0x9d,0x69,0x88,0x28,0x61,0x38,0x17,0x3e,0x4,0xa0,0xd3,0xf3,0xf2,0xc7,0x65,
-  0x0,0x7a,0xf9,0x43,0xe6,0xe7,0x7e,0x4a,0x14,0x76,0x72,0xf1,0x84,0x33,0xe5,0xc6,
-  0xe4,0x1,0xd3,0x21,0xf9,0xad,0x4f,0xb5,0xd3,0xcd,0x55,0x4a,0x7b,0xc,0xc0,0x2f,
-  0x39,0x12,0x4d,0xe7,0xe3,0xe4,0x4,0x8c,0x34,0x2b,0xc0,0xf9,0x8a,0x16,0x5f,0x15,
-  0xa1,0x44,0x2d,0x9d,0x96,0x8d,0x70,0xd3,0x71,0x19,0x98,0x55,0x88,0x3d,0x1b,0x60,
-  0xb7,0x80,0x9b,0xf2,0xe8,0xe8,0xb8,0x10,0x65,0x5c,0xea,0x6c,0xb,0xa3,0xea,0x7e,
-  0xf5,0xf4,0x68,0x7b,0x34,0x8c,0xb2,0x7c,0x1e,0xf5,0xaa,0x3e,0xed,0x17,0x72,0xfe,
-  0x7a,0x6b,0x4e,0x11,0x14,0x77,0x2,0x23,0xa7,0x91,0x6b,0x2a,0xa7,0x52,0xa4,0x2d,
-  0xe1,0x79,0x49,0x91,0x51,0x37,0xd4,0x5c,0xc0,0x62,0xc0,0xd6,0xe8,0xbb,0xe5,0x98,
-  0x9e,0x6a,0x46,0xda,0xdb,0x15,0x69,0xa7,0x5e,0xa4,0x91,0xc0,0x98,0xd5,0x89,0xd3,
-  0x89,0xb0,0xba,0x80,0x6a,0x88,0x85,0xb3,0xe7,0x60,0xcd,0xba,0xe0,0x73,0x89,0x4f,
-  0x4,0x86,0xb9,0xe4,0x71,0xa3,0x97,0x8d,0xd5,0xc0,0x2c,0xce,0x4e,0xa9,0xae,0x79,
-  0x58,0xd3,0x90,0x20,0x43,0xe0,0x15,0x7f,0xdd,0x1c,0x74,0x33,0x39,0xa7,0x56,0xed,
-  0x3b,0x37,0x83,0x3a,0x1c,0x2,0xe9,0x19,0xd6,0xb5,0x6b,0x66,0x5e,0xd8,0x92,0x7e,
-  0xbf,0xf3,0xe2,0xfb,0xe7,0x57,0xef,0x9f,0xd,0xbb,0xec,0xfc,0x47,0x82,0xfd,0x66,
-  0x7,0x62,0xf9,0x2,0xbc,0xdd,0xfd,0xe2,0x95,0x3b,0xd0,0xd6,0x27,0xb2,0x4d,0xdb,
-  0x7f,0xc8,0xe4,0x11,0x14,0xfa,0x77,0x30,0x8b,0x6,0x6c,0xc2,0xff,0x33,0x42,0x97,
-  0xb0,0xbf,0x98,0xd7,0xba,0xfb,0x98,0x3,0x3d,0x89,0xe3,0x1d,0x1c,0xb1,0x1b,0xcc,
-  0x3e,0x38,0x52,0x38,0xae,0xc9,0x67,0x6d,0x70,0xfa,0xe5,0xf4,0xa0,0x53,0x3,0xea,
-  0xd1,0xde,0xa1,0x66,0x9e,0x33,0xac,0xae,0xe2,0x43,0x25,0x8,0x8b,0x9a,0xfe,0x61,
-  0x6b,0x37,0xf0,0x8b,0xf4,0x2,0xd7,0xc0,0x7e,0xbc,0x77,0xec,0x96,0xf3,0xfa,0xa9,
-  0xfe,0x30,0x27,0x14,0xed,0x86,0x7b,0xe0,0xef,0x1d,0x6e,0xe6,0xb9,0x6,0xd6,0x4,
-  0x2c,0x3a,0x7b,0xc0,0xe1,0xd5,0xdc,0xba,0x2f,0xa5,0x61,0xa3,0x5a,0x46,0xf2,0xb9,
-  0xf5,0xc0,0x92,0x65,0x85,0xe4,0xc0,0x7e,0xf1,0x99,0x80,0xb6,0x45,0x94,0xd5,0x94,
-  0x11,0x96,0x2a,0xb5,0xc8,0xa0,0x67,0x31,0x56,0x73,0x5d,0x44,0x5f,0xe4,0x25,0x93,
-  0x98,0x79,0xeb,0x33,0x34,0x68,0x9d,0x36,0x8f,0x55,0x5b,0x8f,0x63,0xed,0x7c,0x48,
-  0x9f,0x6b,0x65,0x5b,0x8f,0xf0,0x25,0x41,0x1,0x93,0xa8,0xc9,0x25,0x9c,0x61,0x63,
-  0x8a,0xf0,0xa2,0xad,0xd4,0xf2,0xaa,0x5b,0x68,0x25,0x5d,0xc,0xd0,0x40,0x5e,0x72,
-  0x84,0x93,0xe9,0x7b,0x2,0xa9,0x2c,0xc6,0x35,0x7d,0xe,0xe7,0x84,0xe2,0xe7,0xfd,
-  0x5e,0x7d,0x1a,0xbe,0xf5,0xbf,0xf9,0xb7,0x9e,0xe7,0x1d,0xdf,0x86,0x22,0x74,0xc7,
-  0x84,0x15,0xbb,0x2f,0xb0,0x18,0x9b,0x71,0xd7,0x30,0xa4,0x28,0xc1,0x9c,0x65,0x54,
-  0x34,0x7b,0x9f,0x4e,0x75,0xb,0xd0,0xf5,0xcc,0xaa,0x88,0xed,0x36,0xb0,0xd6,0x7a,
-  0xcb,0x75,0x4d,0x76,0xc1,0xfb,0x8a,0xe6,0x87,0x7f,0xd3,0xb7,0xea,0x9d,0xe5,0x2e,
-  0x25,0x86,0xed,0xc2,0x76,0x90,0x33,0x27,0xd9,0xf7,0xb5,0xde,0x58,0x46,0xe0,0x35,
-  0x70,0x7e,0x32,0xa7,0xff,0xcc,0x9b,0xf3,0x18,0x69,0xe7,0xcd,0x56,0x59,0x1f,0x72,
-  0x26,0x39,0xc5,0x2e,0xe5,0x51,0x53,0xef,0xd1,0xb2,0xf1,0xbc,0x4a,0x21,0xe5,0x2d,
-  0xa0,0xdc,0xf0,0x4a,0xd7,0x69,0xad,0xd9,0x75,0x37,0x35,0x3b,0xfd,0x81,0x55,0x64,
-  0x6a,0x6b,0xe7,0x28,0xba,0xc6,0xc6,0x2c,0xbf,0x5a,0x40,0x91,0x4e,0xac,0x3a,0xab,
-  0x7e,0xbf,0xaa,0x4a,0xbe,0xcc,0x8c,0xca,0xf3,0xca,0x1,0x1b,0xad,0xc0,0xe6,0x2c,
-  0x56,0xbc,0x79,0x2e,0x5b,0xe9,0x79,0x39,0x95,0x74,0x26,0x96,0xf6,0xbd,0x8f,0x75,
-  0x29,0x4d,0x1a,0x59,0xd6,0xc1,0xfa,0x15,0x36,0xac,0xdb,0xe8,0x17,0x85,0xfa,0xc0,
-  0xb9,0xa2,0x1c,0xa2,0x7c,0xa4,0x7b,0x93,0xa2,0xae,0xb1,0x81,0xc0,0x12,0xff,0xd5,
-  0x6,0xb,0x48,0x89,0xa1,0xc3,0x20,0xb9,0x2d,0xeb,0x1b,0xac,0x9b,0x57,0xd2,0x95,
-  0xb5,0xe7,0xa7,0xc6,0x1f,0x3c,0x93,0x1b,0xe1,
-  
-};
-
-static const unsigned char qt_resource_name[] = {
-  // main.qml
-  0x0,0x8,
-  0x8,0x1,0x5a,0x5c,
-  0x0,0x6d,
-  0x0,0x61,0x0,0x69,0x0,0x6e,0x0,0x2e,0x0,0x71,0x0,0x6d,0x0,0x6c,
-  
-};
-
-static const unsigned char qt_resource_struct[] = {
-  // :
-  0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,
-  // :/main.qml
-  0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
-
-};
-
-#ifdef QT_NAMESPACE
-#  define QT_RCC_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
-#  define QT_RCC_MANGLE_NAMESPACE0(x) x
-#  define QT_RCC_MANGLE_NAMESPACE1(a, b) a##_##b
-#  define QT_RCC_MANGLE_NAMESPACE2(a, b) QT_RCC_MANGLE_NAMESPACE1(a,b)
-#  define QT_RCC_MANGLE_NAMESPACE(name) QT_RCC_MANGLE_NAMESPACE2( \
-        QT_RCC_MANGLE_NAMESPACE0(name), QT_RCC_MANGLE_NAMESPACE0(QT_NAMESPACE))
-#else
-#   define QT_RCC_PREPEND_NAMESPACE(name) name
-#   define QT_RCC_MANGLE_NAMESPACE(name) name
-#endif
-
-#ifdef QT_NAMESPACE
-namespace QT_NAMESPACE {
-#endif
-
-bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
-
-bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
-
-#ifdef QT_NAMESPACE
-}
-#endif
-
-int QT_RCC_MANGLE_NAMESPACE(qInitResources_qml)();
-int QT_RCC_MANGLE_NAMESPACE(qInitResources_qml)()
-{
-    QT_RCC_PREPEND_NAMESPACE(qRegisterResourceData)
-        (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
-    return 1;
-}
-
-int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_qml)();
-int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_qml)()
-{
-    QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData)
-       (0x01, qt_resource_struct, qt_resource_name, qt_resource_data);
-    return 1;
-}
-
-namespace {
-   struct initializer {
-       initializer() { QT_RCC_MANGLE_NAMESPACE(qInitResources_qml)(); }
-       ~initializer() { QT_RCC_MANGLE_NAMESPACE(qCleanupResources_qml)(); }
-   } dummy;
-}

BIN
qmlplugin/build-Demo-TC_L44104_C493_QT57-Debug/qrc_qml.o


+ 1 - 0
qmlplugin/libgfativaflashplugin/.gitignore

@@ -9,5 +9,6 @@ Debug/
 Profile/
 Release/
 install.sh
+pdump.sh
 *.pro.user
 *.bak

+ 588 - 29
qmlplugin/libgfativaflashplugin/gfativaflash.cpp

@@ -7,7 +7,7 @@
 #define _TEST_VERBOSITY(v, n)					(((v) == -1) && ((n) <= 2)) || (((v) >= 0) && ((v) >= (n)))
 
 /////////////////////////////////////////////////////////////////////////////
-
+#if 0
 static std::string _formatString(const char *fmt, ...)
 {
 	int n;
@@ -24,6 +24,7 @@ static std::string _formatString(const char *fmt, ...)
 	}
 	return s;
 }
+#endif
 
 /////////////////////////////////////////////////////////////////////////////
 
@@ -31,8 +32,18 @@ TivaFlash::TivaFlash(QObject *pParent) :	QObject(pParent),
 											m_nExitCode(0),
 											m_slvIdIsNodeAddr(false),
 											m_verbosity(-1),
+											m_bExecuting(false),
+											m_xBaudRate(0),
+											m_curSlvID(0),
+											m_appAddress(0),
+											m_blockSize(0),
+											m_pageEraseTime(0),
+											m_mbCtrlRegister(0),
+											m_forceAllParities(false),
 											m_imgSizeFile(0),
-											m_imgCRC32File(0.0)
+											m_imgCRC32File(0.0),
+											m_imgUpldProg(this),
+											m_qProcess(this)
 {
 	setObjectName("TivaFlash");
 	
@@ -51,6 +62,13 @@ TivaFlash::TivaFlash(QObject *pParent) :	QObject(pParent),
 		m_imgMaterialApp.append("");
 		m_imgBuildApp.append("");
 	}
+	
+	connect(&m_qProcess, SIGNAL(started()), SLOT(onProcessStarted()));
+	connect(&m_qProcess, SIGNAL(finished(int, QProcess::ExitStatus)), SLOT(onProcessFinished(int, QProcess::ExitStatus)));
+	connect(&m_qProcess, SIGNAL(readyReadStandardOutput()), SLOT(onProcessReadyReadStandardOutput()));
+	connect(&m_qProcess, SIGNAL(stateChanged(QProcess::ProcessState)), SLOT(onProcessStateChanged(QProcess::ProcessState)));
+	
+	m_qProcess.setProcessChannelMode(QProcess::MergedChannels);
 }
 
 TivaFlash::~TivaFlash(void)
@@ -59,6 +77,35 @@ TivaFlash::~TivaFlash(void)
 
 /////////////////////////////////////////////////////////////////////////////
 
+void TivaFlash::onProcessStarted(void)
+{
+	setExecuting(true);
+	emit processStarted(m_curSlvID);
+}
+
+void TivaFlash::onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus)
+{
+	setExecuting(false);
+	emit processFinished(m_curSlvID, exitCode, exitStatus == QProcess::ExitStatus::NormalExit);
+}
+
+void TivaFlash::onProcessReadyReadStandardOutput(void)
+{
+	char szLine[256];
+
+	while(m_qProcess.readLine(szLine, sizeof(szLine)) > 0)
+	{
+		onCmdOutput(m_curSlvID, szLine);
+	}
+}
+
+void TivaFlash::onProcessStateChanged(QProcess::ProcessState newState)
+{
+	setExecuting(newState != QProcess::ProcessState::NotRunning);
+}
+
+/////////////////////////////////////////////////////////////////////////////
+#if 0
 bool TivaFlash::execFlashUtil(int nSlvID, const char *pszOpt)
 {
 	FILE* pd;
@@ -95,6 +142,75 @@ std::string TivaFlash::getSlavIDs(int nSlvID, int nMbID) const
 
 	return ret;
 }
+#endif
+
+void TivaFlash::getSlavIDs(int nSlvID, int nMbID, QStringList &rargs) const
+{
+	std::string ret;
+
+	if(m_slvIdIsNodeAddr)
+		rargs << QString::asprintf("--node-addr=%d", nSlvID);
+	else
+		rargs << QString::asprintf("--stat-num=%d", nSlvID);
+
+	if(_IS_VALID_MB_ID(nMbID))
+	{
+		rargs << QString::asprintf("--mb-slave-id=%d", nMbID);
+		
+		if(m_mbCtrlRegister > 0)
+			rargs << QString::asprintf("--mb-bl-ctrl-reg=%d", m_mbCtrlRegister);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void TivaFlash::getXBaud(QStringList &rargs) const
+{
+	if(m_xBaudRate > 0)
+	{
+		rargs << QString::asprintf("--x-baud-rate=%d", m_xBaudRate);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void TivaFlash::getAppAddr(QStringList &rargs) const
+{
+	if(m_appAddress > 0)
+	{
+		rargs << QString::asprintf("--app-addr=0x%X", m_appAddress);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void TivaFlash::getBlockSize(QStringList &rargs) const
+{
+	if(m_blockSize > 0)
+	{
+		rargs << QString::asprintf("--block-size=%d", m_blockSize);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void TivaFlash::getPageEraseTime(QStringList &rargs) const
+{
+	if(m_pageEraseTime > 0)
+	{
+		rargs << QString::asprintf("--page-erase-time=%d", m_pageEraseTime);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void TivaFlash::getForceAllParities(QStringList &rargs) const
+{
+	if(m_forceAllParities)
+	{
+		rargs << QString::asprintf("--force-all-par");
+	}
+}
 
 /////////////////////////////////////////////////////////////////////////////
 
@@ -130,10 +246,43 @@ int TivaFlash::parseTaggedString(const char *pszIn, std::string &sOut) const
 
 /////////////////////////////////////////////////////////////////////////////
 
+int TivaFlash::parseTaggedValues(const char *pszIn, int &rnVal1, int &rnVal2) const
+{
+	static const std::string strRegEx = "([0-9]+)\\|([0-9]+)";
+	static std::regex reg(strRegEx, std::regex_constants::ECMAScript | std::regex_constants::optimize);
+	std::cmatch res;
+
+	if(pszIn && *pszIn)
+	{
+		try
+		{
+			if(regex_search(pszIn, res, reg))
+			{
+				size_t nSize = res.size();
+				
+				if(nSize == 3)
+				{
+					rnVal1 = atoi(res[1].str().c_str());
+					rnVal2 = atoi(res[2].str().c_str());
+					return nSize - 1;
+				}
+			}
+		}
+		catch(...)
+		{
+		}
+	}
+	
+	return -1;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
 void TivaFlash::onCmdOutput(int nSlvID, const char *pszOut)
 {
 	std::string s;
 	int nTag = parseTaggedString(pszOut, s);
+	int nVal1, nVal2;
 	
 	if(nTag >= 0)
 	{
@@ -145,22 +294,21 @@ void TivaFlash::onCmdOutput(int nSlvID, const char *pszOut)
 
 		case PLUGIN_TAG_EXIT_CODE:
 			m_nExitCode = qs.toInt();
-//			emit execOut(nSlvID, nTag, qs);
 			break;
 
 		/////////////////////////////////////////////////////////////////////
 
 		case PLUGIN_TAG_STATUS:
 			if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_STATUS))
-				emit execOut(nSlvID, nTag, qs);
+				emit processOutput(nSlvID, nTag, qs);
 			break;
 		case PLUGIN_TAG_INFO:
 			if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_INFO))
-				emit execOut(nSlvID, nTag, qs);
+				emit processOutput(nSlvID, nTag, qs);
 			break;
 		case PLUGIN_TAG_ERROR:
 			if(_TEST_VERBOSITY(m_verbosity, PLUGIN_TAG_ERROR))
-				emit execOut(nSlvID, nTag, qs);
+				emit processOutput(nSlvID, nTag, qs);
 			break;
 
 		/////////////////////////////////////////////////////////////////////
@@ -216,6 +364,50 @@ void TivaFlash::onCmdOutput(int nSlvID, const char *pszOut)
 		case PLUGIN_TAG_IMG_BUILD_FILE:
 			setImgBuildFile(qs);
 			break;
+
+		/////////////////////////////////////////////////////////////////////
+
+		case PLUGIN_TAG_UPLOAD_START_ERASE_FLASH:
+			m_imgUpldProg.clear();
+			m_imgUpldProg.setCtx(ImgUploadStatus::EraseFlashStart);
+			if(parseTaggedValues(s.c_str(), nVal1, nVal2) == 2)
+			{
+				m_imgUpldProg.setCntFlashPages(nVal1);
+				m_imgUpldProg.setCbTotal(nVal2);
+				emit imgUploadProgress(&m_imgUpldProg);
+			}
+			break;
+		case PLUGIN_TAG_UPLOAD_END_ERASE_FLASH:
+			m_imgUpldProg.setCtx(ImgUploadStatus::EraseFlashEnd);
+			emit imgUploadProgress(&m_imgUpldProg);
+			break;
+		case PLUGIN_TAG_UPLOAD_BLOCKS_START:
+			m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadStart);
+			m_imgUpldProg.setCbBlock(qs.toInt());
+			emit imgUploadProgress(&m_imgUpldProg);
+			break;
+		case PLUGIN_TAG_UPLOAD_BLOCK:
+			m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadBlock);
+			if(parseTaggedValues(s.c_str(), nVal1, nVal2) == 2)
+			{
+				int nCbTotal = m_imgUpldProg.cbTotal();
+				int nCbSent = nVal1;
+				m_imgUpldProg.setCbSent(nCbSent);
+				m_imgUpldProg.setPercentSent(nCbSent * 100 / nCbTotal);
+				m_imgUpldProg.SetBlockNr(nVal2);
+				emit imgUploadProgress(&m_imgUpldProg);
+			}
+			break;
+		case PLUGIN_TAG_UPLOAD_BLOCKS_END:
+			m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadSuccess);
+			m_imgUpldProg.setErrorCode(0);
+			emit imgUploadProgress(&m_imgUpldProg);
+			break;
+		case PLUGIN_TAG_UPLOAD_ERROR:
+			m_imgUpldProg.setCtx(ImgUploadStatus::ImgUploadError);
+			m_imgUpldProg.setErrorCode(qs.toInt());
+			emit imgUploadProgress(&m_imgUpldProg);
+			break;
 		}
 	}
 }
@@ -226,20 +418,32 @@ void TivaFlash::onCmdOutput(int nSlvID, const char *pszOut)
 
 bool TivaFlash::getMatSer(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
-
+		return false;
+	m_curSlvID = nSlvID;
+	
 	setMaterialEeprom(nSlvID, "");
 	setSerialEeprom(nSlvID, "");
 
-	std::string strOpt = _formatString("--show-mat-ser --itf-name=\"%s\" %s", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+	QStringList args;
+	args << "--show-mat-ser";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
 }
 
 bool TivaFlash::getTargetImgInfo(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
+		return false;
+	m_curSlvID = nSlvID;
 
 	setImgSizeBoot(nSlvID, 0);
 	setImgCRC32Boot(nSlvID, 0.0);
@@ -251,44 +455,162 @@ bool TivaFlash::getTargetImgInfo(int nSlvID, int nMbID)
 	setImgMaterialApp(nSlvID, "");
 	setImgBuildApp(nSlvID, "");
 
-	std::string strOpt = _formatString("--show-dev-img-info --itf-name=\"%s\" %s", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+	QStringList args;
+	args << "--show-dev-img-info";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getXBaud(args);
+	getAppAddr(args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
 }
 
 bool TivaFlash::pingTarget(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
-
-	std::string strOpt = _formatString("--ping-target --itf-name=\"%s\" %s", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+		return false;
+	m_curSlvID = nSlvID;
+
+	QStringList args;
+	args << "--ping-target";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
 }
 
 bool TivaFlash::startBootloader(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
-
-	std::string strOpt = _formatString("--start-boot --itf-name=\"%s\" %s", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+		return false;
+	m_curSlvID = nSlvID;
+
+	QStringList args;
+	args << "--start-boot";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
 }
 
 bool TivaFlash::resetBootloader(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
-
-	std::string strOpt = _formatString("--reset-boot --itf-name=\"%s\" %s", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+		return false;
+	m_curSlvID = nSlvID;
+
+	QStringList args;
+	args << "--reset-boot";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
 }
 
 bool TivaFlash::validateImgFile(int nSlvID, int nMbID)
 {
+	if(m_bExecuting)
+		return false;
 	if(!_IS_VALID_SLV_ID(nSlvID))
-		return -1;
+		return false;
+	m_curSlvID = nSlvID;
+
+	QStringList args;
+	args << "--validate-img";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getAppAddr(args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	args << QString::fromStdString(m_imgFile);
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
+}
 
-	std::string strOpt = _formatString("--validate-img --itf-name=\"%s\" %s \"%s\"", m_itfName.c_str(), getSlavIDs(nSlvID, nMbID).c_str(), m_imgFile.c_str());
-	return execFlashUtil(nSlvID, strOpt.c_str());
+bool TivaFlash::uploadImgFile(int nSlvID, int nMbID)
+{
+	if(m_bExecuting)
+		return false;
+	if(!_IS_VALID_SLV_ID(nSlvID))
+		return false;
+	m_curSlvID = nSlvID;
+
+	QStringList args;
+	args << "--upload-img";
+	args << QString::asprintf("--itf-name=%s", m_itfName.c_str());
+	getSlavIDs(nSlvID, nMbID, args);
+	getXBaud(args);
+	getAppAddr(args);
+	getBlockSize(args);
+	getPageEraseTime(args);
+	getForceAllParities(args);
+	args << "--plugin-mode";
+	args << QString::fromStdString(m_imgFile);
+	m_qProcess.start(QString::fromStdString(m_tivaFlashUtilPath), args, QIODevice::ReadOnly);
+	return true;
+}
+
+bool TivaFlash::clearImgInfo(int nSlvID)
+{
+	if(m_bExecuting)
+		return false;
+	if(!_IS_VALID_SLV_ID(nSlvID))
+		return false;
+		
+	setImgSizeFile(0);
+	setImgCRC32File(0);
+	setImgMaterialFile(0);
+	setImgBuildFile(0);
+	
+	if(nSlvID > 0)
+	{
+		setMaterialEeprom(nSlvID, "");
+		setSerialEeprom(nSlvID, "");
+
+		setImgSizeBoot(nSlvID, 0);
+		setImgCRC32Boot(nSlvID, 0);
+		setImgMaterialBoot(nSlvID, "");
+		setImgBuildBoot(nSlvID, "");
+
+		setImgSizeApp(nSlvID, 0);
+		setImgCRC32App(nSlvID, 0);
+		setImgMaterialApp(nSlvID, "");
+		setImgBuildApp(nSlvID, "");
+	}
+	else
+	{
+		for(int i = 0; i < _MAX_SLAVE_COUNT; ++i)
+		{
+			setMaterialEeprom(i, "");
+			setSerialEeprom(i, "");
+
+			setImgSizeBoot(i, 0);
+			setImgCRC32Boot(i, 0);
+			setImgMaterialBoot(i, "");
+			setImgBuildBoot(i, "");
+
+			setImgSizeApp(i, 0);
+			setImgCRC32App(i, 0);
+			setImgMaterialApp(i, "");
+			setImgBuildApp(i, "");
+		}
+	}
+	
+	return true;
 }
 
 /////////////////////////////////////////////////////////////////////////////
@@ -349,7 +671,6 @@ void TivaFlash::setVerbosity(int val)
 	if(m_verbosity != val)
 	{
 		m_verbosity = val;
-		emit verbosityChanged(m_verbosity);
 	}
 }
 
@@ -365,6 +686,112 @@ void TivaFlash::setImgFile(const QString &val)
 	m_imgFile = val.toStdString();
 }
 
+/////////////////////////////////////////////////////////////////////////////
+
+bool TivaFlash::executing(void) const
+{
+	return m_bExecuting;
+}
+
+void TivaFlash::setExecuting(bool val)
+{
+	if(m_bExecuting != val)
+	{
+		m_bExecuting = val;
+		emit executingChanged(m_bExecuting);
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int TivaFlash::xBaudRate(void) const
+{
+	return m_xBaudRate;
+}
+
+void TivaFlash::setXBaudRate(int val)
+{
+	if(m_xBaudRate != val)
+	{
+		m_xBaudRate = val;
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int TivaFlash::appAddress(void) const
+{
+	return m_appAddress;
+}
+
+void TivaFlash::setAppAddress(int val)
+{
+	if(m_appAddress != val)
+	{
+		m_appAddress = val;
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int TivaFlash::blockSize(void) const
+{
+	return m_blockSize;
+}
+
+void TivaFlash::setBlockSize(int val)
+{
+	if(m_blockSize != val)
+	{
+		m_blockSize = val;
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int TivaFlash::pageEraseTime(void) const
+{
+	return m_pageEraseTime;
+}
+
+void TivaFlash::setPageEraseTime(int val)
+{
+	if(m_pageEraseTime != val)
+	{
+		m_pageEraseTime = val;
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int TivaFlash::mbCtrlRegister(void) const
+{
+	return m_mbCtrlRegister;
+}
+
+void TivaFlash::setMbCtrlRegister(int val)
+{
+	if(m_mbCtrlRegister != val)
+	{
+		m_mbCtrlRegister = val;
+	}
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+bool TivaFlash::forceAllParities(void) const
+{
+	return m_forceAllParities;
+}
+
+void TivaFlash::setForceAllParities(bool val)
+{
+	if(m_forceAllParities != val)
+	{
+		m_forceAllParities = val;
+	}
+}
+
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
@@ -596,3 +1023,135 @@ void TivaFlash::setImgBuildFile(const QString &val)
 		emit imgBuildFileChanged(m_imgBuildFile);
 	}
 }
+
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+
+ImgUploadStatus::ImgUploadStatus(QObject *pParent) :	QObject(pParent)
+{
+	setObjectName("ImgUploadStatus");
+	clear();
+}
+
+ImgUploadStatus::~ImgUploadStatus(void)
+{
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+void ImgUploadStatus::clear(void)
+{
+	m_nCtx = 0;
+	m_nErrorCode = 0;
+	m_nCbBlock = 0;
+	m_nBlockNr = 0;
+	m_nCbTotal = 0;
+	m_nCbSent = 0;
+	m_nPercentSent = 0;
+	m_nCntFlashPages = 0;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::ctx(void) const
+{
+	return m_nCtx;
+}
+
+void ImgUploadStatus::setCtx(int val)
+{
+	if(m_nCtx != val)
+		m_nCtx = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::errorCode(void) const
+{
+	return m_nErrorCode;
+}
+
+void ImgUploadStatus::setErrorCode(int val)
+{
+	if(m_nErrorCode != val)
+		m_nErrorCode = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::cbBlock(void) const
+{
+	return m_nCbBlock;
+}
+
+void ImgUploadStatus::setCbBlock(int val)
+{
+	if(m_nCbBlock != val)
+		m_nCbBlock = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::blockNr(void) const
+{
+	return m_nBlockNr;
+}
+
+void ImgUploadStatus::SetBlockNr(int val)
+{
+	if(m_nBlockNr != val)
+		m_nBlockNr = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::cbTotal(void) const
+{
+	return m_nCbTotal;
+}
+
+void ImgUploadStatus::setCbTotal(int val)
+{
+	if(m_nCbTotal != val)
+		m_nCbTotal = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::cbSent(void) const
+{
+	return m_nCbSent;
+}
+
+void ImgUploadStatus::setCbSent(int val)
+{
+	if(m_nCbSent != val)
+		m_nCbSent = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+	
+int ImgUploadStatus::percentSent(void) const
+{
+	return m_nPercentSent;
+}
+
+void ImgUploadStatus::setPercentSent(int val)
+{
+	if(m_nPercentSent != val)
+		m_nPercentSent = val;
+}
+
+/////////////////////////////////////////////////////////////////////////////
+
+int ImgUploadStatus::cntFlashPages(void) const
+{
+	return m_nCntFlashPages;
+}
+
+void ImgUploadStatus::setCntFlashPages(int val)
+{
+	if(m_nCntFlashPages != val)
+		m_nCntFlashPages = val;
+}

+ 123 - 7
qmlplugin/libgfativaflashplugin/gfativaflash.h

@@ -8,6 +8,7 @@
 #include <QObject>
 #include <QList>
 #include <QStringList>
+#include <QProcess>
 //#include <QQmlListProperty>
 //#include <qqmlparserstatus.h>
 #include "tagnames.h"
@@ -25,14 +26,89 @@
 
 /////////////////////////////////////////////////////////////////////////////
 
+class ImgUploadStatus : public QObject
+{
+    Q_OBJECT
+	Q_PROPERTY(int ctx READ ctx)
+	Q_PROPERTY(int errorCode READ errorCode)
+	Q_PROPERTY(int cntFlashPages READ cntFlashPages)
+	Q_PROPERTY(int cbBlock READ cbBlock)
+	Q_PROPERTY(int blockNr READ blockNr)
+	Q_PROPERTY(int cbTotal READ cbTotal)
+	Q_PROPERTY(int cbSent READ cbSent)
+	Q_PROPERTY(int percentSent READ percentSent)
+
+public:
+	enum StatusCtx
+	{
+		EraseFlashStart,
+		EraseFlashEnd,
+		ImgUploadStart,
+		ImgUploadBlock,
+		ImgUploadSuccess,
+		ImgUploadError
+	};
+	
+	Q_ENUMS(StatusCtx);
+public:
+    explicit ImgUploadStatus(QObject *pParent = NULL);
+    virtual ~ImgUploadStatus(void);
+    
+    void clear(void);
+
+public:
+	int ctx(void) const;
+	void setCtx(int val);
+	
+	int errorCode(void) const;
+	void setErrorCode(int val);
+	
+	int cbBlock(void) const;
+	void setCbBlock(int val);
+	
+	int blockNr(void) const;
+	void SetBlockNr(int val);
+	
+	int cbTotal(void) const;
+	void setCbTotal(int val);
+	
+	int cbSent(void) const;
+	void setCbSent(int val);
+	
+	int percentSent(void) const;
+	void setPercentSent(int val);
+	
+	int cntFlashPages(void) const;
+	void setCntFlashPages(int val);
+
+private:
+	int m_nCtx;
+	int m_nErrorCode;
+	int m_nCbBlock;
+	int m_nBlockNr;
+	int m_nCbTotal;
+	int m_nCbSent;
+	int m_nPercentSent;
+	int m_nCntFlashPages;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+
 class TivaFlash : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QString tivaFlashUtilPath READ tivaFlashUtilPath WRITE setTivaFlashUtilPath)
     Q_PROPERTY(QString itfName READ itfName WRITE setItfName)
 	Q_PROPERTY(bool slvIdIsNodeAddr READ slvIdIsNodeAddr WRITE setSlvIdIsNodeAddr)
-	Q_PROPERTY(int verbosity READ verbosity WRITE setVerbosity NOTIFY verbosityChanged)
+	Q_PROPERTY(int verbosity READ verbosity WRITE setVerbosity)
     Q_PROPERTY(QString imgFile READ imgFile WRITE setImgFile)
+    Q_PROPERTY(bool executing READ executing NOTIFY executingChanged)
+	Q_PROPERTY(int xBaudRate READ xBaudRate WRITE setXBaudRate)
+	Q_PROPERTY(int appAddress READ appAddress WRITE setAppAddress)
+	Q_PROPERTY(int blockSize READ blockSize WRITE setBlockSize)
+	Q_PROPERTY(int pageEraseTime READ pageEraseTime WRITE setPageEraseTime)
+	Q_PROPERTY(int mbCtrlRegister READ mbCtrlRegister WRITE setMbCtrlRegister)
+    Q_PROPERTY(bool forceAllParities READ forceAllParities WRITE setForceAllParities)
 
     Q_PROPERTY(QStringList materialEeprom READ materialEeprom NOTIFY materialEepromChanged)
     Q_PROPERTY(QStringList serialEeprom READ serialEeprom NOTIFY serialEepromChanged)
@@ -63,12 +139,10 @@ public:
 	Q_INVOKABLE bool startBootloader(int nSlvID, int nMbID = 0);
 	Q_INVOKABLE bool resetBootloader(int nSlvID, int nMbID = 0);
 	Q_INVOKABLE bool validateImgFile(int nSlvID, int nMbID = 0);
+	Q_INVOKABLE bool uploadImgFile(int nSlvID, int nMbID = 0);
+	Q_INVOKABLE bool clearImgInfo(int nSlvID);
 
 signals:
-	void execOut(int slv, int ctx, QString msg) const;
-
-	void verbosityChanged(int val) const;
-
 	void materialEepromChanged(void) const;
 	void serialEepromChanged(void) const;
 
@@ -86,6 +160,12 @@ signals:
 	void imgBuildFileChanged(const QString &val) const;
 	void imgSizeFileChanged(int val) const;
 	void imgCRC32FileChanged(double val) const;
+	
+	void executingChanged(bool val) const;
+	void processStarted(int slv) const;
+	void processFinished(int slv, int exitcode, bool normalExit) const;
+	void processOutput(int slv, int ctx, QString msg) const;
+	void imgUploadProgress(ImgUploadStatus *stat);
 
 private:
 	QString tivaFlashUtilPath(void) const;
@@ -98,6 +178,20 @@ private:
 	void setVerbosity(int val);
 	QString imgFile(void) const;
 	void setImgFile(const QString &val);
+	bool executing(void) const;
+	void setExecuting(bool val);
+	int xBaudRate(void) const;
+	void setXBaudRate(int val);
+	int appAddress(void) const;
+	void setAppAddress(int val);
+	int blockSize(void) const;
+	void setBlockSize(int val);
+	int pageEraseTime(void) const;
+	void setPageEraseTime(int val);
+	int mbCtrlRegister(void) const;
+	void setMbCtrlRegister(int val);
+	bool forceAllParities(void) const;
+	void setForceAllParities(bool val);
 
 	const QStringList& materialEeprom(void) const;
 	void setMaterialEeprom(int nSlvID, const QString &val);
@@ -132,10 +226,21 @@ private:
 	void setImgBuildFile(const QString &val);
 	
 private:
-	bool execFlashUtil(int nSlvID, const char *pszOpt);
 	void onCmdOutput(int nSlvID, const char *pszOut);
-	std::string getSlavIDs(int nSlvID, int nMbID) const;
+	void getSlavIDs(int nSlvID, int nMbID, QStringList &rargs) const;
+	void getXBaud(QStringList &rargs) const;
+	void getAppAddr(QStringList &rargs) const;
+	void getBlockSize(QStringList &rargs) const;
+	void getPageEraseTime(QStringList &rargs) const;
+	void getForceAllParities(QStringList &rargs) const;
 	int parseTaggedString(const char *pszIn, std::string &sOut) const;
+	int parseTaggedValues(const char *pszIn, int &rnVal1, int &rnVal2) const;
+
+private slots:
+	void onProcessStarted(void);
+	void onProcessFinished(int exitCode, QProcess::ExitStatus exitStatus);
+	void onProcessReadyReadStandardOutput(void);
+	void onProcessStateChanged(QProcess::ProcessState newState);
 
 private:
 	int m_nExitCode;
@@ -143,6 +248,14 @@ private:
 	std::string m_itfName;
 	bool m_slvIdIsNodeAddr;
 	int m_verbosity;
+	bool m_bExecuting;
+	int m_xBaudRate;
+	int m_curSlvID;
+	int m_appAddress;
+	int m_blockSize;
+	int m_pageEraseTime;
+	int m_mbCtrlRegister;
+	bool m_forceAllParities;
 	std::string m_imgFile;
 
 	QStringList m_materialEeprom;
@@ -162,6 +275,9 @@ private:
 	double m_imgCRC32File;
 	QString m_imgMaterialFile;
 	QString m_imgBuildFile;
+	
+	ImgUploadStatus m_imgUpldProg;
+	QProcess m_qProcess;
 };
 
 /////////////////////////////////////////////////////////////////////////////

+ 2 - 5
qmlplugin/libgfativaflashplugin/gfativaflash_plugin.cpp

@@ -6,9 +6,6 @@ void TivaFlashPlugin::registerTypes(const char *uri)
 {
     // gfa.plugins.qml.tivaflash
     qmlRegisterType<TivaFlash>(uri, 1, 0, "TivaFlash");
-/*    qmlRegisterUncreatableType<Interface>(uri, 1, 0, "Interface", "return type only");
-    qmlRegisterUncreatableType<Inet>(uri, 1, 0, "Inet", "return type only");
-    qmlRegisterUncreatableType<Static>(uri, 1, 0, "Static", "return type only");
-    qmlRegisterUncreatableType<Dhcp>(uri, 1, 0, "Dhcp", "return type only");
-    qmlRegisterUncreatableType<IPv4Address>(uri, 1, 0, "IPv4Address", "return type only");*/
+    qmlRegisterUncreatableType<ImgUploadStatus>(uri, 1, 0, "ImgUploadStatus", "ImgUploadStatus is not creatable");
 }
+

+ 9 - 1
qmlplugin/libgfativaflashplugin/tagnames.h

@@ -35,7 +35,15 @@ typedef enum _PLUGIN_TAG_NUMBERS
 	PLUGIN_TAG_IMG_LENGTH_FILE,
 	PLUGIN_TAG_IMG_CRC32_FILE,
 	PLUGIN_TAG_IMG_MATERIAL_FILE,
-	PLUGIN_TAG_IMG_BUILD_FILE
+	PLUGIN_TAG_IMG_BUILD_FILE,
+
+	PLUGIN_TAG_UPLOAD_START_ERASE_FLASH,
+	PLUGIN_TAG_UPLOAD_END_ERASE_FLASH,
+	PLUGIN_TAG_UPLOAD_BLOCKS_START,
+	PLUGIN_TAG_UPLOAD_BLOCK,
+	PLUGIN_TAG_UPLOAD_BLOCKS_END,
+	PLUGIN_TAG_UPLOAD_ERROR
+
 }PLUGIN_TAG_NUMBERS;
 
 /////////////////////////////////////////////////////////////////////////////