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