mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-17 13:12:08 +00:00
Removed unused line encoding data and control requests from the CDC Bootloader code, to save space.
This commit is contained in:
parent
54e69dbee1
commit
885170f5b4
@ -36,17 +36,6 @@
|
|||||||
#define INCLUDE_FROM_BOOTLOADERCDC_C
|
#define INCLUDE_FROM_BOOTLOADERCDC_C
|
||||||
#include "BootloaderCDC.h"
|
#include "BootloaderCDC.h"
|
||||||
|
|
||||||
/** Line coding options for the virtual serial port. Although the virtual serial port data is never
|
|
||||||
* sent through a physical serial port, the line encoding data must still be read and preserved from
|
|
||||||
* the host, or the host will detect a problem and fail to open the port. This structure contains the
|
|
||||||
* current encoding options, including baud rate, character format, parity mode and total number of
|
|
||||||
* bits in each data chunk.
|
|
||||||
*/
|
|
||||||
CDC_Line_Coding_t LineCoding = { .BaudRateBPS = 9600,
|
|
||||||
.CharFormat = OneStopBit,
|
|
||||||
.ParityType = Parity_None,
|
|
||||||
.DataBits = 8 };
|
|
||||||
|
|
||||||
/** Current address counter. This stores the current address of the FLASH or EEPROM as set by the host,
|
/** Current address counter. This stores the current address of the FLASH or EEPROM as set by the host,
|
||||||
* and is used when reading or writing to the AVRs memory (either FLASH or EEPROM depending on the issued
|
* and is used when reading or writing to the AVRs memory (either FLASH or EEPROM depending on the issued
|
||||||
* command.)
|
* command.)
|
||||||
@ -124,63 +113,6 @@ void EVENT_USB_Device_ConfigurationChanged(void)
|
|||||||
ENDPOINT_BANK_SINGLE);
|
ENDPOINT_BANK_SINGLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Event handler for the USB_UnhandledControlRequest event. This is used to catch standard and class specific
|
|
||||||
* control requests that are not handled internally by the USB library, so that they can be handled appropriately
|
|
||||||
* for the application.
|
|
||||||
*/
|
|
||||||
void EVENT_USB_Device_UnhandledControlRequest(void)
|
|
||||||
{
|
|
||||||
uint8_t* LineCodingData = (uint8_t*)&LineCoding;
|
|
||||||
|
|
||||||
/* Process CDC specific control requests */
|
|
||||||
switch (USB_ControlRequest.bRequest)
|
|
||||||
{
|
|
||||||
case REQ_GetLineEncoding:
|
|
||||||
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
|
|
||||||
{
|
|
||||||
Endpoint_ClearSETUP();
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < sizeof(LineCoding); i++)
|
|
||||||
Endpoint_Write_Byte(*(LineCodingData++));
|
|
||||||
|
|
||||||
Endpoint_ClearIN();
|
|
||||||
|
|
||||||
Endpoint_ClearStatusStage();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case REQ_SetLineEncoding:
|
|
||||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
|
||||||
{
|
|
||||||
Endpoint_ClearSETUP();
|
|
||||||
|
|
||||||
while (!(Endpoint_IsOUTReceived()))
|
|
||||||
{
|
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (uint8_t i = 0; i < sizeof(LineCoding); i++)
|
|
||||||
*(LineCodingData++) = Endpoint_Read_Byte();
|
|
||||||
|
|
||||||
Endpoint_ClearOUT();
|
|
||||||
|
|
||||||
Endpoint_ClearStatusStage();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case REQ_SetControlLineState:
|
|
||||||
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
|
|
||||||
{
|
|
||||||
Endpoint_ClearSETUP();
|
|
||||||
|
|
||||||
Endpoint_ClearStatusStage();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Reads or writes a block of EEPROM or FLASH memory to or from the appropriate CDC data endpoint, depending
|
/** Reads or writes a block of EEPROM or FLASH memory to or from the appropriate CDC data endpoint, depending
|
||||||
* on the AVR910 protocol command issued.
|
* on the AVR910 protocol command issued.
|
||||||
*
|
*
|
||||||
@ -339,7 +271,7 @@ static void WriteNextResponseByte(const uint8_t Response)
|
|||||||
Endpoint_ClearIN();
|
Endpoint_ClearIN();
|
||||||
|
|
||||||
while (!(Endpoint_IsINReady()))
|
while (!(Endpoint_IsINReady()))
|
||||||
{
|
{
|
||||||
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
if (USB_DeviceState == DEVICE_STATE_Unattached)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -367,7 +299,7 @@ void CDC_Task(void)
|
|||||||
{
|
{
|
||||||
if (Command == 'E')
|
if (Command == 'E')
|
||||||
RunBootloader = false;
|
RunBootloader = false;
|
||||||
if (Command == 'T')
|
else if (Command == 'T')
|
||||||
FetchNextCommandByte();
|
FetchNextCommandByte();
|
||||||
|
|
||||||
/* Send confirmation byte back to the host */
|
/* Send confirmation byte back to the host */
|
||||||
@ -377,7 +309,6 @@ void CDC_Task(void)
|
|||||||
{
|
{
|
||||||
/* 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 */
|
||||||
WriteNextResponseByte(0x44);
|
WriteNextResponseByte(0x44);
|
||||||
|
|
||||||
WriteNextResponseByte(0x00);
|
WriteNextResponseByte(0x00);
|
||||||
}
|
}
|
||||||
else if (Command == 'a')
|
else if (Command == 'a')
|
||||||
|
@ -49,22 +49,7 @@
|
|||||||
|
|
||||||
#include <LUFA/Drivers/USB/USB.h>
|
#include <LUFA/Drivers/USB/USB.h>
|
||||||
|
|
||||||
/* Macros: */
|
/* Macros: */
|
||||||
/** CDC Class Specific request to get the line encoding on a CDC-ACM virtual serial port, including the
|
|
||||||
* baud rate, parity, stop bits and data bits.
|
|
||||||
*/
|
|
||||||
#define REQ_GetLineEncoding 0x21
|
|
||||||
|
|
||||||
/** CDC Class Specific request to set the line encoding on a CDC-ACM virtual serial port, including the
|
|
||||||
* baud rate, parity, stop bits and data bits.
|
|
||||||
*/
|
|
||||||
#define REQ_SetLineEncoding 0x20
|
|
||||||
|
|
||||||
/** CDC Class Specific request to set the state of the serial handshake lines (such as DCD and RTS) on
|
|
||||||
* a CDC-ACM virtual serial port.
|
|
||||||
*/
|
|
||||||
#define REQ_SetControlLineState 0x22
|
|
||||||
|
|
||||||
/** Version major of the CDC bootloader. */
|
/** Version major of the CDC bootloader. */
|
||||||
#define BOOTLOADER_VERSION_MAJOR 0x01
|
#define BOOTLOADER_VERSION_MAJOR 0x01
|
||||||
|
|
||||||
@ -83,43 +68,12 @@
|
|||||||
/* Type Defines: */
|
/* Type Defines: */
|
||||||
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
|
/** Type define for a non-returning pointer to the start of the loaded application in flash memory. */
|
||||||
typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
|
typedef void (*AppPtr_t)(void) ATTR_NO_RETURN;
|
||||||
|
|
||||||
/** Type define for the CDC-ACM virtual serial port line encoding options, including baud rate, format, parity
|
|
||||||
* and size of each data chunk in bits.
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
uint32_t BaudRateBPS; /**< Baud rate in BPS */
|
|
||||||
uint8_t CharFormat; /**< Character format, an entry from the BootloaderCDC_CDC_LineCodingFormats_t enum */
|
|
||||||
uint8_t ParityType; /**< Parity mode, an entry from the BootloaderCDC_CDC_LineCodeingParity_t enum */
|
|
||||||
uint8_t DataBits; /**< Size of each data chunk, in bits */
|
|
||||||
} CDC_Line_Coding_t;
|
|
||||||
|
|
||||||
/* Enums: */
|
|
||||||
/** Enum for the possible line encoding formats on a CDC-ACM virtual serial port */
|
|
||||||
enum BootloaderCDC_CDC_LineCodingFormats_t
|
|
||||||
{
|
|
||||||
OneStopBit = 0, /**< Single stop bit */
|
|
||||||
OneAndAHalfStopBits = 1, /**< 1.5 stop bits */
|
|
||||||
TwoStopBits = 2, /**< Two stop bits */
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Enum for the possible parity modes on a CDC-ACM virtual serial port */
|
|
||||||
enum BootloaderCDC_CDC_LineCodingParity_t
|
|
||||||
{
|
|
||||||
Parity_None = 0, /**< No data parity checking */
|
|
||||||
Parity_Odd = 1, /**< Odd data parity checking */
|
|
||||||
Parity_Even = 2, /**< Even data parity checking */
|
|
||||||
Parity_Mark = 3, /**< Mark data parity checking */
|
|
||||||
Parity_Space = 4, /**< Space data parity checking */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Function Prototypes: */
|
/* Function Prototypes: */
|
||||||
void CDC_Task(void);
|
void CDC_Task(void);
|
||||||
void SetupHardware(void);
|
void SetupHardware(void);
|
||||||
|
|
||||||
void EVENT_USB_Device_ConfigurationChanged(void);
|
void EVENT_USB_Device_ConfigurationChanged(void);
|
||||||
void EVENT_USB_Device_UnhandledControlRequest(void);
|
|
||||||
|
|
||||||
#if defined(INCLUDE_FROM_BOOTLOADERCDC_C) || defined(__DOXYGEN__)
|
#if defined(INCLUDE_FROM_BOOTLOADERCDC_C) || defined(__DOXYGEN__)
|
||||||
static void ReadWriteMemoryBlock(const uint8_t Command);
|
static void ReadWriteMemoryBlock(const uint8_t Command);
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
* changed bytes are written to EEPROM to preserve its lifespan
|
* changed bytes are written to EEPROM to preserve its lifespan
|
||||||
* - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile
|
* - Changed over the AVRISP-MKII and TemperatureDataLogger projects to use eeprom_update_byte() when writing non-volatile
|
||||||
* parameters to EEPROM to preserve its lifespan
|
* parameters to EEPROM to preserve its lifespan
|
||||||
|
* - Removed unused line encoding data and control requests from the CDC Bootloader code, to save space
|
||||||
*
|
*
|
||||||
* <b>Fixed:</b>
|
* <b>Fixed:</b>
|
||||||
* - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
|
* - Fixed AVRISP project sending a LOAD EXTENDED ADDRESS command to 128KB AVRs after programming or reading from
|
||||||
|
Loading…
Reference in New Issue
Block a user