Commit Graph

25715 Commits

Author SHA1 Message Date
Scott Shawcroft
a08412420e
Merge pull request #5540 from jepler/continuous-capture
ParallelImageCapture: Add continuous capture on espressif
2021-11-04 13:33:32 -07:00
Jeff Epler
f498cfa538 clarify that ParallelImageCapture holds references to the buffers until capture_stop 2021-11-04 08:39:26 -05:00
Scott Shawcroft
0dfb7a9a2d
Merge pull request #5541 from DavePutz/issue_5477
Corrected number of serial bytes returned
2021-11-03 16:53:15 -07:00
root
1e3215f4ee Corrected number of serial bytes returned 2021-11-03 16:29:05 -05:00
Jeff Epler
0ac6adb460 spelling 2021-11-03 14:14:55 -05:00
Jeff Epler
a8614a61dc ParallelImageCapture: Add continuous capture on espressif
By having a pair of buffers, the capture hardware can fill one buffer while
Python code (including displayio, etc) operates on the other buffer.  This
increases the responsiveness of camera-using code.

On the Kaluga it makes the following improvements:
 * 320x240 viewfinder at 30fps instead of 15fps using directio
 * 240x240 animated gif capture at 10fps instead of 7.5fps

As discussed at length on Discord, the "usual end user" code will look like
this:

    camera = ...

    with camera.continuous_capture(buffer1, buffer2) as capture:
        for frame in capture:
            # Do something with frame

However, rather than presenting a context manager, the core code consists of
three new functions to start & stop continuous capture, and to get the next
frame.  The reason is twofold.  First, it's simply easier to implement the
context manager object in pure Python.  Second, for more advanced usage, the
context manager may be too limiting, and it's easier to iterate on the right
design in Python code.  In particular, I noticed that adapting the
JPEG-capturing programs to use continuous capture mode needed a change in
program structure.

The camera app was structured as
```python
while True:
    if shutter button was just pressed:
        capture a jpeg frame
    else:
        update the viewfinder
```

However, "capture a jpeg frame" needs to (A) switch the camera settings and (B)
capture into a different, larger buffer then (C) return to the earlier
settings. This can't be done during continuous capture mode. So just
restructuring it as follows isn't going to work:

```python
with camera.continuous_capture(buffer1, buffer2) as capture:
    for frame in capture:
        if shutter button was just pressed:
            capture a jpeg frame, without disturbing continuous capture mode
        else:
            update the viewfinder
```

The continuous mode is only implemented in the espressif port; others
will throw an exception if the associated methods are invoked.  It's not
impossible to implement there, just not a priority, since these micros don't
have enough RAM for two framebuffer copies at any resonable sizes.

The capture code, including single-shot capture, now take mp_obj_t in the
common-hal layer, instead of a buffer & length.  This was done for the
continuous capture mode because it has to identify & return to the user the
proper Python object representing the original buffer.  In the Espressif port,
it was convenient to implement single capture in terms of a multi-capture,
which is why I changed the singleshot routine's signature too.
2021-11-03 11:02:46 -05:00
Dan Halbert
38c381633b
Merge pull request #5534 from jepler/add-rainbowio
Add rainbowio
2021-11-02 21:57:08 -04:00
Dan Halbert
4770120c60
Merge pull request #5536 from jepler/better_boot_out_txt
main: redesign boot_out.txt writing
2021-11-02 21:55:00 -04:00
Jeff Epler
63e01cde77 we decided not to add rainbowio on simmel 2021-11-02 19:01:05 -05:00
Jeff Epler
efffb62b36 truncate boot_out.txt if it's long
Now this boot.py:
```py
for i in range(1000):
    print(i)
```
creates a 512-byte boot_out.txt that ends
```
88
89
...
```
2021-11-02 18:23:42 -05:00
Dan Halbert
ec7fc6fb5e
Merge pull request #5539 from kattni/link-fix
Update link.
2021-11-02 16:10:36 -04:00
Kattni Rembor
94fa322ebe Update link. 2021-11-02 13:52:40 -04:00
Jeff Epler
694af3dd23 main: redesign boot_out.txt writing
New design:
 * capture output to a vstr
 * compare the complete vstr to boot_out.txt
 * rewrite if not a complete match

This is resilient against future changes to the automatic
text written to boot_out.txt.

This also fixes rewriting boot_out.txt in the case where
boot.py prints something.

Perhaps it also saves a bit of code space. Some tricks:
 * no need to close a file in read mode
 * no need to switch on/off USB write access, going down to the
   oofatfs layer doesn't check it anyway
