aboutsummaryrefslogtreecommitdiff
path: root/stmhal/usbd_cdc_interface.c
AgeCommit message (Collapse)Author
2017-09-06ports: Make new ports/ sub-directory and move all ports there.Damien George
This is to keep the top-level directory clean, to make it clear what is core and what is a port, and to allow the repository to grow with new ports in a sustainable way.
2017-07-19stmhal: Clean up USB CDC/MSC files and remove commented-out code.Damien George
2017-06-07stmhal/usb: Use local USB handler variable in Start-of-Frame handler.Sylvain Pelissier
2017-06-07stmhal: Pass USB handler as parameter to allow more than one USB handlerSylvain Pelissier
2017-04-04stmhal/usbd_cdc_interface: Change CDC RX to use a circular buffer.Damien George
This should be a little more efficient (since we anyway scan the input packet for the interrupt char), and it should also fix any non-atomic read issues with the buffer state being changed during an interrupt. Throughput tests show that RX rate is unchanged by this patch.
2017-04-04stmhal/usbd_cdc_interface: Increase in-endpoint timeout to 500ms.Damien George
The previous timeout value of 150ms could lead to data being lost (ie never received by the host) in some rare cases, eg when the host is under load. A value of 500ms is quite conservative and allows the host plenty of time to read our data.
2017-02-15stmhal: Use generic interrupt char code.Damien George
2016-12-15stmhal: Use core-provided keyboard exception object.Damien George
2016-12-15stmhal/usb: Always use the mp_kbd_exception object for VCP interrupt.Damien George
There's no need to store a separate pointer to this object.
2016-01-29stmhal: Make TIM3 available for use by the user.Damien George
TIM3 is no longer used by USB CDC for triggering outgoing data, so we can now make it available to the user. PWM fading on LED(4) is now gone, but will be reinstated in a new way.
2016-01-29stmhal: Make USB CDC driver use SOF instead of TIM3 for outgoing data.Damien George
Previous to this patch the USB CDC driver used TIM3 to trigger the sending of outgoing data over USB serial. This patch changes the behaviour so that the USB SOF interrupt is used to trigger the processing of the sending. This reduces latency and increases bandwidth of outgoing data. Thanks to Martin Fischer, aka @hoihu, for the idea and initial prototype. See PR #1713.
2015-10-24stmhal: Typo fix in comment.Paul Sokolovsky
2015-06-07stmhal: Break immediately from USB CDC busy wait loop if IRQs disabled.Damien George
If IRQs are disabled then the USB CDC buffer will never be drained/filled and the sys-tick timer will never increase, so we should not busy wait in this case.
2015-03-20stmhal: Remove some unnecessary declarations, purely for cleanup.Damien George
2015-02-13stmhal: Add Python-configurable USB HID mode.Damien George
Different HID modes can be configured in Python. You can either use predefined mouse or keyboard, or write your own report descriptor.
2014-11-29stmhal: Add USB_VCP.setinterrupt method, to disable CTRL-C.Damien George
2014-11-27stmhal: Reduce coupling between USB driver and readline.Damien George
This makes it easier to re-use readline.c and pyexec.c from stmhal in other ports.
2014-10-31stmhal: Add ioctl to USB_VCP object, so it works with select.Damien George
This patch also enables non-blocking streams on stmhal port. One can now make a USB-UART pass-through function: def pass_through(usb, uart): while True: select.select([usb, uart], [], []) if usb.any(): uart.write(usb.read(256)) if uart.any(): usb.write(uart.read(256)) pass_through(pyb.USB_VCP(), pyb.UART(1, 9600))
2014-10-26stmhal: Improve REPL control codes; improve pyboard.py script.Damien George
Improvements are: 2 ctrl-C's are now needed to truly kill running script on pyboard, so make CDC interface allow multiple ctrl-C's through at once (ie sending b'\x03\x03' to pyboard now counts as 2 ctrl-C's). ctrl-C in friendly-repl can now stop multi-line input. In raw-repl mode, use ctrl-D to indicate end of running script, and also end of any error message. Thus, output of raw-repl is always at least 2 ctrl-D's and it's much easier to parse. pyboard.py is now a bit faster, handles exceptions from pyboard better (prints them and exits with exit code 1), prints out the pyboard output while the script is running (instead of waiting till the end), and allows to follow the output of a previous script when run with no arguments.
2014-10-25py: Add mp_pending_exception global variable, for VM soft interrupt.Damien George
This allows to implement KeyboardInterrupt on unix, and a much safer ctrl-C in stmhal port. First ctrl-C is a soft one, with hope that VM will notice it; second ctrl-C is a hard one that kills anything (for both unix and stmhal). One needs to check for a pending exception in the VM only for jump opcodes. Others can't produce an infinite loop (infinite recursion is caught by stack check).
2014-07-31stmhal: Add USB_VCP class/object, for direct USB VCP control.Damien George
Before, pyb.stdin/pyb.stdout allowed some kind of access to the USB VCP device, but it was basic access. This patch adds a proper USB_VCP class and object with much more control over the USB VCP device. Create an object with pyb.USB_VCP(), then use this object as if it were a UART object. It has send, recv, read, write, and other methods. send and recv allow a timeout to be specified. Addresses issue 774.
2014-05-10stmhal: Fix USB CDC not flushing packets when an exact multiple of 64.Damien George
Need to send a zero-sized packet after sending an exact multiple of 64 bytes (not just after sending 64 bytes exactly). Addresses issue #494, part 2.
2014-05-03Add license header to (almost) all files.Damien George
Blanket wide to all .c and .h files. Some files originating from ST are difficult to deal with (license wise) so it was left out of those. Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
2014-04-17stmhal: Fix 64-byte USB packet bug properly.Damien George
A 64-byte packet is now followed by a 0-byte packet if there is nothing more to send. This flushes the USB endpoint.
2014-04-16stmhal: Replace magic number 3 with CDC_IN_EP define.Damien George
2014-04-16stmhal: Fix USB CDC buffer overrun error.Damien George
Need to wait for the low-level USB driver to send the data over the USB in-endpoint before the buffer can be used again. This patch adds a check for this.
2014-04-14stmhal: Work around crazy bug in USB CDC.Damien George
Packets of 64 bytes length are not send to the host until the following packet is sent. Fixed by never sending packets of 64 bytes length.
2014-04-13stmhal: Improve USB CDC write function (increase timeout).Damien George
2014-03-30stmhal: Implement selector for USB device mode; improve boot up.Damien George
Can now choose at boot up whether the USB device is CDC+MSC or CDC+HID. Choice is made by an option in boot.py, with default being CDC+MSC. HID+MSC is not currently supported, but should be easy to implement. Boot up now has ability to change the reset mode: hold down USR switch while booting and LEDs will count from 1 to 7 to indicate the boot mode. Release USR when correct mode is selected. Current modes are 1 (normal boot), 2 (safe mode), 3 (reset FS mode).
2014-03-24stmhal: Fix bug with USB CDC transmit buffer wrap around.Damien George
2014-03-23stmhal: Fix issues with USB CDC init and receive.Damien George
Late USB enumeration could clear settings after they had been set. Now fixed by not clearing some settings on init. RX was blocking if received characters were not being processed, so CTRL-C would not be picked up. Now "fixed" by not blocking, but instead discarding incoming characters if they overflow the buffer.
2014-03-22stmhal: Add intensity method for blue LED.Damien George
As part of this, rejig the way TIM3 is initialised, since it's now shared by USB CDC and the blue LED PWM.
2014-03-22stmhal: Servo driver can move at a given speed.Damien George
2014-03-22stmhal: Tidy up USB CDC+MSC device some more.Damien George
2014-03-22stmhal: Tidy up USB device configuration. Make it use less RAM.Damien George
2014-03-15stmhal: Check CDC tx buffer has free space before filling with data.Damien George
2014-03-15stmhal: Put an array in ROM.Damien George
2014-03-15stmhal: Fix escape sequences in USB CDC input.Damien George
2014-03-15stmhal: Get USB CDC REPL working.Damien George
New USB HAL is quite a bit improved over previous one. Now has better callbacks and flow control. REPL over USB CDC now works as before, except for soft-reset (since USB driver uses malloc...).
2014-03-14stmhal: Get USB enumerating a CDC device.Damien George
Enumerates CDC device over USB, but doesn't transmit/receive yet.