Endpoint_Read_Stream_LE(&Enter_ISP_Params, sizeof(Enter_ISP_Params), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
uint8_t ResponseStatus = STATUS_CMD_FAILED;\r
for (uint8_t RByte = 0; RByte < sizeof(ResponseBytes); RByte++)\r
{\r
ISPProtocol_DelayMS(Enter_ISP_Params.ByteDelay);\r
- ResponseBytes[RByte] = SPI_Transfer(Enter_ISP_Params.EnterProgBytes[RByte]);\r
+ ResponseBytes[RByte] = SPI_TransferByte(Enter_ISP_Params.EnterProgBytes[RByte]);\r
}\r
\r
/* Check if polling disabled, or if the polled value matches the expected value */\r
Endpoint_Read_Stream_LE(&Leave_ISP_Params, sizeof(Leave_ISP_Params), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
/* Perform pre-exit delay, release the target /RESET, disable the SPI bus and perform the post-exit delay */\r
if (Write_Memory_Params.BytesToWrite > sizeof(Write_Memory_Params.ProgData))\r
{\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(V2Command);\r
Endpoint_Read_Stream_LE(&Write_Memory_Params.ProgData, Write_Memory_Params.BytesToWrite, NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
uint8_t ProgrammingStatus = STATUS_CMD_OK; \r
bool IsOddByte = (CurrentByte & 0x01);\r
uint8_t ByteToWrite = *(NextWriteByte++);\r
\r
- SPI_Send(Write_Memory_Params.ProgrammingCommands[0]);\r
- SPI_Send(CurrentAddress >> 8);\r
- SPI_Send(CurrentAddress & 0xFF);\r
- SPI_Send(ByteToWrite);\r
+ SPI_SendByte(Write_Memory_Params.ProgrammingCommands[0]);\r
+ SPI_SendByte(CurrentAddress >> 8);\r
+ SPI_SendByte(CurrentAddress & 0xFF);\r
+ SPI_SendByte(ByteToWrite);\r
\r
/* AVR FLASH addressing requires us to modify the write command based on if we are writing a high\r
* or low byte at the current word address */\r
/* If the current page must be committed, send the PROGRAM PAGE command to the target */\r
if (Write_Memory_Params.ProgrammingMode & PROG_MODE_COMMIT_PAGE_MASK)\r
{\r
- SPI_Send(Write_Memory_Params.ProgrammingCommands[1]);\r
- SPI_Send(StartAddress >> 8);\r
- SPI_Send(StartAddress & 0xFF);\r
- SPI_Send(0x00);\r
+ SPI_SendByte(Write_Memory_Params.ProgrammingCommands[1]);\r
+ SPI_SendByte(StartAddress >> 8);\r
+ SPI_SendByte(StartAddress & 0xFF);\r
+ SPI_SendByte(0x00);\r
\r
/* Check if polling is possible, if not switch to timed delay mode */\r
if (!(PollAddress))\r
bool IsOddByte = (CurrentByte & 0x01);\r
uint8_t ByteToWrite = *(NextWriteByte++);\r
\r
- SPI_Send(Write_Memory_Params.ProgrammingCommands[0]);\r
- SPI_Send(CurrentAddress >> 8);\r
- SPI_Send(CurrentAddress & 0xFF);\r
- SPI_Send(ByteToWrite);\r
+ SPI_SendByte(Write_Memory_Params.ProgrammingCommands[0]);\r
+ SPI_SendByte(CurrentAddress >> 8);\r
+ SPI_SendByte(CurrentAddress & 0xFF);\r
+ SPI_SendByte(ByteToWrite);\r
\r
/* AVR FLASH addressing requires us to modify the write command based on if we are writing a high\r
* or low byte at the current word address */\r
Read_Memory_Params.BytesToRead = SwapEndian_16(Read_Memory_Params.BytesToRead);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(V2Command);\r
for (uint16_t CurrentByte = 0; CurrentByte < Read_Memory_Params.BytesToRead; CurrentByte++)\r
{\r
/* Read the next byte from the desired memory space in the device */\r
- SPI_Send(Read_Memory_Params.ReadMemoryCommand);\r
- SPI_Send(CurrentAddress >> 8);\r
- SPI_Send(CurrentAddress & 0xFF);\r
- Endpoint_Write_Byte(SPI_Receive());\r
+ SPI_SendByte(Read_Memory_Params.ReadMemoryCommand);\r
+ SPI_SendByte(CurrentAddress >> 8);\r
+ SPI_SendByte(CurrentAddress & 0xFF);\r
+ Endpoint_Write_Byte(SPI_ReceiveByte());\r
\r
/* Check if the endpoint bank is currently full, if so send the packet */\r
if (!(Endpoint_IsReadWriteAllowed()))\r
Endpoint_Read_Stream_LE(&Erase_Chip_Params, sizeof(Erase_Chip_Params), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
uint8_t ResponseStatus = STATUS_CMD_OK;\r
\r
/* Send the chip erase commands as given by the host to the device */\r
for (uint8_t SByte = 0; SByte < sizeof(Erase_Chip_Params.EraseCommandBytes); SByte++)\r
- SPI_Send(Erase_Chip_Params.EraseCommandBytes[SByte]);\r
+ SPI_SendByte(Erase_Chip_Params.EraseCommandBytes[SByte]);\r
\r
/* Use appropriate command completion check as given by the host (delay or busy polling) */\r
if (!(Erase_Chip_Params.PollMethod))\r
Endpoint_Read_Stream_LE(&Read_FuseLockSigOSCCAL_Params, sizeof(Read_FuseLockSigOSCCAL_Params), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
uint8_t ResponseBytes[4];\r
\r
/* Send the Fuse or Lock byte read commands as given by the host to the device, store response */\r
for (uint8_t RByte = 0; RByte < sizeof(ResponseBytes); RByte++)\r
- ResponseBytes[RByte] = SPI_Transfer(Read_FuseLockSigOSCCAL_Params.ReadCommandBytes[RByte]);\r
+ ResponseBytes[RByte] = SPI_TransferByte(Read_FuseLockSigOSCCAL_Params.ReadCommandBytes[RByte]);\r
\r
Endpoint_Write_Byte(V2Command);\r
Endpoint_Write_Byte(STATUS_CMD_OK);\r
Endpoint_Read_Stream_LE(&Write_FuseLockSig_Params, sizeof(Write_FuseLockSig_Params), NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
/* Send the Fuse or Lock byte program commands as given by the host to the device */\r
for (uint8_t SByte = 0; SByte < sizeof(Write_FuseLockSig_Params.WriteCommandBytes); SByte++)\r
- SPI_Send(Write_FuseLockSig_Params.WriteCommandBytes[SByte]);\r
+ SPI_SendByte(Write_FuseLockSig_Params.WriteCommandBytes[SByte]);\r
\r
Endpoint_Write_Byte(V2Command);\r
Endpoint_Write_Byte(STATUS_CMD_OK);\r
Endpoint_Read_Stream_LE(&SPI_Multi_Params.TxData, SPI_Multi_Params.TxBytes, NO_STREAM_CALLBACK);\r
\r
Endpoint_ClearOUT();\r
+ Endpoint_SelectEndpoint(AVRISP_DATA_IN_EPNUM);\r
Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN);\r
\r
Endpoint_Write_Byte(CMD_SPI_MULTI);\r
while (CurrTxPos < SPI_Multi_Params.RxStartAddr)\r
{\r
if (CurrTxPos < SPI_Multi_Params.TxBytes)\r
- SPI_Send(SPI_Multi_Params.TxData[CurrTxPos]);\r
+ SPI_SendByte(SPI_Multi_Params.TxData[CurrTxPos]);\r
else\r
- SPI_Send(0);\r
+ SPI_SendByte(0);\r
\r
CurrTxPos++;\r
}\r
while (CurrRxPos < SPI_Multi_Params.RxBytes)\r
{\r
if (CurrTxPos < SPI_Multi_Params.TxBytes)\r
- Endpoint_Write_Byte(SPI_Transfer(SPI_Multi_Params.TxData[CurrTxPos++]));\r
+ Endpoint_Write_Byte(SPI_TransferByte(SPI_Multi_Params.TxData[CurrTxPos++]));\r
else\r
- Endpoint_Write_Byte(SPI_Receive());\r
+ Endpoint_Write_Byte(SPI_ReceiveByte());\r
\r
/* Check to see if we have filled the endpoint bank and need to send the packet */\r
if (!(Endpoint_IsReadWriteAllowed()))\r