X-Git-Url: http://git.linex4red.de/pub/lufa.git/blobdiff_plain/23f3c3deee8bd153d59f2ac4e659c71ee75915f7..a54ed0085b29f81946f3652bd412103292da7589:/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c?ds=sidebyside diff --git a/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c new file mode 100644 index 000000000..031289193 --- /dev/null +++ b/Demos/Host/Incomplete/PrinterHost/Lib/PrinterCommands.c @@ -0,0 +1,86 @@ +/* + LUFA Library + Copyright (C) Dean Camera, 2009. + + dean [at] fourwalledcubicle [dot] com + www.fourwalledcubicle.com +*/ + +/* + Copyright 2009 Dean Camera (dean [at] fourwalledcubicle [dot] com) + + Permission to use, copy, modify, and distribute this software + and its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that the copyright notice and this + permission notice and warranty disclaimer appear in supporting + documentation, and that the name of the author not be used in + advertising or publicity pertaining to distribution of the + software without specific, written prior permission. + + The author disclaim all warranties with regard to this + software, including all implied warranties of merchantability + and fitness. In no event shall the author be liable for any + special, indirect or consequential damages or any damages + whatsoever resulting from loss of use, data or profits, whether + in an action of contract, negligence or other tortious action, + arising out of or in connection with the use or performance of + this software. +*/ + +#include "PrinterCommands.h" + +uint8_t Printer_GetDeviceID(Device_ID_String_t* DeviceIDString) +{ + uint8_t ErrorCode = HOST_SENDCONTROL_Successful; + + USB_ControlRequest = (USB_Request_Header_t) + { + bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), + bRequest: GET_DEVICE_ID, + wValue: 0, + wIndex: 0, + wLength: sizeof(DeviceIDString), + }; + + if ((ErrorCode == USB_Host_SendControlRequest(DeviceIDString)) != HOST_SENDCONTROL_Successful) + return ErrorCode; + + DeviceIDString->Length = SwapEndian_16(DeviceIDString->Length); + + /* Protect against overflow for the null terminator if the string length is equal to or larger than the buffer */ + if (DeviceIDString->Length >= sizeof(DeviceIDString->String)) + DeviceIDString->Length = sizeof(DeviceIDString->String) - 1; + + DeviceIDString->String[DeviceIDString->Length] = 0x00; + + return HOST_SENDCONTROL_Successful; +} + +uint8_t Printer_GetPortStatus(uint8_t* PortStatus) +{ + USB_ControlRequest = (USB_Request_Header_t) + { + bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE), + bRequest: GET_PORT_STATUS, + wValue: 0, + wIndex: 0, + wLength: sizeof(uint8_t), + }; + + return USB_Host_SendControlRequest(PortStatus); +} + +uint8_t Printer_SoftReset(void) +{ + USB_ControlRequest = (USB_Request_Header_t) + { + bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), + bRequest: SOFT_RESET, + wValue: 0, + wIndex: 0, + wLength: 0, + }; + + return USB_Host_SendControlRequest(NULL); +}