aboutsummaryrefslogtreecommitdiff
path: root/cores/arduino/CDC.cpp
AgeCommit message (Collapse)Author
2019-02-15Replace Serial with nullDavid Madison
Allows sketches using Serial to compile but discards all data
2017-11-13Always read key to check for new LUFA bootloaderScott Allen
Instead of checking for the NEW_LUFA_SIGNATURE once in program memory and then setting a flag which is used for further checks, a function is used that always checks program memory directly. If a flag is used, there's a slight chance that its location in RAM could fall on MAGIC_KEY_POS. In this case, an aborted USB auto-reset sequence may fail.
2017-11-13Don't use line coding to trigger USB auto-resetScott Allen
An auto-reset invoked using USB CDC is triggered by the port closing (when set to 1200 baud). Closing of the port is indicated by DTR going inactive. There is no need to have auto-reset invoked by a CDC_SET_LINE_CODING command. Only the CDC_SET_CONTROL_LINE_STATE command, which indicates a change in the state of DTR, should be used.
2017-11-13Save/restore the watchdog during USB auto-resetScott Allen
The state of the watchdog timer is saved during a USB auto-reset and then restored if the reset is aborted, in case the sketch is using the watchdog.
2017-11-13Fix save/restore of magic key location during resetScott Allen
In the USB CDC code to invoke an auto-reset, the magic key location could be restored before it had actually been saved. The sketch would then have a corrupted value at this location. This fix prevents the value from being restored if it hasn't previously been saved.
2016-04-06[AVR] Discover newer bootloader at runtimeMartino Facchin
Replaces #4280, only checks for the bootloader once Tested with Hoodloader2, should work with every LUFA-derived bootloader released after 2014 (.apitable_signatures section must be placed at end of the flash) BootloaderAPITable.S : .global BootloaderAPI_Signatures BootloaderAPI_Signatures: .long BOOT_START_ADDR ; Start address of the bootloader .word 0xDF00 ; Signature for the CDC class bootloader .word 0xDCFB ; Signature for a LUFA class bootloader makefile: BOOT_API_LD_FLAGS += $(call BOOT_SECTION_LD_FLAG, .apitable_signatures, BootloaderAPI_Signatures, 8)
2015-09-28Fix compiler warning in CDC.cppNico
2015-08-14Merge branch 'cdc-settings' of https://github.com/matthijskooijman/ArduinoCristian Maglie
2015-08-12Added 16 byte endpoint supportNicoHood
2015-08-12Made Magic Key Settings more flexibleNicoHood
2015-07-31Add Serial_::availableForWrite().Peter Van Hoyweghen
This makes the CDC "Serial" object on the Leonardo and similar boards support this recently introduced method as well. The CDC code in the sam core is not changed.
2015-07-31Add Serial_::readBreak() to process SEND_BREAK requestsMatthijs Kooijman
This allows detecting when the USB host sends a break request and what the value of the request was. See the comments in USBAPI.h for details. This just modifies the avr core, not the sam core.
2015-07-31Expose serial settings from CDC virtual serial portMatthijs Kooijman
This allows a sketch to find out the settings chosen by the USB host (computer) and act accordingly. Other than reading the DTR flag and checking if the baudrate is 1200, the regular CDC code doesn't actually use any of these settings. By exposing these settings to the sketch, it can for example copy them to the hardware UART, turning the Leonardo into a proper USB-to-serial device. This can be useful to let the computer directly talk to whatever device is connected to the hardware serial port (like an XBee module). The Teensy core already supported these methods. This code was independently developed, but the method names were chosen to match the Teensy code, for compatibility (except that `dtr()` and `rtr()` return `bool`, while the Teensy version return a `uint8_t`). This change is applied to both the avr and sam cores, which have a very similar CDC implementation.
2015-07-16save RAM content overridden by bootloader magicMartino Facchin
and restore it in case of aborted reboot use RAMEND-1 as suggested by @yyyc514 in PR #2474 of course it's not a real solution but we cannot force everyone to update the bootloader using an external programmer
2015-07-16rename Setup typedef struct to USBSetupMartino Facchin
was really too common
2015-07-16make CDC function non removableMartino Facchin
2014-09-12Fixed trivial include error introduced in previous commit 2e3e539b... oops...Cristian Maglie
2014-09-01Fix for upload problems on Arduino Leonardo (and derivatives) with OSX 10.9.4Cristian Maglie
2014-06-19Merge branch 'master' into ide-1.5.xCristian Maglie
2014-06-19Fixed regression in USBAPI and CDC (xaljox)Cristian Maglie
See: https://github.com/arduino/Arduino/commit/9ac7e30252fce5b9dafde3288519b020b73c37bd#commitcomment-6718676
2014-05-30Merge branch 'master' into HEADCristian Maglie
2014-05-30USB CDC available() method returns correct number of bytes in buffer.Cristian Maglie
See #1953
2014-05-26Merge branch 'usbcdc-improved' into ide-1.5.xCristian Maglie
2014-05-24Improve CDC read codePaul Brook
Read CDC data from USB FIFO on demand instead of in ISR. Remove superfluous ring buffer. Signed-off-by: Paul Brook <paul@nowt.org>
2014-05-24improved USB write speedsJustin Rajewski
2014-04-20Fixed other trivial warnings in AVR USB core.Cristian Maglie
See #1877
2013-09-30Merge branch 'master' into ide-1.5.xCristian Maglie
2013-09-02USB CDC two argument begin()Paul Brook
Add two argument form of Serial_::begin Signed-off-by: Paul Brook <paul@nowt.org>
2013-09-02USB serial baud arg typePaul Brook
Make USB Serial_::begin() function take an unsigned long argument for consistency with HardwareSerial. Signed-off-by: Paul Brook <paul@nowt.org>
2013-07-27Move buffers into USB CDC (look #947 and #1369 for reference)Cristian Maglie
2012-10-18Merged latest changes in AVR arduino coreCristian Maglie
2012-09-13Avoid serial buffer overrun on leonardoPeter Van Hoyweghen
2012-04-11fixed logic bug in Caterina that could stop the bootloader from entering ↵Zach Eveland
self-programming mode
2012-04-06Revert "Revert "added a short delay and comment to boolean operator in CDC""Zach Eveland
This reverts commit 200eefb4e2ac7796c5c901e8fd9369c85ec544c5.
2012-04-06Revert "added a short delay and comment to boolean operator in CDC"Federico Vanzati
This reverts commit ade4893f585e3e94fa6cf683620e1d12afc88ecd.
2012-04-03added a short delay and comment to boolean operator in CDCZach Eveland
Delay fixes problem where the port has been configured but not quite opened. Federico found that 10 ms was the minimum time needed to avoid problems.
2012-04-01added Boolean operators to HardwareSerial and CDC to test whether the port ↵Zach Eveland
is ready to send data. Mostly useful for Leonardo - simple way to test whether the port is actually opened by an application and ready to receive data. For Serial objects attached to real UARTs always returns true.
2012-03-14reduced delay before starting the Leonardo bootloaderZach Eveland
Since we use a magic RAM flag to signal to the bootloader there's a risk of the sketch overwriting the magic RAM location before the bootloader starts. By reducing the watchdog timeout we reduce the chance of this happening.
2012-03-01changed auto-reset logic for Leonardo. only do WDT manipulation if the port ↵Zach Eveland
is opened at 1200 bps. (Dave Mellis)
2012-02-27Autoreset 1200 bps fix.Cristian Maglie
2012-02-22shortened the watchdog period for resetting Leonardo from 2 s to 250 ms. ↵Zach Eveland
Reset into bootloader is much snappier.
2012-02-14Leonardo now checks whether bootloader should be run after a WDT event.Zach Eveland
Before the sketch initiates an auto-reset for upload it pokes a magic word into a specific RAM address. On starting the bootloader checks this address. If it finds the magic word it knows the bootloader code should run. If not it jumps straight back to sketch. Test in a sketch by adding to setup(): wdt_enable(WDTO_2S); Sketch should upload, start, run for two seconds, WDT, and sketch should restart (not bootloader). Had to cut out unused descriptor code to make the bootloader still fit in 4k.
2012-02-13Leonardo auto-reset-and-upload changes for Windows (explanation below)Zach Eveland
On Windows COM port changes when board switched between bootloader and sketch. No way to prevent this so now Windows users have to select the upload port separate from the comm port. Also, handling of reset into bootloader was broken on Windows. Would occasionally leave the original COM port completely unusable. Changed the way this reset is initiated. Finally, had to add upload.disable.flushing=true flag to boards.txt so IDE wouldn't try to flush the original COM port after it disappeared.
2012-02-03fixed starting Leonardo bootloader from sketchZach Eveland
AvrdudeUploader class opens and closes Leonardo port at the magic baudrate before starting avrdude; reduced reset timeout from 250 ms to 15 ms
2012-01-24Caterina now cleanly hands off operation to the sketchZach Eveland
had to remove TIMER1 operation from bootloader - was interfering with normal sketch operation
2011-12-18added asynchronous buffering of received CDC charactersZach Eveland
This fixes the issue Federico reported where bytes written by host but not read by sketch would cause serial connection to lock up. Ring buffer implementation is based on HardwareSerial.cpp. Adds public accept() method to CDC.
2011-11-09restored original non-interrupt-driven DiskLoaderZach Eveland
Interrupt-driven version was a dead-end - too many bugs with that approach.
2011-10-27changes in core and boards.txt to support new bootloaderZach Eveland
old bootloader could fit in only 2 kB of flash. new version has to have a 4 kB block - jump-to address and boards.txt must reflect this.
2011-09-08fixed bug where sketches over 28k caused subsequent auto-reset-and-upload ↵Zach Eveland
attempts to fail. fixed bug in reboot routine, changed fuses to select 1024-word bootloader size, disabled hardware boot enable.
2011-09-06changed auto-reset trigger condition to fix auto-reset-and-upload for ↵Zach Eveland
Windows. now reboots when a port, opened at 1200 bps, is closed.