Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value.
This commit is contained in:
		
							parent
							
								
									092f82e06f
								
							
						
					
					
						commit
						b7b8a9edfa
					
				
					 6 changed files with 18 additions and 12 deletions
				
			
		| 
						 | 
				
			
			@ -153,7 +153,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
 | 
			
		|||
void EVENT_USB_Device_UnhandledControlRequest(void)
 | 
			
		||||
{
 | 
			
		||||
	/* Determine which interface's Line Coding data is being set from the wIndex parameter */
 | 
			
		||||
	uint8_t* LineEncodingData = (USB_ControlRequest.wIndex == 0) ? (uint8_t*)&LineEncoding1 : (uint8_t*)&LineEncoding2;
 | 
			
		||||
	void* LineEncodingData = (USB_ControlRequest.wIndex == 0) ? &LineEncoding1 : &LineEncoding2;
 | 
			
		||||
 | 
			
		||||
	/* Process CDC specific control requests */
 | 
			
		||||
	switch (USB_ControlRequest.bRequest)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,7 +86,7 @@ uint8_t Printer_GetDeviceID(char* DeviceIDString,
 | 
			
		|||
			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 | 
			
		||||
			.bRequest      = REQ_GetDeviceID,
 | 
			
		||||
			.wValue        = 0,
 | 
			
		||||
			.wIndex        = 0,
 | 
			
		||||
			.wIndex        = PrinterInterfaceNumber,
 | 
			
		||||
			.wLength       = sizeof(DeviceIDStringLength),
 | 
			
		||||
		};
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			@ -130,11 +130,11 @@ uint8_t Printer_GetPortStatus(uint8_t* const PortStatus)
 | 
			
		|||
{
 | 
			
		||||
	USB_ControlRequest = (USB_Request_Header_t)
 | 
			
		||||
		{
 | 
			
		||||
			bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 | 
			
		||||
			bRequest:      REQ_GetPortStatus,
 | 
			
		||||
			wValue:        0,
 | 
			
		||||
			wIndex:        0,
 | 
			
		||||
			wLength:       sizeof(uint8_t),
 | 
			
		||||
			.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
 | 
			
		||||
			.bRequest      = REQ_GetPortStatus,
 | 
			
		||||
			.wValue        = 0,
 | 
			
		||||
			.wIndex        = PrinterInterfaceNumber,
 | 
			
		||||
			.wLength       = sizeof(uint8_t),
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
	Pipe_SelectPipe(PIPE_CONTROLPIPE);
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +154,7 @@ uint8_t Printer_SoftReset(void)
 | 
			
		|||
			.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
 | 
			
		||||
			.bRequest      = REQ_SoftReset,
 | 
			
		||||
			.wValue        = 0,
 | 
			
		||||
			.wIndex        = 0,
 | 
			
		||||
			.wIndex        = PrinterInterfaceNumber,
 | 
			
		||||
			.wLength       = 0,
 | 
			
		||||
		};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,6 +41,8 @@
 | 
			
		|||
		#include <string.h>
 | 
			
		||||
 | 
			
		||||
		#include <LUFA/Drivers/USB/USB.h>
 | 
			
		||||
		
 | 
			
		||||
		#include "../PrinterHost.h"
 | 
			
		||||
 | 
			
		||||
	/* Macros: */
 | 
			
		||||
		/** Printer class-specific request to retrieve the printer's ID string. */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,6 +70,9 @@
 | 
			
		|||
		/** LED mask for the library LED driver, to indicate that the USB interface is busy. */
 | 
			
		||||
		#define LEDMASK_USB_BUSY          LEDS_LED2
 | 
			
		||||
	
 | 
			
		||||
	/* External Variables: */
 | 
			
		||||
		extern uint8_t PrinterInterfaceNumber;
 | 
			
		||||
	
 | 
			
		||||
	/* Function Prototypes: */
 | 
			
		||||
		void EVENT_USB_Host_DeviceAttached(void);
 | 
			
		||||
		void EVENT_USB_Host_DeviceUnattached(void);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue