/** 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 the input buffer containing the printer data to send\r
+ * \param[in] PrinterCommands Pointer to a structure containing the commands and length of the data to send\r
*\r
* \return A value from the Pipe_Stream_RW_ErrorCodes_t enum\r
*/\r
-uint8_t Printer_SendData(char* PrinterCommands, uint16_t DataLength)\r
+uint8_t Printer_SendData(Printer_Data_t* PrinterCommands)\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, DataLength)) != PIPE_RWSTREAM_NoError)\r
+ if ((ErrorCode = Pipe_Write_Stream_LE(PrinterCommands->Data, PrinterCommands->Length)) != 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
+ typedef struct\r
+ {\r
+ char* Data;\r
+ uint16_t Length;\r
+ } Printer_Data_t;\r
+ \r
/* Function Prototypes: */\r
- uint8_t Printer_SendData(char* PrinterCommands, uint16_t DataLength);\r
+ uint8_t Printer_SendData(Printer_Data_t* PrinterCommands);\r
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint8_t BufferSize);\r
uint8_t Printer_GetPortStatus(uint8_t* PortStatus);\r
uint8_t Printer_SoftReset(void);\r
/* Indicate device busy via the status LEDs */\r
LEDs_SetAllLEDs(LEDMASK_USB_BUSY);\r
\r
- char PCL_Test_Page[] = "\033%-12345X\033E LUFA PCL Test Page \033E\033%-12345X";\r
-// char ESCP2_Test_Page[] = "\033@\033i\001\033X\001\060\000\r\nLUFA ESCP/2 Test Page\r\n";\r
-\r
- printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), (sizeof(PCL_Test_Page) - 1));\r
+ Printer_Data_t TestPageData =\r
+ {\r
+ "\033%-12345X\033E LUFA PCL Test Page \033E\033%-12345X",\r
+// "\033@\033i\001\033X\001\060\000\r\nLUFA ESCP/2 Test Page\r\n",\r
+ (sizeof(TestPageData.Data) - 1)\r
+ };\r
+ \r
+ printf_P(PSTR("Sending Test Page (%d bytes)...\r\n"), TestPageData.Length);\r
\r
- if ((ErrorCode = Printer_SendData(PCL_Test_Page, (sizeof(PCL_Test_Page) - 1))) != PIPE_RWSTREAM_NoError)\r
+ if ((ErrorCode = Printer_SendData(&TestPageData)) != PIPE_RWSTREAM_NoError)\r
{\r
puts_P(PSTR(ESC_FG_RED "Error Sending Test Page.\r\n"));\r
printf_P(PSTR(" -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode);\r