mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-16 04:41:28 +00:00
Fixed error in PrinterHost preventing the full page data from being sent to the attached device.
This commit is contained in:
parent
0fdc1a2bc6
commit
ecf7c18cf2
@ -39,18 +39,19 @@
|
|||||||
/** Sends the given data directly to the printer via the data endpoints, for the sending of print commands in printer
|
/** Sends the given data directly to the printer via the data endpoints, for the sending of print commands in printer
|
||||||
* languages accepted by the attached printer (e.g. PCL).
|
* languages accepted by the attached printer (e.g. PCL).
|
||||||
*
|
*
|
||||||
* \param[in] PrinterCommands Pointer to a structure containing the commands and length of the data to send
|
* \param[in] PrinterCommands Pointer to the data to send to the attached printer
|
||||||
|
* \param[in] CommandSize Size of the data to send to the attached printer
|
||||||
*
|
*
|
||||||
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
|
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum
|
||||||
*/
|
*/
|
||||||
uint8_t Printer_SendData(Printer_Data_t* PrinterCommands)
|
uint8_t Printer_SendData(void* PrinterCommands, uint16_t CommandSize)
|
||||||
{
|
{
|
||||||
uint8_t ErrorCode;
|
uint8_t ErrorCode;
|
||||||
|
|
||||||
Pipe_SelectPipe(PRINTER_DATA_OUT_PIPE);
|
Pipe_SelectPipe(PRINTER_DATA_OUT_PIPE);
|
||||||
Pipe_Unfreeze();
|
Pipe_Unfreeze();
|
||||||
|
|
||||||
if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands->Data, PrinterCommands->Length)) != PIPE_RWSTREAM_NoError)
|
if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands, CommandSize)) != PIPE_RWSTREAM_NoError)
|
||||||
return ErrorCode;
|
return ErrorCode;
|
||||||
|
|
||||||
Pipe_ClearOUT();
|
Pipe_ClearOUT();
|
||||||
|
@ -58,18 +58,8 @@
|
|||||||
/** Pipe number of the Printer data OUT pipe */
|
/** Pipe number of the Printer data OUT pipe */
|
||||||
#define PRINTER_DATA_OUT_PIPE 2
|
#define PRINTER_DATA_OUT_PIPE 2
|
||||||
|
|
||||||
/* Type Defines: */
|
|
||||||
/** Type define for a Printer Command Data structure, for the encapsulation of raw printer commands to
|
|
||||||
* send to an attached printer device.
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
char* Data; /**< Printer commands to send to the attached printer */
|
|
||||||
uint16_t Length; /**< Length in bytes of the commands to send to the attached printer */
|
|
||||||
} Printer_Data_t;
|
|
||||||
|
|
||||||
/* Function Prototypes: */
|
/* Function Prototypes: */
|
||||||
uint8_t Printer_SendData(Printer_Data_t* PrinterCommands);
|
uint8_t Printer_SendData(void* PrinterCommands, uint16_t CommandSize);
|
||||||
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize);
|
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize);
|
||||||
uint8_t Printer_GetPortStatus(uint8_t* PortStatus);
|
uint8_t Printer_GetPortStatus(uint8_t* PortStatus);
|
||||||
uint8_t Printer_SoftReset(void);
|
uint8_t Printer_SoftReset(void);
|
||||||
|
@ -197,10 +197,10 @@ void USB_Printer_Host(void)
|
|||||||
|
|
||||||
puts_P(PSTR("Retrieving Device ID...\r\n"));
|
puts_P(PSTR("Retrieving Device ID...\r\n"));
|
||||||
|
|
||||||
char DeviceIDString[256];
|
char DeviceIDString[300];
|
||||||
if ((ErrorCode = Printer_GetDeviceID(DeviceIDString, sizeof(DeviceIDString))) != HOST_SENDCONTROL_Successful)
|
if ((ErrorCode = Printer_GetDeviceID(DeviceIDString, sizeof(DeviceIDString))) != HOST_SENDCONTROL_Successful)
|
||||||
{
|
{
|
||||||
printf_P(PSTR(ESC_FG_RED "Control Error (Get DeviceID).\r\n"
|
printf_P(PSTR(ESC_FG_RED "Control Error (Get Device ID).\r\n"
|
||||||
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
|
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
|
||||||
|
|
||||||
/* Indicate error via status LEDs */
|
/* Indicate error via status LEDs */
|
||||||
@ -221,15 +221,12 @@ void USB_Printer_Host(void)
|
|||||||
/* Indicate device busy via the status LEDs */
|
/* Indicate device busy via the status LEDs */
|
||||||
LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
|
LEDs_SetAllLEDs(LEDMASK_USB_BUSY);
|
||||||
|
|
||||||
Printer_Data_t TestPageData =
|
char TestPageData[] = "\033%-12345X\033E" "LUFA PCL Test Page" "\033E\033%-12345X";
|
||||||
{
|
uint16_t TestPageLength = strlen(TestPageData);
|
||||||
"\033%-12345X\033E" "LUFA PCL Test Page" "\033E\033%-12345X",
|
|
||||||
(sizeof(TestPageData.Data) - 1)
|
|
||||||
};
|
|
||||||
|
|
||||||
printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), TestPageData.Length);
|
printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), TestPageLength);
|
||||||
|
|
||||||
if ((ErrorCode = Printer_SendData(&TestPageData)) != PIPE_RWSTREAM_NoError)
|
if ((ErrorCode = Printer_SendData(&TestPageData, TestPageLength)) != PIPE_RWSTREAM_NoError)
|
||||||
{
|
{
|
||||||
printf_P(PSTR(ESC_FG_RED "Error Sending Test Page.\r\n"
|
printf_P(PSTR(ESC_FG_RED "Error Sending Test Page.\r\n"
|
||||||
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
|
" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
* - Fixed Device mode HID Class driver not explicitly initializing the ReportSize parameter to zero before calling callback
|
* - Fixed Device mode HID Class driver not explicitly initializing the ReportSize parameter to zero before calling callback
|
||||||
* routine, so that ignored callbacks don't cause incorrect data to be sent
|
* routine, so that ignored callbacks don't cause incorrect data to be sent
|
||||||
* - Fixed StillImageHost not correctly freezing and unfreezing data pipes while waiting for a response block header
|
* - Fixed StillImageHost not correctly freezing and unfreezing data pipes while waiting for a response block header
|
||||||
|
* - Fixed error in PrinterHost preventing the full page data from being sent to the attached device
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* \section Sec_ChangeLog090810 Version 090810
|
* \section Sec_ChangeLog090810 Version 090810
|
||||||
|
Loading…
Reference in New Issue
Block a user