Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value.

pull/1469/head
Dean Camera 14 years ago
parent 092f82e06f
commit b7b8a9edfa

@ -153,7 +153,7 @@ void EVENT_USB_Device_ConfigurationChanged(void)
void EVENT_USB_Device_UnhandledControlRequest(void) void EVENT_USB_Device_UnhandledControlRequest(void)
{ {
/* Determine which interface's Line Coding data is being set from the wIndex parameter */ /* 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 */ /* Process CDC specific control requests */
switch (USB_ControlRequest.bRequest) switch (USB_ControlRequest.bRequest)

@ -86,7 +86,7 @@ uint8_t Printer_GetDeviceID(char* DeviceIDString,
.bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
.bRequest = REQ_GetDeviceID, .bRequest = REQ_GetDeviceID,
.wValue = 0, .wValue = 0,
.wIndex = 0, .wIndex = PrinterInterfaceNumber,
.wLength = sizeof(DeviceIDStringLength), .wLength = sizeof(DeviceIDStringLength),
}; };
@ -130,11 +130,11 @@ uint8_t Printer_GetPortStatus(uint8_t* const PortStatus)
{ {
USB_ControlRequest = (USB_Request_Header_t) USB_ControlRequest = (USB_Request_Header_t)
{ {
bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), .bmRequestType = (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
bRequest: REQ_GetPortStatus, .bRequest = REQ_GetPortStatus,
wValue: 0, .wValue = 0,
wIndex: 0, .wIndex = PrinterInterfaceNumber,
wLength: sizeof(uint8_t), .wLength = sizeof(uint8_t),
}; };
Pipe_SelectPipe(PIPE_CONTROLPIPE); Pipe_SelectPipe(PIPE_CONTROLPIPE);
@ -154,7 +154,7 @@ uint8_t Printer_SoftReset(void)
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
.bRequest = REQ_SoftReset, .bRequest = REQ_SoftReset,
.wValue = 0, .wValue = 0,
.wIndex = 0, .wIndex = PrinterInterfaceNumber,
.wLength = 0, .wLength = 0,
}; };

@ -42,6 +42,8 @@
#include <LUFA/Drivers/USB/USB.h> #include <LUFA/Drivers/USB/USB.h>
#include "../PrinterHost.h"
/* Macros: */ /* Macros: */
/** Printer class-specific request to retrieve the printer's ID string. */ /** Printer class-specific request to retrieve the printer's ID string. */
#define REQ_GetDeviceID 0 #define REQ_GetDeviceID 0

@ -70,6 +70,9 @@
/** LED mask for the library LED driver, to indicate that the USB interface is busy. */ /** LED mask for the library LED driver, to indicate that the USB interface is busy. */
#define LEDMASK_USB_BUSY LEDS_LED2 #define LEDMASK_USB_BUSY LEDS_LED2
/* External Variables: */
extern uint8_t PrinterInterfaceNumber;
/* Function Prototypes: */ /* Function Prototypes: */
void EVENT_USB_Host_DeviceAttached(void); void EVENT_USB_Host_DeviceAttached(void);
void EVENT_USB_Host_DeviceUnattached(void); void EVENT_USB_Host_DeviceUnattached(void);

@ -36,6 +36,7 @@
* in the USB controller if the endpoints or pipes were allocated in anything other than ascending order (thanks to Martin Degelsegger) * in the USB controller if the endpoints or pipes were allocated in anything other than ascending order (thanks to Martin Degelsegger)
* - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control * - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control
* request handler * request handler
* - Fixed LowLevel PrinterHost demo not sending control requests to the attached printer with the correct printer interface wIndex value
* *
* \section Sec_ChangeLog100807 Version 100807 * \section Sec_ChangeLog100807 Version 100807
* <b>New:</b> * <b>New:</b>

Loading…
Cancel
Save