forked from mfulz_github/qmk_firmware
		
	Corrections to the unfinished AVRISP Programmer project to allow AVRStudio to connect to it.
This commit is contained in:
		
							parent
							
								
									6d99486791
								
							
						
					
					
						commit
						083d3615d3
					
				| @ -32,6 +32,7 @@ | ||||
|   *  - Fixed USBtoSerial demos not reading in UDR1 when the USART receives data but the USB interface is not enumerated, | ||||
|   *    causing continuous USART receive interrupts | ||||
|   *  - Fixed misspelt event name in the Class driver USBtoSerial demo, preventing correct operation | ||||
|   *  - Fixed invalid data being returned when a GetStatus request is issued in Device mode with an unhandled data recipient | ||||
|   * | ||||
|   * | ||||
|   *  \section Sec_ChangeLog090810 Version 090810 | ||||
|  | ||||
| @ -98,11 +98,6 @@ void EVENT_USB_Device_ConfigurationChanged(void) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void EVENT_USB_Device_UnhandledControlRequest(void) | ||||
| { | ||||
| 	printf("CONTROL REQUEST\r\n"); | ||||
| } | ||||
| 
 | ||||
| void Process_AVRISP_Commands(void) | ||||
| { | ||||
| 	/* Device must be connected and configured for the task to run */ | ||||
|  | ||||
| @ -70,7 +70,6 @@ | ||||
| 		void EVENT_USB_Device_Connect(void); | ||||
| 		void EVENT_USB_Device_Disconnect(void); | ||||
| 		void EVENT_USB_Device_ConfigurationChanged(void); | ||||
| 		void EVENT_USB_Device_UnhandledControlRequest(void); | ||||
| 
 | ||||
| 		void Process_AVRISP_Commands(void); | ||||
| 		 | ||||
|  | ||||
| @ -109,7 +109,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | ||||
| 			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_IN | AVRISP_DATA_EPNUM), | ||||
| 			.Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), | ||||
| 			.EndpointSize           = AVRISP_DATA_EPSIZE, | ||||
| 			.PollingIntervalMS      = 0x0A | ||||
| 			.PollingIntervalMS      = 0x00 | ||||
| 		}, | ||||
| 
 | ||||
| 	.DataOutEndpoint = | ||||
| @ -119,7 +119,7 @@ USB_Descriptor_Configuration_t PROGMEM ConfigurationDescriptor = | ||||
| 			.EndpointAddress        = (ENDPOINT_DESCRIPTOR_DIR_OUT | AVRISP_DATA_EPNUM), | ||||
| 			.Attributes             = (EP_TYPE_BULK | ENDPOINT_ATTR_NO_SYNC | ENDPOINT_USAGE_DATA), | ||||
| 			.EndpointSize           = AVRISP_DATA_EPSIZE, | ||||
| 			.PollingIntervalMS      = 0x0A | ||||
| 			.PollingIntervalMS      = 0x00 | ||||
| 		}, | ||||
| }; | ||||
| 
 | ||||
| @ -140,9 +140,9 @@ USB_Descriptor_String_t PROGMEM LanguageString = | ||||
|  */ | ||||
| USB_Descriptor_String_t PROGMEM ManufacturerString = | ||||
| { | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(5), .Type = DTYPE_String}, | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, | ||||
| 		 | ||||
| 	.UnicodeString          = L"ATMEL" | ||||
| 	.UnicodeString          = L"Dean Camera" | ||||
| }; | ||||
| 
 | ||||
| /** Product descriptor string. This is a Unicode string containing the product's details in human readable form,
 | ||||
| @ -151,16 +151,16 @@ USB_Descriptor_String_t PROGMEM ManufacturerString = | ||||
|  */ | ||||
| USB_Descriptor_String_t PROGMEM ProductString = | ||||
| { | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(11), .Type = DTYPE_String}, | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(33), .Type = DTYPE_String}, | ||||
| 		 | ||||
| 	.UnicodeString          = L"AVRISP mkII" | ||||
| 	.UnicodeString          = L"LUFA AVRISP MkII Clone Programmer" | ||||
| }; | ||||
| 
 | ||||
| USB_Descriptor_String_t PROGMEM SerialString = | ||||
| { | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(12), .Type = DTYPE_String}, | ||||
| 	.Header                 = {.Size = USB_STRING_LEN(13), .Type = DTYPE_String}, | ||||
| 		 | ||||
| 	.UnicodeString          = L"0000A0011794" | ||||
| 	.UnicodeString          = L"0000A00128255" | ||||
| }; | ||||
| 
 | ||||
