Commit graph

148 commits

Author SHA1 Message Date
Scott Shawcroft
12b4ac13e3
Call vTaskDelay directly in usb_background
This minimizes the delay added. (`port_yield()` does vTaskDelay(4)
so low priority tasks run.)
2024-03-05 15:56:11 -08:00
Scott Shawcroft
e0c6302b73
Improve RGBMatrix reliability
The guard against running when flash is disabled isn't perfect and
may lead to calling the row handler anyway. We were crashing due
to mp_hal_delay_us being in flash. So, move it to RAM.

Also move the panic handler to IRAM so we get nice output when this
happens.

Turn off JTAG by default so its pins can be used by code.py.

Fixes #8987
2024-03-05 12:29:05 -08:00
hathach
3d88402331
call tuh_hid_receive_abort() when detach from kernel driver
- add tuh_event_hook_cb() in SRAM, required when updated to latest tinyusb
- bump up pico-pio-usb to latest
- bump up tinyusb to latest for new tuh_hid_receive_abort(), and all endpoint abort when
SET_CONFIGURATION
2024-03-04 18:16:32 +07:00
339d01f58b Prevent out-of-range reads via msc
Some ports implement their own protection against this at a low level
but it doesn't hurt to add it here instead.

Based on a patch from @drath42

Closes: #8788
2024-02-16 10:28:53 -06:00
Scott Shawcroft
f037a1202a
Require 64 bytes extra CDC RX buffer
Once the buffer has less that an endpoint's worth, TinyUSB won't
request more from the host. When that happens, ctrl-c will no
longer be sent to the device and TinyUSB won't find the wanted
character.

Fixes #4444
2024-02-15 16:24:06 -08:00
da5ba9a76a Rename & improve doc 2024-01-31 12:03:12 -06:00
1c95a85ceb Merge remote-tracking branch 'origin/main' into q-and-d-uvc 2024-01-31 08:27:13 -06:00
ebe839044f
Merge pull request #8807 from iyalosovetsky/main
usb_host keyboard, keys f1-f12, ctrl-left, ctrl-right, ctrl-up, ctrl-down, page down, page up, insert, delete, pause in VT100 CSI
2024-01-28 15:05:01 -06:00
a28e92974e Fix keypad page up
This bug was always present in the key map.
2024-01-28 11:45:46 -06:00
fa2e365f6c Reorder FLAG_STRING | FLAG_CTRL lines
this means that the test for FLAG_CTRL together with FLAG_STRING is
not needed. Instead, the FLAG_STRING | FLAG_CTRL row, when
encountered earlier, will automatically take precedence.
2024-01-28 11:45:26 -06:00
1983ddad86 Remove commented-out lines 2024-01-28 11:44:11 -06:00
Dan Halbert
370b011081
Merge pull request #8830 from dhalbert/hid-wakeup
shared-module/usb_hid: allow HID to wake sleeping host computer
2024-01-25 14:44:02 -05:00
Dan Halbert
9aa73fd43f shared-module/usb_hid: allow HID to wake sleeping host computer 2024-01-24 11:12:49 -05:00
6b74263a71
uvc: Experimental module for USB video
This allows the CircuitPython device to act as a UVC video source.
2024-01-22 10:44:42 -06:00
Ihor Yalosovetskyi
5f5e4a6f16 rc03 ctrl with f1-f12 ins del pgdown pgup home end bug fix 2024-01-20 17:30:53 +02:00
Ihor Yalosovetskyi
5ff4d345d8 rc03 ctrl with f1-f12 ins del pgdown pgup home end bug fix 2024-01-20 17:25:26 +02:00
Ihor Yalosovetskyi
a63752340e rc02 ctrl with f1-f12 ins del pgdown pgup home end 2024-01-20 05:06:11 +02:00
Ihor Yalosovetskyi
60673579cb rc02 ctrl with f1-f12 ins del pgdown pgup home end 2024-01-20 04:44:45 +02:00
Ihor Yalosovetskyi
769e7533bf rc02 ctrl with f1-f12 ins del pgdown pgup home end 2024-01-20 04:42:21 +02:00
Ihor Yalosovetskyi
045a48af67 rc01 2024-01-19 15:58:12 +02:00
iyalosovetsky
18dad110a7
Update host_keyboard.c remove trail whitespace 2024-01-17 03:51:04 +02:00
iyalosovetsky
ae7e9173d8
Update host_keyboard.c 2024-01-17 03:36:11 +02:00
iyalosovetsky
6a7ebaf6a1
Update host_keyboard.c 2024-01-17 03:33:41 +02:00
iyalosovetsky
3cc04f81f9
Update host_keyboard.c
Added the ability to work with the function keys f1-f12, ctrl-left, ctrl-right, ctrl-up, ctrl-down, page down, page up, insert, delete, pause. in the format of command VT 100
2024-01-17 03:30:27 +02:00
Scott Shawcroft
25e862d110
Make SD cards available over web workflow
This changes storage.mount() to require that a mount point exist
on the parent file system.

