Fixed AVRISP-MKII Clone timing out on long programming commands such as programming...
[pub/USBasp.git] / Projects / AVRISP-MKII / Lib / XPROG / XPROGProtocol.c
index 778a7df..529510f 100644 (file)
@@ -60,7 +60,7 @@ void XPROGProtocol_SetMode(void)
        struct
        {
                uint8_t Protocol;
-       } ATTR_PACKED SetMode_XPROG_Params;
+       } SetMode_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&SetMode_XPROG_Params, sizeof(SetMode_XPROG_Params), NULL);
 
@@ -143,7 +143,7 @@ static void XPROGProtocol_LeaveXPROGMode(void)
          TINYNVM_DisableTPI();
 
        #if defined(XCK_RESCUE_CLOCK_ENABLE) && defined(ENABLE_ISP_PROTOCOL)
-       /* If the XCK rescue clock option is enabled, we need to restart it once the 
+       /* If the XCK rescue clock option is enabled, we need to restart it once the
         * XPROG mode has been exited, since the XPROG protocol stops it after use. */
        ISPTarget_ConfigureRescueClock();
        #endif
@@ -163,10 +163,10 @@ static void XPROGProtocol_Erase(void)
        {
                uint8_t  MemoryType;
                uint32_t Address;
-       } ATTR_PACKED Erase_XPROG_Params;
+       } Erase_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&Erase_XPROG_Params, sizeof(Erase_XPROG_Params), NULL);
-       Erase_XPROG_Params.Address = be32_to_cpu(Erase_XPROG_Params.Address);
+       Erase_XPROG_Params.Address = SwapEndian_32(Erase_XPROG_Params.Address);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -242,12 +242,12 @@ static void XPROGProtocol_WriteMemory(void)
                uint32_t Address;
                uint16_t Length;
                uint8_t  ProgData[256];
-       } ATTR_PACKED WriteMemory_XPROG_Params;
+       } WriteMemory_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params, (sizeof(WriteMemory_XPROG_Params) -
                                                            sizeof(WriteMemory_XPROG_Params).ProgData), NULL);
-       WriteMemory_XPROG_Params.Address = be32_to_cpu(WriteMemory_XPROG_Params.Address);
-       WriteMemory_XPROG_Params.Length  = be16_to_cpu(WriteMemory_XPROG_Params.Length);
+       WriteMemory_XPROG_Params.Address = SwapEndian_32(WriteMemory_XPROG_Params.Address);
+       WriteMemory_XPROG_Params.Length  = SwapEndian_16(WriteMemory_XPROG_Params.Length);
        Endpoint_Read_Stream_LE(&WriteMemory_XPROG_Params.ProgData, WriteMemory_XPROG_Params.Length, NULL);
 
        // The driver will terminate transfers that are a round multiple of the endpoint bank in size with a ZLP, need
@@ -258,7 +258,7 @@ static void XPROGProtocol_WriteMemory(void)
                Endpoint_ClearOUT();
                Endpoint_WaitUntilReady();
        }
-       
+
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
        Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);
@@ -335,11 +335,11 @@ static void XPROGProtocol_ReadMemory(void)
                uint8_t  MemoryType;
                uint32_t Address;
                uint16_t Length;
-       } ATTR_PACKED ReadMemory_XPROG_Params;
+       } ReadMemory_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&ReadMemory_XPROG_Params, sizeof(ReadMemory_XPROG_Params), NULL);
-       ReadMemory_XPROG_Params.Address = be32_to_cpu(ReadMemory_XPROG_Params.Address);
-       ReadMemory_XPROG_Params.Length  = be16_to_cpu(ReadMemory_XPROG_Params.Length);
+       ReadMemory_XPROG_Params.Address = SwapEndian_32(ReadMemory_XPROG_Params.Address);
+       ReadMemory_XPROG_Params.Length  = SwapEndian_16(ReadMemory_XPROG_Params.Length);
 
        Endpoint_ClearOUT();
        Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);
@@ -380,7 +380,7 @@ static void XPROGProtocol_ReadCRC(void)
        struct
        {
                uint8_t CRCType;
-       } ATTR_PACKED ReadCRC_XPROG_Params;
+       } ReadCRC_XPROG_Params;
 
        Endpoint_Read_Stream_LE(&ReadCRC_XPROG_Params, sizeof(ReadCRC_XPROG_Params), NULL);
 
@@ -444,10 +444,10 @@ static void XPROGProtocol_SetParam(void)
        switch (XPROGParam)
        {
                case XPRG_PARAM_NVMBASE:
-                       XPROG_Param_NVMBase = Endpoint_Read_32_BE();
+                       XPROG_Param_NVMBase       = Endpoint_Read_32_BE();
                        break;
                case XPRG_PARAM_EEPPAGESIZE:
-                       XPROG_Param_EEPageSize = Endpoint_Read_16_BE();
+                       XPROG_Param_EEPageSize    = Endpoint_Read_16_BE();
                        break;
                case XPRG_PARAM_NVMCMD_REG:
                        XPROG_Param_NVMCMDRegAddr = Endpoint_Read_8();