Fix error in AVRISP programmer when repeatedly using PDI mode via the hardware USART...
[pub/USBasp.git] / Projects / AVRISP / Lib / PDIProtocol.c
index 24ce26c..46d6dd4 100644 (file)
@@ -181,7 +181,8 @@ static void PDIProtocol_Erase(void)
        else if (Erase_XPROG_Params.MemoryType == XPRG_ERASE_USERSIG)\r
          EraseCommand = NVM_CMD_ERASEUSERSIG;\r
        \r
-       NVMTarget_EraseMemory(EraseCommand, Erase_XPROG_Params.Address);\r
+       if (!(NVMTarget_EraseMemory(EraseCommand, Erase_XPROG_Params.Address)))\r
+         ReturnStatus = XPRG_ERR_TIMEOUT;\r
        \r
        Endpoint_Write_Byte(CMD_XPROG);\r
        Endpoint_Write_Byte(XPRG_CMD_ERASE);\r
@@ -241,7 +242,9 @@ static void PDIProtocol_ReadMemory(void)
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
 \r
        uint8_t ReadBuffer[ReadMemory_XPROG_Params.Length];\r
-       NVMTarget_ReadMemory(ReadMemory_XPROG_Params.Address, ReadBuffer, ReadMemory_XPROG_Params.Length);\r
+       \r
+       if (!(NVMTarget_ReadMemory(ReadMemory_XPROG_Params.Address, ReadBuffer, ReadMemory_XPROG_Params.Length)))\r
+         ReturnStatus = XPRG_ERR_TIMEOUT;\r
 \r
        Endpoint_Write_Byte(CMD_XPROG);\r
        Endpoint_Write_Byte(XPRG_CMD_READ_MEM);\r
@@ -279,7 +282,8 @@ static void PDIProtocol_ReadCRC(void)
        else\r
          CRCCommand = NVM_CMD_FLASHCRC;\r
        \r
-       MemoryCRC = NVMTarget_GetMemoryCRC(CRCCommand);\r
+       if (!(NVMTarget_GetMemoryCRC(CRCCommand, &MemoryCRC)))\r
+         ReturnStatus = XPRG_ERR_TIMEOUT;\r
        \r
        Endpoint_Write_Byte(CMD_XPROG);\r
        Endpoint_Write_Byte(XPRG_CMD_CRC);\r