forked from mfulz_github/qmk_firmware
Rename new CDC class bootloader NO_LOCK_BYTE_SUPPORT compile time option to NO_LOCK_BYTE_WRITE_SUPPORT as reads are still permitted.
Clean up CDC bootloader command processing code.
This commit is contained in:
parent
475323e400
commit
40db485c79
|
@ -332,21 +332,31 @@ void CDC_Task(void)
|
||||||
Endpoint_SelectEndpoint(CDC_RX_EPNUM);
|
Endpoint_SelectEndpoint(CDC_RX_EPNUM);
|
||||||
|
|
||||||
/* Check if endpoint has a command in it sent from the host */
|
/* Check if endpoint has a command in it sent from the host */
|
||||||
if (Endpoint_IsOUTReceived())
|
if (!(Endpoint_IsOUTReceived()))
|
||||||
{
|
return;
|
||||||
|
|
||||||
/* Read in the bootloader command (first byte sent from host) */
|
/* Read in the bootloader command (first byte sent from host) */
|
||||||
uint8_t Command = FetchNextCommandByte();
|
uint8_t Command = FetchNextCommandByte();
|
||||||
|
|
||||||
if ((Command == 'L') || (Command == 'P') || (Command == 'T') || (Command == 'E'))
|
|
||||||
{
|
|
||||||
if (Command == 'E')
|
if (Command == 'E')
|
||||||
|
{
|
||||||
RunBootloader = false;
|
RunBootloader = false;
|
||||||
|
|
||||||
|
/* Send confirmation byte back to the host */
|
||||||
|
WriteNextResponseByte('\r');
|
||||||
|
}
|
||||||
else if (Command == 'T')
|
else if (Command == 'T')
|
||||||
|
{
|
||||||
FetchNextCommandByte();
|
FetchNextCommandByte();
|
||||||
|
|
||||||
/* Send confirmation byte back to the host */
|
/* Send confirmation byte back to the host */
|
||||||
WriteNextResponseByte('\r');
|
WriteNextResponseByte('\r');
|
||||||
}
|
}
|
||||||
|
else if ((Command == 'L') || (Command == 'P'))
|
||||||
|
{
|
||||||
|
/* Send confirmation byte back to the host */
|
||||||
|
WriteNextResponseByte('\r');
|
||||||
|
}
|
||||||
else if (Command == 't')
|
else if (Command == 't')
|
||||||
{
|
{
|
||||||
/* Return ATMEGA128 part code - this is only to allow AVRProg to use the bootloader */
|
/* Return ATMEGA128 part code - this is only to allow AVRProg to use the bootloader */
|
||||||
|
@ -392,20 +402,18 @@ void CDC_Task(void)
|
||||||
else if (Command == 'e')
|
else if (Command == 'e')
|
||||||
{
|
{
|
||||||
/* Clear the application section of flash */
|
/* Clear the application section of flash */
|
||||||
for (uint32_t CurrFlashAddress = 0; CurrFlashAddress < BOOT_START_ADDR; CurrFlashAddress++)
|
for (uint32_t CurrFlashAddress = 0; CurrFlashAddress < BOOT_START_ADDR; CurrFlashAddress += SPM_PAGESIZE)
|
||||||
{
|
{
|
||||||
boot_page_erase(CurrFlashAddress);
|
boot_page_erase(CurrFlashAddress);
|
||||||
boot_spm_busy_wait();
|
boot_spm_busy_wait();
|
||||||
boot_page_write(CurrFlashAddress);
|
boot_page_write(CurrFlashAddress);
|
||||||
boot_spm_busy_wait();
|
boot_spm_busy_wait();
|
||||||
|
|
||||||
CurrFlashAddress += SPM_PAGESIZE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Send confirmation byte back to the host */
|
/* Send confirmation byte back to the host */
|
||||||
WriteNextResponseByte('\r');
|
WriteNextResponseByte('\r');
|
||||||
}
|
}
|
||||||
#if !defined(NO_LOCK_BYTE_SUPPORT)
|
#if !defined(NO_LOCK_BYTE_WRITE_SUPPORT)
|
||||||
else if (Command == 'l')
|
else if (Command == 'l')
|
||||||
{
|
{
|
||||||
/* Set the lock bits to those given by the host */
|
/* Set the lock bits to those given by the host */
|
||||||
|
@ -550,5 +558,4 @@ void CDC_Task(void)
|
||||||
/* Acknowledge the command from the host */
|
/* Acknowledge the command from the host */
|
||||||
Endpoint_ClearOUT();
|
Endpoint_ClearOUT();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -82,7 +82,7 @@
|
||||||
* to be made using the block-level commands.
|
* to be made using the block-level commands.
|
||||||
* </tr>
|
* </tr>
|
||||||
* <tr>
|
* <tr>
|
||||||
* <td>NO_LOCK_BYTE_SUPPORT</td>
|
* <td>NO_LOCK_BYTE_WRITE_SUPPORT</td>
|
||||||
* <td>Makefile LUFA_OPTS</td>
|
* <td>Makefile LUFA_OPTS</td>
|
||||||
* <td>Define to disable lock byte write support in the bootloader, preventing the lock bits from being set progmatically.
|
* <td>Define to disable lock byte write support in the bootloader, preventing the lock bits from being set progmatically.
|
||||||
* </tr>
|
* </tr>
|
||||||
|
|
|
@ -127,7 +127,7 @@ LUFA_OPTS += -D NO_SOF_EVENTS
|
||||||
#LUFA_OPTS += -D NO_BLOCK_SUPPORT
|
#LUFA_OPTS += -D NO_BLOCK_SUPPORT
|
||||||
#LUFA_OPTS += -D NO_EEPROM_BYTE_SUPPORT
|
#LUFA_OPTS += -D NO_EEPROM_BYTE_SUPPORT
|
||||||
#LUFA_OPTS += -D NO_FLASH_BYTE_SUPPORT
|
#LUFA_OPTS += -D NO_FLASH_BYTE_SUPPORT
|
||||||
#LUFA_OPTS += -D NO_LOCK_BYTE_SUPPORT
|
#LUFA_OPTS += -D NO_LOCK_BYTE_WRITE_SUPPORT
|
||||||
|
|
||||||
|
|
||||||
# Create the LUFA source path variables by including the LUFA root makefile
|
# Create the LUFA source path variables by including the LUFA root makefile
|
||||||
|
|
|
@ -30,9 +30,9 @@
|
||||||
* - Added default test tone generation mode to the Device mode AudioInput demos
|
* - Added default test tone generation mode to the Device mode AudioInput demos
|
||||||
* - Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management
|
* - Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management
|
||||||
* tasks for each driver is called
|
* tasks for each driver is called
|
||||||
* - Added standard keyboard HID report scancode defines (thanks to László Monda)
|
* - Added standard keyboard HID report scancode defines (thanks to Laszlo Monda)
|
||||||
* - Added new Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() and Endpoint_AbortPendingIN() functions
|
* - Added new Pipe_GetBusyBanks(), Endpoint_GetBusyBanks() and Endpoint_AbortPendingIN() functions
|
||||||
* - Added new NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT and NO_LOCK_BYTE_SUPPORT compile time options to the
|
* - Added new NO_BLOCK_SUPPORT, NO_EEPROM_BYTE_SUPPORT, NO_FLASH_BYTE_SUPPORT and NO_LOCK_BYTE_WRITE_SUPPORT compile time options to the
|
||||||
* CDC class bootloader
|
* CDC class bootloader
|
||||||
*
|
*
|
||||||
* <b>Changed:</b>
|
* <b>Changed:</b>
|
||||||
|
|
Loading…
Reference in New Issue