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

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

@ -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);

@ -171,10 +171,10 @@ uint8_t PRNT_Host_SoftReset(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
USB_ControlRequest = (USB_Request_Header_t)
{
.bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
.bRequest = REQ_SoftReset,
.wValue = 0,
.wIndex = PRNTInterfaceInfo->State.InterfaceNumber,
.wLength = 0,
.bRequest = REQ_SoftReset,
.wValue = 0,
.wIndex = PRNTInterfaceInfo->State.InterfaceNumber,
.wLength = 0,
};
Pipe_SelectPipe(PIPE_CONTROLPIPE);

@ -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)
* - Fixed USBtoSerial and Benito project SetLineEncoding calls failing if the USART is busy, due to the RX ISR delaying the control
* 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
* <b>New:</b>

Loading…
Cancel
Save