A bug in background tasks is also fixed where the function
parameter is cleared on pending callbacks during "reset".

Disk usage is shown on the directory listing and changes based on
the mounted file system. Writable is also loaded per-directory.

Fixes #8108. Fixes #8690. Fixes #8107.
2024-01-16 14:12:16 -08:00
Scott Shawcroft
8137e2d6d2
Switch all ports to auto-growing split heap
This simplifies allocating outside of the VM because the VM doesn't
take up all remaining memory by default.

On ESP we delegate to the IDF for allocations. For all other ports,
we use TLSF to manage an outer "port" heap. The IDF uses TLSF
internally and we use their fork for the other ports.

This also removes the dynamic C stack sizing. It wasn't often used
and is not possible with a fixed outer heap.

Fixes #8512. Fixes #7334.
2023-11-01 15:24:16 -07:00
Scott Shawcroft
9633c4e78f
Merge remote-tracking branch 'adafruit/main' into v1.20-merge 2023-10-11 11:21:57 -07:00
Scott Shawcroft
2910dea6fd
Almost fix extra_coverage test 2023-10-11 10:04:02 -07:00
Ciro Cattuto
a5578cf067 Fixed compilion error when FF_MAX_SS != FF_MIN_SS 2023-08-21 22:47:09 +02:00
Scott Shawcroft
1629faf8b3
Make usb_host.Port a singleton
This allows you to initialize usb_host.Port once successfully and
then returns the same object as long as you pass the same arguments
in. It does allow you to fix incorrect pins but not switching from
one valid set to another. (It needs a reset for that.)

This also moves hcd cache operations to RAM so that they don't
access the cache when doing maintenance.
2023-07-18 10:40:54 -07:00
843ea86978
fix repeating cursor keys 2023-07-12 07:04:58 -05:00
1a06169e18
Implement key-repeat 2023-07-12 07:04:58 -05:00
910fcf1c93
usb host keyboard: add keymap support
This is confined to pure ASCII, but does support Alt Gr. This is enough
to make a French keyboard layout work:
 * home row is "qsdfghjklm"
 * numerals are all shifted
 * keys like {} require Alt Gr

While not tested, this should also support layouts like Colemak with
the necssary keymap file.

Layouts can be produced from Neradoc's keyboard layout modules on the
device & loaded at runtime. Code to do so is at
    https://gist.github.com/jepler/597c0a00e0eb014a433e03c0ae363a08
as well as a sketch of how an extended format could support dead keys &
the full Unicode BMP instead of just ASCII.
2023-07-12 07:04:56 -05:00
Scott Shawcroft
2686beab36
Basic USB host support and keyboard workflow
Connects up read, write and ctrl_transfer to TinyUSB. USB Host
support is available on iMX RT and RP2040.

Fixes #6527 (imx) and fixes #5986 (rp2).
2023-07-10 14:22:21 -07:00
Scott Shawcroft
66edcf5d03
Add PicoDVI support
PicoDVI in CP support 640x480 and 800x480 on Feather DVI, Pico and
Pico W. 1 and 2 bit grayscale are full resolution. 8 and 16 bit
color are half resolution.

Memory layout is modified to give the top most 4k of ram to the
second core. Its MPU is used to prevent flash access after startup.