| /** This function is called by the library when in device mode, and must be overridden (see library "USB Descriptors"
 | ||||
|  | ||||
| @ -64,27 +64,34 @@ void V2Protocol_ProcessCommand(void) | ||||
| { | ||||
| 	uint8_t V2Command = Endpoint_Read_Byte(); | ||||
| 		   | ||||
| 	printf("COMMAND %d\r\n", V2Command); | ||||
| 
 | ||||
| 	switch (V2Command) | ||||
| 	{ | ||||
| 		case CMD_SIGN_ON: | ||||
| 			V2Protocol_ProcessCmdSignOn(); | ||||
| 			break; | ||||
| 		case CMD_SET_PARAMETER: | ||||
| 			V2Protocol_ProcessCmdSetParam(); | ||||
| 			break; | ||||
| 		case CMD_GET_PARAMETER: | ||||
| 			V2Protocol_ProcessCmdGetParam(); | ||||
| 			V2Protocol_ProcessCmdGetSetParam(V2Command); | ||||
| 			break; | ||||
| 		default: | ||||
| 			while (Endpoint_BytesInEndpoint() == AVRISP_DATA_EPSIZE) | ||||
| 			{ | ||||
| 				Endpoint_ClearOUT(); | ||||
| 				while (!(Endpoint_IsOUTReceived())); | ||||
| 			} | ||||
| 		 | ||||
| 			Endpoint_ClearOUT(); | ||||
| 			Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); | ||||
| 
 | ||||
| 			Endpoint_Write_Byte(STATUS_CMD_UNKNOWN); | ||||
| 			Endpoint_ClearIN(); | ||||
| 			break; | ||||
| 	} | ||||
| 	 | ||||
| 	printf("COMMAND 0x%02x\r\n", V2Command); | ||||
| 
 | ||||
| 	Endpoint_WaitUntilReady(); | ||||
| 	 | ||||
| 	/* Reset Endpoint direction to OUT ready for next command */ | ||||
| 	Endpoint_SetEndpointDirection(ENDPOINT_DIR_OUT);	 | ||||
| } | ||||
| @ -104,6 +111,7 @@ static void V2Protocol_ProcessCmdSignOn(void) | ||||
| { | ||||
| 	Endpoint_ClearOUT(); | ||||
| 	Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); | ||||
| 	Endpoint_WaitUntilReady(); | ||||
| 
 | ||||
| 	Endpoint_Write_Byte(CMD_SIGN_ON); | ||||
| 	Endpoint_Write_Byte(STATUS_CMD_OK); | ||||
| @ -112,44 +120,25 @@ static void V2Protocol_ProcessCmdSignOn(void) | ||||
| 	Endpoint_ClearIN(); | ||||
| } | ||||
| 
 | ||||
| static void V2Protocol_ProcessCmdSetParam(void) | ||||
| static void V2Protocol_ProcessCmdGetSetParam(uint8_t V2Command) | ||||
| { | ||||
| 	uint8_t ParamID    = Endpoint_Read_Byte(); | ||||
| 	uint8_t ParamValue = Endpoint_Read_Byte(); | ||||
| 
 | ||||
| 	ParameterItem_t* ParameterItem = V2Protocol_GetParameterItem(ParamID); | ||||
| 	 | ||||
| 	Endpoint_ClearOUT(); | ||||
| 	Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); | ||||
| 	Endpoint_WaitUntilReady(); | ||||
| 	 | ||||
| 	ParameterItem_t* ParameterItem = V2Protocol_GetParameterItem(ParamID); | ||||
| 	 | ||||
| 	if (ParameterItem != NULL) | ||||
| 	{ | ||||
| 		Endpoint_Write_Byte(V2Command); | ||||
| 		Endpoint_Write_Byte(STATUS_CMD_OK); | ||||
| 
 | ||||
| 		if (V2Command == CMD_SET_PARAMETER) | ||||
| 		  eeprom_write_byte(&ParameterItem->ParameterValue, ParamValue); | ||||
| 
 | ||||
| 		Endpoint_Write_Byte(CMD_SET_PARAMETER); | ||||
| 		Endpoint_Write_Byte(STATUS_CMD_OK);	 | ||||
| 	} | ||||
| 		else | ||||
| 	{ | ||||
| 		Endpoint_Write_Byte(STATUS_CMD_FAILED); | ||||
| 	} | ||||
| 
 | ||||
| 	Endpoint_ClearIN(); | ||||
| } | ||||
| 
 | ||||
| static void V2Protocol_ProcessCmdGetParam(void) | ||||
| { | ||||
| 	uint8_t ParamID    = Endpoint_Read_Byte(); | ||||
| 
 | ||||
| 	ParameterItem_t* ParameterItem = V2Protocol_GetParameterItem(ParamID); | ||||
| 	 | ||||
| 	Endpoint_ClearOUT(); | ||||
| 	Endpoint_SetEndpointDirection(ENDPOINT_DIR_IN); | ||||
| 
 | ||||
| 	if (ParameterItem != NULL) | ||||
| 	{ | ||||
| 		Endpoint_Write_Byte(CMD_GET_PARAMETER); | ||||
| 		Endpoint_Write_Byte(STATUS_CMD_OK); | ||||
| 		  Endpoint_Write_Byte(eeprom_read_byte(&ParameterItem->ParameterValue));			 | ||||
| 	} | ||||
| 	else | ||||
|  | ||||
| @ -41,6 +41,7 @@ | ||||
| 
 | ||||
| 		#include <LUFA/Drivers/USB/USB.h> | ||||
| 		 | ||||
| 		#include "../Descriptors.h" | ||||
| 		#include "V2ProtocolConstants.h" | ||||
| 
 | ||||
| 	/* Macros: */ | ||||
| @ -60,8 +61,7 @@ | ||||
| 		#if defined(INCLUDE_FROM_V2PROTOCOL_C) | ||||
| 			static ParameterItem_t* V2Protocol_GetParameterItem(uint8_t ParamID); | ||||
| 			static void V2Protocol_ProcessCmdSignOn(void); | ||||
| 			static void V2Protocol_ProcessCmdSetParam(void); | ||||
| 			static void V2Protocol_ProcessCmdGetParam(void); | ||||
| 			static void V2Protocol_ProcessCmdGetSetParam(uint8_t V2Command); | ||||
| 		#endif | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
| @ -119,7 +119,7 @@ OBJDIR = . | ||||
| 
 | ||||
| 
 | ||||
| # Path to the LUFA library
 | ||||
| LUFA_PATH = ../../ | ||||
| LUFA_PATH = ../../../ | ||||
| 
 | ||||
| 
 | ||||
| # LUFA library compile-time options
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Dean Camera
						Dean Camera