Renamed all driver termination *_ShutDown() functions to the more logical name *_Disa...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / ISP / ISPProtocol.c
index 4f31b82..27e1cc9 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2010.
+     Copyright (C) Dean Camera, 2011.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -54,7 +54,7 @@ void ISPProtocol_EnterISPMode(void)
                uint8_t EnterProgBytes[4];
        } Enter_ISP_Params;
 
                uint8_t EnterProgBytes[4];
        } Enter_ISP_Params;
 
-       Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -68,15 +68,14 @@ void ISPProtocol_EnterISPMode(void)
        ISPProtocol_DelayMS(Enter_ISP_Params.ExecutionDelayMS);
        ISPTarget_EnableTargetISP();
 
        ISPProtocol_DelayMS(Enter_ISP_Params.ExecutionDelayMS);
        ISPTarget_EnableTargetISP();
 
+       ISPTarget_ChangeTargetResetLine(true);
+
        /* Continuously attempt to synchronize with the target until either the number of attempts specified
         * by the host has exceeded, or the the device sends back the expected response values */
        /* Continuously attempt to synchronize with the target until either the number of attempts specified
         * by the host has exceeded, or the the device sends back the expected response values */
-       while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus != STATUS_CMD_OK) && TimeoutTicksRemaining)
+       while (Enter_ISP_Params.SynchLoops-- && (ResponseStatus != STATUS_CMD_OK) && !(TimeoutExpired))
        {
                uint8_t ResponseBytes[4];
 
        {
                uint8_t ResponseBytes[4];
 
-               ISPTarget_ChangeTargetResetLine(true);
-               ISPProtocol_DelayMS(Enter_ISP_Params.PinStabDelayMS);
-
                for (uint8_t RByte = 0; RByte < sizeof(ResponseBytes); RByte++)
                {
                        ISPProtocol_DelayMS(Enter_ISP_Params.ByteDelay);
                for (uint8_t RByte = 0; RByte < sizeof(ResponseBytes); RByte++)
                {
                        ISPProtocol_DelayMS(Enter_ISP_Params.ByteDelay);
@@ -92,6 +91,7 @@ void ISPProtocol_EnterISPMode(void)
                {
                        ISPTarget_ChangeTargetResetLine(false);
                        ISPProtocol_DelayMS(Enter_ISP_Params.PinStabDelayMS);
                {
                        ISPTarget_ChangeTargetResetLine(false);
                        ISPProtocol_DelayMS(Enter_ISP_Params.PinStabDelayMS);
+                       ISPTarget_ChangeTargetResetLine(true);
                }
        }
 
                }
        }
 
@@ -109,7 +109,7 @@ void ISPProtocol_LeaveISPMode(void)
                uint8_t PostDelayMS;
        } Leave_ISP_Params;
 
                uint8_t PostDelayMS;
        } Leave_ISP_Params;
 
-       Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -145,7 +145,7 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
        } Write_Memory_Params;      // whole page and ACK the packet as fast as possible to prevent it from aborting
 
        Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
        } Write_Memory_Params;      // whole page and ACK the packet as fast as possible to prevent it from aborting
 
        Endpoint_Read_Stream_LE(&Write_Memory_Params, (sizeof(Write_Memory_Params) -
-                                                      sizeof(Write_Memory_Params.ProgData)), NO_STREAM_CALLBACK);
+                                                      sizeof(Write_Memory_Params.ProgData)), NULL);
        Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite);
 
        if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
        Write_Memory_Params.BytesToWrite = SwapEndian_16(Write_Memory_Params.BytesToWrite);
 
        if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))
@@ -160,7 +160,7 @@ void ISPProtocol_ProgramMemory(uint8_t V2Command)
                return;
        }
 
                return;
        }
 
-       Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -279,7 +279,7 @@ void ISPProtocol_ReadMemory(uint8_t V2Command)
                uint8_t  ReadMemoryCommand;
        } Read_Memory_Params;
 
                uint8_t  ReadMemoryCommand;
        } Read_Memory_Params;
 
-       Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Read_Memory_Params, sizeof(Read_Memory_Params), NULL);
        Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);
 
        Endpoint_ClearOUT();
        Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);
 
        Endpoint_ClearOUT();
@@ -353,7 +353,7 @@ void ISPProtocol_ChipErase(void)
                uint8_t EraseCommandBytes[4];
        } Erase_Chip_Params;
 
                uint8_t EraseCommandBytes[4];
        } Erase_Chip_Params;
 
-       Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -389,7 +389,7 @@ void ISPProtocol_ReadFuseLockSigOSCCAL(uint8_t V2Command)
                uint8_t ReadCommandBytes[4];
        } Read_FuseLockSigOSCCAL_Params;
 
                uint8_t ReadCommandBytes[4];
        } Read_FuseLockSigOSCCAL_Params;
 
-       Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -420,7 +420,7 @@ void ISPProtocol_WriteFuseLock(uint8_t V2Command)
                uint8_t WriteCommandBytes[4];
        } Write_FuseLockSig_Params;
 
                uint8_t WriteCommandBytes[4];
        } Write_FuseLockSig_Params;
 
-       Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -447,8 +447,8 @@ void ISPProtocol_SPIMulti(void)
                uint8_t TxData[255];
        } SPI_Multi_Params;
 
                uint8_t TxData[255];
        } SPI_Multi_Params;
 
-       Endpoint_Read_Stream_LE(&SPI_Multi_Params, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NO_STREAM_CALLBACK);
-       Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NO_STREAM_CALLBACK);
+       Endpoint_Read_Stream_LE(&SPI_Multi_Params, (sizeof(SPI_Multi_Params) - sizeof(SPI_Multi_Params.TxData)), NULL);
+       Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NULL);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -509,7 +509,7 @@ void ISPProtocol_SPIMulti(void)
  */
 void ISPProtocol_DelayMS(uint8_t DelayMS)
 {
  */
 void ISPProtocol_DelayMS(uint8_t DelayMS)
 {
-       while (DelayMS-- && TimeoutTicksRemaining)
+       while (DelayMS-- && !(TimeoutExpired))
          _delay_ms(1);
 }
 
          _delay_ms(1);
 }