projects
/
pub
/
USBasp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added new Printer Host mode Class driver.
[pub/USBasp.git]
/
Demos
/
Host
/
LowLevel
/
PrinterHost
/
Lib
/
PrinterCommands.c
diff --git
a/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
b/Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
index
4c88bb4
..
a9f41ba
100644
(file)
--- a/
Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
+++ b/
Demos/Host/LowLevel/PrinterHost/Lib/PrinterCommands.c
@@
-30,7
+30,7
@@
\r
/** \file
\r
*
\r
\r
/** \file
\r
*
\r
- * Printer Device commands, to send/rec
ie
ve data to and from an attached USB
\r
+ * Printer Device commands, to send/rec
ei
ve data to and from an attached USB
\r
* printer, and to send and receive Printer Class control requests.
\r
*/
\r
\r
* printer, and to send and receive Printer Class control requests.
\r
*/
\r
\r
@@
-39,22
+39,27
@@
/** 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
/** 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
*
\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
{
\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
return ErrorCode;
\r
\r
Pipe_ClearOUT();
\r
- while (!(Pipe_IsOUTReady()));
\r
+ while (!(Pipe_IsOUTReady()))
\r
+ {
\r
+ if (USB_HostState == HOST_STATE_Unattached)
\r
+ return PIPE_RWSTREAM_DeviceDisconnected;
\r
+ }
\r
\r
Pipe_Freeze();
\r
\r
\r
Pipe_Freeze();
\r
\r
@@
-72,12
+77,12
@@
uint8_t Printer_SendData(Printer_Data_t* PrinterCommands)
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize)
\r
{
\r
uint8_t ErrorCode = HOST_SENDCONTROL_Successful;
\r
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize)
\r
{
\r
uint8_t ErrorCode = HOST_SENDCONTROL_Successful;
\r
- uint16_t DeviceIDStringLength;
\r
+ uint16_t DeviceIDStringLength
= 0
;
\r
\r
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
\r
\r
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
\r
- bRequest:
GET_DEVICE_
ID,
\r
+ bRequest:
REQ_GetDevice
ID,
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: sizeof(DeviceIDStringLength),
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: sizeof(DeviceIDStringLength),
\r
@@
-87,6
+92,12
@@
uint8_t Printer_GetDeviceID(char* DeviceIDString, uint16_t BufferSize)
\r
if ((ErrorCode = USB_Host_SendControlRequest(&DeviceIDStringLength)) != HOST_SENDCONTROL_Successful)
\r
return ErrorCode;
\r
\r
if ((ErrorCode = USB_Host_SendControlRequest(&DeviceIDStringLength)) != HOST_SENDCONTROL_Successful)
\r
return ErrorCode;
\r
+
\r
+ if (!(DeviceIDStringLength))
\r
+ {
\r
+ DeviceIDString[0] = 0x00;
\r
+ return HOST_SENDCONTROL_Successful;
\r
+ }
\r
\r
DeviceIDStringLength = SwapEndian_16(DeviceIDStringLength);
\r
\r
\r
DeviceIDStringLength = SwapEndian_16(DeviceIDStringLength);
\r
\r
@@
-118,7
+129,7
@@
uint8_t Printer_GetPortStatus(uint8_t* PortStatus)
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
\r
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE),
\r
- bRequest:
GET_PORT_STATUS
,
\r
+ bRequest:
REQ_GetPortStatus
,
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: sizeof(uint8_t),
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: sizeof(uint8_t),
\r
@@
-139,7
+150,7
@@
uint8_t Printer_SoftReset(void)
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
\r
USB_ControlRequest = (USB_Request_Header_t)
\r
{
\r
bmRequestType: (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE),
\r
- bRequest:
SOFT_RESET
,
\r
+ bRequest:
REQ_SoftReset
,
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: 0,
\r
wValue: 0,
\r
wIndex: 0,
\r
wLength: 0,
\r