+/** 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
+ *\r
+ * \return A value from the Pipe_Stream_RW_ErrorCodes_t enum\r
+ */\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->Data, PrinterCommands->Length)) != PIPE_RWSTREAM_NoError)\r
+ return ErrorCode;\r
+\r
+ Pipe_ClearOUT();\r
+ while (!(Pipe_IsOUTReady()));\r
+ \r
+ Pipe_Freeze();\r
+\r
+ return PIPE_RWSTREAM_NoError;\r
+}\r
+\r
+/** Issues a Printer class Get Device ID command to the attached device, to retrieve the device ID string (which indicates\r
+ * the accepted printer languages, the printer's model and other pertinent information).\r
+ *\r
+ * \param[out] DeviceIDString Pointer to the destination where the returned string should be stored\r
+ * \param[in] BufferSize Size in bytes of the allocated buffer for the returned Device ID string\r
+ *\r
+ * \return A value from the USB_Host_SendControlErrorCodes_t enum\r
+ */\r
+uint8_t Printer_GetDeviceID(char* DeviceIDString, uint8_t BufferSize)\r