diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2012-02-24 20:28:27 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2012-02-24 20:28:27 +0000 |
commit | 6a9d1eab2d38bfd524ae5397852c01cb03325559 (patch) | |
tree | e3270f407aae8867a7bd1f27887c1773467b9ac6 /Demos/Host | |
parent | 63a65a9598266f2ede393d6cf2e24237c81bf158 (diff) | |
download | lufa-6a9d1eab2d38bfd524ae5397852c01cb03325559.tar.gz lufa-6a9d1eab2d38bfd524ae5397852c01cb03325559.tar.bz2 lufa-6a9d1eab2d38bfd524ae5397852c01cb03325559.zip |
Modified the CDC Host demos to set a default CDC Line Encoding on enumerated devices.
Diffstat (limited to 'Demos/Host')
-rw-r--r-- | Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c | 12 | ||||
-rw-r--r-- | Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c | 25 |
2 files changed, 37 insertions, 0 deletions
diff --git a/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c b/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c index 36ff503f7..631925e45 100644 --- a/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c +++ b/Demos/Host/ClassDriver/VirtualSerialHost/VirtualSerialHost.c @@ -163,6 +163,18 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void) LEDs_SetAllLEDs(LEDMASK_USB_ERROR); return; } + + VirtualSerial_CDC_Interface.State.LineEncoding.BaudRateBPS = 9600; + VirtualSerial_CDC_Interface.State.LineEncoding.CharFormat = CDC_LINEENCODING_OneStopBit; + VirtualSerial_CDC_Interface.State.LineEncoding.ParityType = CDC_PARITY_None; + VirtualSerial_CDC_Interface.State.LineEncoding.DataBits = 8; + + if (CDC_Host_SetLineEncoding(&VirtualSerial_CDC_Interface)) + { + puts_P(PSTR("Error Setting Device Line Encoding.\r\n")); + LEDs_SetAllLEDs(LEDMASK_USB_ERROR); + return; + } puts_P(PSTR("CDC Device Enumerated.\r\n")); LEDs_SetAllLEDs(LEDMASK_USB_READY); diff --git a/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c b/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c index 5214dd476..88d7b74b0 100644 --- a/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c +++ b/Demos/Host/LowLevel/VirtualSerialHost/VirtualSerialHost.c @@ -126,6 +126,31 @@ void EVENT_USB_Host_DeviceEnumerationComplete(void) return; } + CDC_LineEncoding_t LineEncoding = { .BaudRateBPS = 9600, + .CharFormat = CDC_LINEENCODING_OneStopBit, + .ParityType = CDC_PARITY_None, + .DataBits = 8 }; + + USB_ControlRequest = (USB_Request_Header_t) + { + .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE), + .bRequest = CDC_REQ_SetLineEncoding, + .wValue = 0, + .wIndex = 0, + .wLength = sizeof(LineEncoding), + }; + + /* Set the Line Encoding of the CDC interface within the device, so that it is ready to accept data */ + Pipe_SelectPipe(PIPE_CONTROLPIPE); + if (USB_Host_SendControlRequest(&LineEncoding) != HOST_SENDCONTROL_Successful) + { + printf_P(PSTR(ESC_FG_RED "Control Error (Set Line Encoding).\r\n" + " -- Error Code: %d\r\n" ESC_FG_WHITE), ErrorCode); + + LEDs_SetAllLEDs(LEDMASK_USB_ERROR); + return; + } + puts_P(PSTR("CDC Device Enumerated.\r\n")); LEDs_SetAllLEDs(LEDMASK_USB_READY); } |