The port saved word is moved to a watchdog scratch register so that
it doesn't get overwritten by other things in RAM.

Right align status bar and scroll area. This normally gives a few
pixels of padding on the left hand side and improves the odds it is
readable in a case. Fixes #7562

Fixes c stack checking. The length was correct but the top was being
set to the current stack pointer instead of the correct top.
Fixes #7643

This makes Bitmap subscr raise IndexError instead of ValueError
when the index arguments are wrong.
2023-04-19 15:14:02 -07:00
Scott Shawcroft
5bb8a7a7c6
Improve iMX RT performance
* Enable dcache for OCRAM where the VM heap lives.
* Add CIRCUITPY_SWO_TRACE for pushing program counters out over the
  SWO pin via the ITM module in the CPU. Exempt some functions from
  instrumentation to reduce traffic and allow inlining.
* Place more functions in ITCM to handle errors using code in RAM-only
  and speed up CP.
* Use SET and CLEAR registers for digitalio. The SDK does read, mask
  and write.
* Switch to 2MiB reserved for CircuitPython code. Up from 1MiB.
* Run USB interrupts during flash erase and write.
* Allow storage writes from CP if the USB drive is disabled.
* Get perf bench tests running on CircuitPython and increase timeouts
  so it works when instrumentation is active.
2023-03-14 12:30:58 -07:00
hathach
b432cf6201
fix rp2040 with new shared irq usb handler 2023-03-13 22:46:27 +07:00
Dan Halbert
d8231f1588 Implement safemode.py 2023-02-13 18:26:38 -05:00
afca4cef6d
This code can only be active if USB CDC is enabled. 2022-11-18 16:05:46 -06:00
406e46f46b
Allow serial "break" to trigger KeyboardInterrupt
When the USB serial buffer is full, the Ctrl-C code to send
KeyboardInterrupt can't be sent, which creates a problem if you've
pasted code or otherwise filled the buffer and need to recover.
A similar problem affects advanced UIs that interact with CircuitPython
and may send characters when they're unexpected, such as mu when it
tries to move the cursor based on the user clicking on the screen.

The main way forward seems to be to use some kind of message that can
still reach CircuitPython when its internal serial recieve buffer is full.
RS232 defines a "break" signal, in which the transmitting device holds its
data line in the "space" state for many entire character times. This still
exists in the world of USB serial.

This does work, sort of, except that your host computer software will need
to properly handle blocking serial writes; tio can send a break with
the **ctrl-c b** sequence, but this only works if it hasn't yet written
too much data, so it doesn't actually help in most situations :-/
2022-11-18 14:35:06 -06:00
Dan Halbert
9aca092900 squeeze the usb identification code; manufacturer was being copied to product 2022-09-20 20:23:17 -04:00
Dan Halbert
daf415d9c7 squeeze the usb identification code 2022-09-20 20:08:16 -04:00
Dan Halbert
adf15faa8f merge from main; throw NotImplementedError if CIRCUITPY_USB not set 2022-09-20 13:18:32 -04:00
Dan Halbert
52080e24eb status bar control 2022-08-30 15:23:44 -04:00
Scott Shawcroft
401c269758
Request a title bar update on USB cdc connect
This ensures that the USB serial connection gets a copy of the
latest title bar.

Fixes #6703
2022-08-08 14:29:45 -07:00
Dan Halbert
8bb369cac5 refactor debug UART to console UART; get working on ESP32 2022-06-30 23:16:46 -04:00
s-ol
0b525a285a supervisor: Add supervisor.set_usb_identification() function 2022-05-04 11:38:38 +02:00
Scott Shawcroft
51701e6abe
Merge remote-tracking branch 'adafruit/7.2.x' into merge_7.2.2 2022-03-17 14:15:55 -07:00
Dan Halbert
bf1329bb1f fix ReloadException when in REPL 2022-03-16 12:36:52 -04:00
Scott Shawcroft
dcc3ec171e
Merge remote-tracking branch 'adafruit/7.2.x' into merge_7.2.2 2022-03-15 13:56:11 -07:00