    [OnInitDialog][MP_MODE_ON] LOCAL_MODE_MP
    [GetCurrentProductIdxFromTxt] currentProduct: 13, currentPidIdx: 2
    [checkProductListExist] Check: FTP_XLS
    [checkProductListExist] => Exist
    [LoadExcelFile] File: .//DATA/List.dll
    [OnInitDialog][MP_MODE_ON] mpModeIsSelected == true
    [OnPaint] STATUS_OF_PNG: -101
    => GUI_SAY_WAITING_FOR_VIDPID
    [OnPaint] STATUS_OF_PNG: -101
    => GUI_SAY_WAITING_FOR_VIDPID
    [OnBnClickedButton2][GUI_SAY_WAITING_FOR_VIDPID] Clicked
    [OnPaint] STATUS_OF_PNG: -101
    [DownloadProductListFromFtp] updateMode != SERVER_MODE, checkProductListExist()
    [checkProductListExist] checkProductListExistChecked == true
    => GUI_SAY_WAITING_FOR_VIDPID
    [searchVidPidFromExcel] =============================================================
    [searchVidPidFromExcel] retry: 0, retryMax: 3
    [searchVidPidFromExcel] =============================================================
    [searchVidPidFromExcel] PID-1, Row: 1, Col: 2, VID: 054C, PID: 05C4
    [OpenDeviceUsb][Success] Vid: 054c, Pid: 05c4
     => Found
    [searchVidPidFromExcel] =============================================================
    [NewGetVersion] START
    [NewGetVersion] count: 1, retry: 20
    [NewGetVersion] Run_WriteFileB() == TRUE, retryStatus = read
    [Run_ReadFileB][SUCCESS] Run_ReadFileB() return TRUE
    [NewGetVersion] Run_ReadFileB() == TRUE
    [NewGetVersion][ERROR] NOT ZP...
    [NewGetVersion] count: 2, retry: 20
    [Run_ReadFileB][SUCCESS] Run_ReadFileB() return TRUE
    [NewGetVersion] Run_ReadFileB() == TRUE
    [NewGetVersion][SUCCESS] NewGetVersion Done, newGetVersionReadIdx: 48
    [OpenDeviceUsb][Success] Vid: 054c, Pid: 05c4
    [NewGetVersion] START
    [NewGetVersion] count: 1, retry: 20
    [NewGetVersion] Run_WriteFileB() == TRUE, retryStatus = read
    [Run_ReadFileB][SUCCESS] Run_ReadFileB() return TRUE
    [NewGetVersion] Run_ReadFileB() == TRUE
    [NewGetVersion][SUCCESS] NewGetVersion Done, newGetVersionReadIdx: 48
    [CheckIcNumFromAPROM] productIdx: 1
    [CheckIcNumFromAPROM] serverIc: ZPJ21011, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 2
    [CheckIcNumFromAPROM] serverIc: ZPJ21050, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 3
    [CheckIcNumFromAPROM] serverIc: ZPJ21070, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 4
    [CheckIcNumFromAPROM] serverIc: ZPJ21071, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 5
    [CheckIcNumFromAPROM] serverIc: ZPJ21072, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 6
    [CheckIcNumFromAPROM] serverIc: ZPJ21073, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 7
    [CheckIcNumFromAPROM] serverIc: ZPJ210F0, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 8
    [CheckIcNumFromAPROM] serverIc: ZPJ210J0, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 9
    [CheckIcNumFromAPROM] serverIc: ZPJ210J1, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 10
    [CheckIcNumFromAPROM] serverIc: ZPJ210J2, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 11
    [CheckIcNumFromAPROM] serverIc: ZPJ210Q0, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 12
    [CheckIcNumFromAPROM] serverIc: ZPJ210Q1, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 0, deviceIc[5]: 1
    [CheckIcNumOneByOne][ERROR] This device's IC is incorrect!
    [CheckIcNumFromAPROM] productIdx: 13
    [CheckIcNumFromAPROM] serverIc: ZPJ211B0, strlen(serverIc): 8
    [CheckIcNumFromAPROM] deviceIc: ZPJ211B0, strlen(deviceIc): 8
    [CheckIcNumOneByOne] serverIc[0]: Z, deviceIc[0]: Z
    [CheckIcNumOneByOne] serverIc[1]: P, deviceIc[1]: P
    [CheckIcNumOneByOne] serverIc[2]: J, deviceIc[2]: J
    [CheckIcNumOneByOne] serverIc[3]: 2, deviceIc[3]: 2
    [CheckIcNumOneByOne] serverIc[4]: 1, deviceIc[4]: 1
    [CheckIcNumOneByOne] serverIc[5]: 1, deviceIc[5]: 1
    [CheckIcNumOneByOne] serverIc[6]: B, deviceIc[6]: B
    [CheckIcNumOneByOne] serverIc[7]: 0, deviceIc[7]: 0
    [CheckIcNumOneByOne][SUCCESS] This device's IC is correct!
    [AdjustCurrentProductFromAPROM] FOUND: currentProduct == 13
    [SetUpdateProcessAndDriver] Install driver success
    [OnTimer][GUI_SAY_WAITING_FOR_VIDPID] NEW_P4_PROCESS sign found
    [NewGetVersion] START
    [NewGetVersion] count: 1, retry: 20
    [NewGetVersion] Run_WriteFileB() == TRUE, retryStatus = read
    [Run_ReadFileB][SUCCESS] Run_ReadFileB() return TRUE
    [NewGetVersion] Run_ReadFileB() == TRUE
    [NewGetVersion][SUCCESS] NewGetVersion Done, newGetVersionReadIdx: 48
    [CheckAPRomVerAndLDRomChecksumToUpdate] ReadReportBuffer[58]: 0x10, serverVer: 0x07
    [CheckAPRomVer] deviceAPRomVer(0x0010) != serverVer(0x0007)
    [OnPaint] STATUS_OF_PNG: -102
    => GUI_SAY_CHECKING_VIDPID
    [OnTimer][GUI_SAY_CHECKING_VIDPID] isFindDevice! goto VIDPID_SEARCH_END
    [OnPaint] STATUS_OF_PNG: -102
    => GUI_SAY_CHECKING_VIDPID
    [MultipleVidPid] adjustCurrentProductDone == true, currentProduct == 13, don't need to checkout
    [GetVersionAndAPRomChecksumByIdx] FW_HEX: .//DATA/tmp_V10.fw
    [GetVersionAndAPRomChecksumByIdx] FTP_HEX_VER: 0x07
    [GetVersionAndAPRomChecksumByIdx] APROM_CKSUM_SERVER: 0x0000 (Excel Value: )
    [OnTimer][GUI_SAY_CHECKING_VIDPID] Note: NEW_P4_PROCESS
    [OnPaint] STATUS_OF_PNG: -103
    => GUI_SAY_DOWNLOAD_FIRMWARE
    [OnTimer][GUI_SAY_DOWNLOAD_FIRMWARE] hexFileDownloadStatus == 0
    [GetFwFileFromServer] In new thread!
    [GetFwFileFromServerSync] Need download: ZPJ210T0_V14_20190723_1050.fw
    [GetFwFileFromServerSync] File has already downloaded
    [OnTimer][GUI_SAY_DOWNLOAD_FIRMWARE] hexFileDownloadStatus == HEX_FILE_DOWNLOAD_SUCCESS
    [OnPaint] STATUS_OF_PNG: -104
    => GUI_SAY_PLUG (Firmware loaded)
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] 0
    [EnterLDRomManually][SUCCESS] Run_WriteFileB() == TRUE, useNewBleUpdateProcess = true
    [OnPaint] STATUS_OF_PNG: -104
    => GUI_SAY_PLUG (Firmware loaded)
    [checkNewP4Connected] checkNewP4Connected in new thread
    [PRODUCTION_NOTIFY][DT_DEVICE] 0 device found
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECT_CHECKING
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECT_CHECKING
    [OnTimer][GUI_SAY_PLUG]
    [checkNewP4Connected] g_nDeviceCount == 0
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_NOT_CONNECTED, retry
    [checkNewP4Connected] checkNewP4Connected in new thread
    [OnTimer][GUI_SAY_PLUG]
    [PRODUCTION_NOTIFY][DT_DEVICE] 1 device found
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECT_CHECKING
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECT_CHECKING
    [OnTimer][GUI_SAY_PLUG]
    [checkNewP4Connected] g_nDeviceCount > 0
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECT_CHECKING
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_CONNECTED
    [OnTimer][GUI_SAY_PLUG]
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_UPDATE_PROCESS_READY
    [OnPaint] STATUS_OF_PNG: -106
    => GUI_SAY_UPDATING
    [OnPaint] STATUS_OF_PNG: -106
    => GUI_SAY_UPDATING
    [updateAll] Now reading firmware
    [PRODUCTION_NOTIFY][DT_DEVICE] 1 device found
    [updateAll] g_nDeviceCount > 0, Now downloading firmware
    [PRODUCTION_NOTIFY][DT_START] Start 1009
    [PRODUCTION_NOTIFY][DT_STATUS] Prepare...
    [updateAll] while(g_bIsUpgrading == TRUE): 1 sec
    [PRODUCTION_NOTIFY][DT_STATUS] SCRIPT_RUNNING ...
    [PRODUCTION_NOTIFY][DT_PROGRESS] 05%
    [PRODUCTION_NOTIFY][DT_PROGRESS] 35%
    [PRODUCTION_NOTIFY][DT_STATUS] (512K) Erase Flash ...
    [PRODUCTION_NOTIFY][DT_PROGRESS] 45%
    [updateAll] while(g_bIsUpgrading == TRUE): 2 sec
    [PRODUCTION_NOTIFY][DT_STATUS] (512K) DOWNLOAD WFILE ...
    [updateAll] while(g_bIsUpgrading == TRUE): 3 sec
    [updateAll] while(g_bIsUpgrading == TRUE): 4 sec
    [PRODUCTION_NOTIFY][DT_PROGRESS] 95%
    [PRODUCTION_NOTIFY][DT_STATUS] (512K) TRANSFER OVER ...
    [PRODUCTION_NOTIFY][DT_STATUS] Successful
    [PRODUCTION_NOTIFY][DT_COMPLETE] 1009: Successful
    [PRODUCTION_NOTIFY][DT_COMPLETE] OnComplete
    [PRODUCTION_NOTIFY][DT_DEVICE] 0 device found
    [updateAll] while(g_bIsUpgrading == TRUE): 5 sec
    [OnTimer][GUI_SAY_PLUG][NEW_P4_20190508][NEW_PROCESS] NEW_P4_UPDATE_PROCESS_DONE
    [updateAll] while(g_bIsUpgrading == TRUE): 5 sec
    [OnPaint] STATUS_OF_PNG: -107
    => GUI_SAY_COMPLETE
    [OnPaint] STATUS_OF_PNG: -107
    => GUI_SAY_COMPLETE
    [OnBnClickedCancel][Exit]STATUS_OF_PNG: -107