2021-11-01 23:05:34 -05:00
Jeff Epler
18eaee9beb reenable RAINBOWIO on these boards 2021-11-01 12:52:13 -05:00
microDev
0f9448d1a4
Merge pull request #5533 from CytronTechnologies/reverse-pr-4981
Reversal of PR #4981
2021-11-01 18:24:16 +05:30
Kong Wai Weng
36459c8a5a Fixed whitespace issues. 2021-11-01 16:50:46 +08:00
Kong Wai Weng
e0332c1e49 Using 4x spaces instead of a tab. 2021-11-01 16:47:02 +08:00
Kong Wai Weng
b64ec36418 Using GP0 as default LED pin. 2021-11-01 16:43:13 +08:00
Kong Wai Weng
0034472778 Reversal of PR #4981. GPIO25 on Maker Pi RP2040 is not connected to anything. 2021-11-01 16:26:40 +08:00
Jeff Epler
df3f54f24a
Merge pull request #5532 from weblate/weblate-circuitpython-main
Translations update from Weblate
2021-10-31 16:36:03 -05:00
Hosted Weblate
b26e6a04c5
Merge remote-tracking branch 'origin/main' 2021-10-31 12:37:11 +01:00
hexthat
ef95ff3fa5
Translated using Weblate (Chinese (Pinyin))
Currently translated at 100.0% (1007 of 1007 strings)

Translation: CircuitPython/main
Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/zh_Latn/
2021-10-31 12:37:11 +01:00
microDev
0a02974505
Merge pull request #5531 from Senuros/main
Several more german translations added
2021-10-31 17:07:04 +05:30
Senuros
409092b180 several more german translations added 2021-10-31 06:17:31 +01:00
Dan Halbert
8657c6a2f5
Merge pull request #5528 from kattni/update-troubleshooting
Update Troubleshooting.
2021-10-29 23:45:52 -04:00
Kattni Rembor
f5ac0ac3e1 Update to point to guide. 2021-10-29 18:15:48 -04:00
Kattni Rembor
7b0660ff92 Update Troubleshooting. 2021-10-29 16:40:51 -04:00
Scott Shawcroft
575843a761
Merge pull request #5527 from Senuros/main
Added some german translations
2021-10-29 10:09:05 -07:00
Senuros
7734e85eeb Added some german translations 2021-10-29 17:55:23 +02:00
Dan Halbert
9e96a3cedc
Merge pull request #5524 from tannewt/fix_nrf_ble_crash
Split listdir entries across two packets
2021-10-28 22:08:35 -04:00
Dan Halbert
fd85ebf88a
Merge pull request #5523 from kattni/led-docs-update
Update D13 to LED, add PWM example.
2021-10-28 15:11:28 -04:00
Scott Shawcroft
bf0bef9684
Split listdir entries across two packets
when the MTU of the BLE connection is smaller than the 28 bytes of
the header. (The smallest possible MTU is 20.)

Fixes #5511
2021-10-28 10:57:16 -07:00
Kattni Rembor
a63af1d04a Update D13 to LED, add PWM example. 2021-10-28 13:30:51 -04:00
Dan Halbert
a8b69f2852
Merge pull request #5518 from jepler/deleted-board-ci
account for deleted boards
2021-10-26 17:49:13 -04:00
Dan Halbert
62cd878e0c
Merge pull request #5517 from ladyada/main
add a nuuuuuboard
2021-10-26 17:48:44 -04:00
Dan Halbert
c61ab864da
Update ports/espressif/boards/adafruit_feather_esp32s2/board.c 2021-10-26 17:14:23 -04:00
Limor "Ladyada" Fried
037d893923
Update ports/espressif/boards/adafruit_feather_esp32s2/pins.c
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2021-10-26 15:55:18 -04:00
Limor "Ladyada" Fried
ccb6c5e5a9
Update ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.h
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2021-10-26 15:55:11 -04:00
Limor "Ladyada" Fried
5e59fa65ec
Update ports/espressif/boards/adafruit_feather_esp32s2/mpconfigboard.mk
Co-authored-by: Dan Halbert <halbert@halwitz.org>
2021-10-26 15:54:49 -04:00
lady ada
613f314857 will delete later 2021-10-26 15:09:05 -04:00
Jeff Epler
30f3cf31e2 account for deleted boards 2021-10-26 14:06:07 -05:00
lady ada
ba4e9797c7 add a nuuuuuboard 2021-10-26 15:05:10 -04:00
Jeff Epler
9da541ed2b
Merge pull request #5513 from weblate/weblate-circuitpython-main
Translations update from Weblate
2021-10-26 08:05:17 -05:00
Hosted Weblate
fb928b017f
Merge remote-tracking branch 'origin/main' 2021-10-26 14:46:40 +02:00
Dan Halbert
e868f1b1fe
Merge pull request #5510 from jepler/cmd25-v2
sdcardio: Use CMD25 across multiple writeblocks() calls
2021-10-26 08:46:28 -04:00
Hosted Weblate
67794e0b9d
Merge remote-tracking branch 'origin/main' 2021-10-25 23:54:32 +02:00
Jeff Epler
9dea5ec724
Merge pull request #5473 from microDev1/patch
Allow any character except / in port or board name
2021-10-25 16:54:27 -05:00
Jeff Epler
015bfb6e63
remove debug print 2021-10-25 16:52:23 -05:00
Hosted Weblate
e0460e03e0
Update translation files
Updated by "Update PO files to match POT (msgmerge)" hook in Weblate.

Translation: CircuitPython/main
Translate-URL: https://hosted.weblate.org/projects/circuitpython/main/
2021-10-25 23:42:22 +02:00
Scott Shawcroft
5315348b11
Merge pull request #5425 from maholli/samd-sleep
functioning samd deep sleep ('alarm.time' & 'alarm.pin')
2021-10-25 14:42:12 -07:00