Commit Graph

2628 Commits

Author SHA1 Message Date
foamyguy
3601bb3062 change value_count max 2023-02-20 20:37:42 -06:00
Dan Halbert
6d51356324 Fix pad assignments on atmel-samd UART 2023-02-19 20:42:44 -05:00
Dan Halbert
3f66a0be83
Merge pull request #7611 from gamblor21/colorconverter-mem-fix
ColorConverter output colorspace non-initialization fix
2023-02-19 20:34:30 -05:00
gamblor21
e78875a93b ColorConverter output colorspace fix 2023-02-18 15:35:56 -06:00
foamyguy
694537acb3 change validation maximum computation 2023-02-18 10:35:39 -06:00
gamblor21
c637ec9ea0 Removed forgotten func defn 2023-02-17 23:37:49 -06:00
gamblor21
b2a205e615 Doc fix 2023-02-17 15:48:26 -06:00
gamblor21
20eb7d11bd Changes times to seconds, remove dirty bitmap flag 2023-02-17 13:06:56 -06:00
Scott Shawcroft
931c7c1c51
Add Bangle.js 2, JDI memory displays and ACeP epd
This 2-in-1 PR started with the goal of support the Bangle.js 2
smartwatch with *no USB*.
* Adds "secure" DFU build support with a committed private key.
* Adds 3-bit color support with one dummy bit for the JDI memory display
* Allows nrf boards to have a board_background_task() run in RUN_BACKGROUND_TASK.
  This is needed because the Bangle.js 2 uses the watchdog to reset.
* Renamed port_background_task() to port_background_tick() to indicate it
  runs on tick, not RUN_BACKGROUND_TASK.
* Marks serial connected when the display terminal is inited. This means
  that safe mode messages show up on the display.

ACep, 7-color epaper displays also pack 3 bits in 4. So, I added that
support as well.
* Adds 3-bit ACeP color support for 7-color e-paper displays. (Not
  watch related but similar due to color depth.)
* Allows a refresh sequence instead of a single int command. The 7" ACeP
  display requires a data byte for refresh.
* Adds optional delay after resetting the display. The ACeP displays
  need this. (Probably to load LUTs from flash.)
* Adds a cleaning phase for ACeP displays before the real refresh.

For both:
* Add dither support to Palette.
* Palette no longer converts colors when set. Instead, it caches
  converted colors at each index.
* ColorConverter now caches the last converted color. It should make
  conversions faster for repeated colors (not dithering.)
2023-02-15 15:03:40 -08:00
Dan Halbert
328585f160 don't enter safemode.py on USER safe mode 2023-02-14 11:20:29 -05:00
Dan Halbert
d46d9d5c21 shorten safe mode messages; improve message printing; fix CIRCUITPY_SAFEMODE_PY=0 2023-02-13 21:29:57 -05:00
Mark
fa435468fa
Merge branch 'main' into gif_displayio_support 2023-02-13 18:30:51 -06:00
Dan Halbert
d8231f1588 Implement safemode.py 2023-02-13 18:26:38 -05:00
gamblor21
88212b066e Doc fix 2023-02-13 11:32:25 -06:00
gamblor21
cab38ed6a6 Doc fixes and renamed play_frame to next_frame 2023-02-12 11:51:23 -06:00
gamblor21
0c95e6a08e Moving to gifio module 2023-02-12 11:17:34 -06:00
gamblor21
da9b6fb0e2 Moving library to /lib 2023-02-10 18:31:59 -06:00
foamyguy
5f3f87e371 validate palette color count and group scale 2023-02-10 18:05:07 -06:00
foamyguy
67fd815e27 maximum value validation for bitmap constructor 2023-02-10 17:39:38 -06:00
foamyguy
bb4cccc1cd use range instead of min where applicable to consolodate bounds checks 2023-02-10 17:26:01 -06:00
gamblor21
19eba41630 Doc fixes and return next frame delay 2023-02-08 22:58:44 -06:00
foamyguy
efe48e61ed argument bounds validation for bitmap.blit() 2023-02-06 17:03:49 -06:00
gamblor21
dbe518680a Memory savings and more properties 2023-02-05 10:54:04 -06:00
gamblor21
2b26242c66 need gif.c in shared-bindings to build 2023-02-04 18:38:07 -06:00
gamblor21
6a9b7199ec Initial gif proof of concept 2023-02-04 16:44:29 -06:00
foamyguy
beb4a797ff bitmap fill, __get_item__, and __set_item__ positive validation 2023-02-04 12:37:43 -06:00
foamyguy
547ca5a452 bitmap constructor positive validation 2023-02-04 12:02:06 -06:00
MicroDev
d9d94eacca
run updated pre-commit 2023-02-01 13:38:41 +05:30
MicroDev
4ef363a797
improve dualbank and storage extension docs 2023-01-29 23:16:45 +05:30
Neradoc
f0058774d0 add CIRCUITPY_SKIP_SAFE_MODE_WAIT to circuitpy_mpconfig.mk
use #if (also a CIRCUITPY_ULAB)
2023-01-29 00:56:16 +01:00
MicroDev
cda5689263
move esp32_camera to espcamera 2023-01-27 22:05:43 +05:30
Maciej Sokołowski
e474df3a18 Add function for drawing polygons to bitmaptools 2023-01-20 23:14:38 +01:00
Dan Halbert
7dd76fc7e4
Merge pull request #7467 from matemaciek/main
Allow lines with ends out of bitmap in `bitmaptools_obj_draw_line`
2023-01-19 21:11:17 -05:00
Maciej Sokołowski
483f14b73f Allow lines with ends out of bitmap in bitmaptools_obj_draw_line 2023-01-19 21:37:25 +01:00
Scott Shawcroft
dca66eb98c
Watch for ctrl-c over BLE workflow serial
Before this, it was impossible to interrupt a running program over
BLE.
2023-01-18 16:28:35 -08:00
Dan Halbert
79b76f7bea
Merge pull request #7445 from tannewt/fix_rpi_mdns
Share the web workflow MDNS object with the user
2023-01-17 14:46:38 -05:00
Scott Shawcroft
8b0db804ba
Fix SPI readinto with negative start or end 2023-01-12 16:25:11 -08:00
Scott Shawcroft
987d9a31c8
Fix pin_or_none 2023-01-12 16:03:45 -08:00
Scott Shawcroft
ee2fe993dd
Fix repeated MDNS use on Pico W 2023-01-12 14:56:06 -08:00
Scott Shawcroft
ca80f30348
Share the web workflow MDNS object with the user
Fixes #7369
2023-01-11 16:05:19 -08:00
Scott Shawcroft
aa2ba4d88b
Have start and end kwargs respect element size
The comment says it is `buffer[start:end]` but it assumed elements
were a single byte long. Now it correctly does multibyte elements
from array.array.

Fixes #4988
2023-01-11 15:36:41 -08:00
Dan Halbert
a974402542 Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
Scott Shawcroft
6b3ae630a9
Improve time alarm doc
Fixes #7406
2023-01-04 14:16:35 -05:00
Dan Halbert
03b43b7b3f complete rework for microcontroller.cpu.frequency and wifi.radio MAC addresses 2023-01-02 11:45:58 -05:00
Dan Halbert
a3adcf0e1a clarify read-only mac address; reuse translate msgs 2023-01-02 10:13:20 -05:00
Jeff Epler
928fb0a9c4
Make the "name or service not known" message translatable 2022-12-26 13:58:31 -06:00
Scott Shawcroft
c16b42e972
Tweak arg checking and comments 2022-12-20 11:00:13 -05:00
Scott Shawcroft
f8ac1d9261
Rework the coproc API
It is now a generic `memorymap` API and an ESP specific `espulp` module.

Fixes #7218. Fixes #3234. Fixes #7300.
2022-12-19 14:08:38 -05:00
Jeff Epler
297657ea9a
Refactor so that all sites of name lookup failure result in gaierror 2022-12-14 14:45:32 -06:00
Jeff Epler
5ac622a30d
get rid of nearly-empty getenv.c file 2022-12-13 13:13:01 -06:00
Jeff Epler
3459fe322b
Withdraw the _environ module
This existed solely for testing, so expose it a different way during
the unix coverage build

Also turn off os.getenv support on samd21.
2022-12-08 15:33:10 -06:00
Jeff Epler
a05829528b
_environ: update documentation 2022-12-08 13:36:48 -06:00
Jeff Epler
ef2bfdb5db
dotenv becomes settings.toml 2022-12-08 12:44:20 -06:00
s-ol
99b8564e8f Add VfsFat.readonly property for getting current state
Previously the only other way of determining whether the Vfs has been mounted
read-write or read-only appears to be to attempt a write operation and detect a
possible OSError.

It wasn't possible for the user code to keep track of the state of the state
since the boot VM has to decide whether to (re)mount read-write or read-only,
but can't (easily) pass this information on to the runtime VM.
2022-12-08 14:45:24 +01:00
Scott Shawcroft
4c064c263e
Merge pull request #7294 from tannewt/analogbufio_rework
Rework the analogbufio API.
2022-12-02 14:53:16 -08:00
Scott Shawcroft
d6c3dfb461
Merge pull request #7297 from jepler/chain-exception-doc
Implement the chain= argument of traceback.print_exception
2022-12-02 14:53:03 -08:00
Scott Shawcroft
f7504ff857
Tweaks based on review comments 2022-12-02 10:19:31 -08:00
Jeff Epler
b83c42e41a
Implement the chain= argument of traceback.print_exception 2022-12-02 10:50:31 -06:00
Scott Shawcroft
9e104c04ae
Merge pull request #7215 from FoamyGuy/set_root_group
displayio.show() API change
2022-12-02 08:45:20 -08:00
Scott Shawcroft
255e997345
Rework the analogbufio API.
* read() is now readinto() and takes the buffer to write into.
* readinto() returns the number of valid samples.
* readinto() can be interrupted by ctrl-c.
* readinto() API doesn't support signed numbers because it never did.
* sample_rate is now required in the constructor because supported
  values will vary per-port.
* 16 bit values are full range. 12 bit samples from RP2040 are stretched
  in the same way they are for AnalogIn.

Fixes #7226
2022-12-01 17:46:07 -08:00
Dan Halbert
082b0d1aed
Merge pull request #7191 from jepler/fastpixelmap
Add a fast PixelMap-like class
2022-12-01 11:43:00 -05:00
foamyguy
0563487433 get slicing 2022-11-30 19:16:20 -06:00
Jeff Epler
530e5a1df2
Use standard validation function 2022-11-30 14:39:51 -06:00
Jeff Epler
c46e219795
Having an input-only pin is rare, save a string on other ports 2022-11-30 14:39:49 -06:00
Jeff Epler
d39d146352
Merge some messages 2022-11-30 14:39:47 -06:00
Jeff Epler
f67bca94c4
On python3 log(0) raises math domain error, not zerodivisionerror 2022-11-30 14:39:33 -06:00
Jeff Epler
2b01c139f5
use a standard validator function 2022-11-30 12:06:20 -06:00
Jeff Epler
7c9cd567a0
If uart is disabled, no pins will work; show NotImplementedError instead 2022-11-30 12:06:18 -06:00
Jeff Epler
8658e7a954
re-use length validator 2022-11-30 12:06:18 -06:00
Jeff Epler
ac999098ee
merge a message 2022-11-30 12:06:18 -06:00
Jeff Epler
6ac2022093
merge a message 2022-11-30 12:06:16 -06:00
Jeff Epler
284ac21f51
merge a message 2022-11-30 12:06:16 -06:00
Dan Halbert
1bcfff3716
Merge pull request #7272 from tannewt/picow_mdns
Add MDNS support to Pico W
2022-11-29 10:09:24 -05:00
MicroDev
8a9d841da9
Merge pull request #7275 from jshimbo/main
supervisor.ticks_ms() documentation has an error
2022-11-29 14:34:24 +05:30
MicroDev
e93af31b63
Merge pull request #7269 from jepler/socketpool-gaierror
Add SocketPool.gaierror
2022-11-29 14:33:12 +05:30
Scott Shawcroft
81afe05811
Merge pull request #7265 from jepler/wifi-monitor-docs
Fix documentation of wifi.Monitor
2022-11-28 16:23:40 -08:00
Scott Shawcroft
c13ca95da1
Add MDNS support to Pico W
This adds both cpy-MAC.local and circuitpython.local support.

Fixes #7214
2022-11-28 16:15:28 -08:00
Jeff Epler
aef55b7e41
Add SocketPool.gaierror
gaierror(-2) is raised in the failure case of getaddrinfo. This is
compatible with cpython's socket module.

Typical session:
```
>>> import socketpool
>>> import wifi
>>> socket = socketpool.SocketPool(wifi.radio)
>>> try: socket.getaddrinfo("boo", 0)
... except socket.gaierror as e: ee = e
...
>>> type(ee)
<class 'gaierror'>
>>> ee.errno == socket.EAI_NONAME
True
>>> ee.strerror
'Name or service not known'
>>> raise ee
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 1, in <module>
gaierror: (-2, 'Name or service not known')
```

Closes: #6941
2022-11-28 16:57:44 -06:00
Scott Shawcroft
ad2d190507
Merge pull request #7247 from tannewt/picow_web_workflow
Enable* web workflow for Pico W
2022-11-28 14:19:42 -08:00
Jeff Epler
e1c025d6dd
Fix documentation of wifi.Monitor
Its methods & properties were incorrectly documented as being directly
in 'wifi'
2022-11-28 13:30:08 -06:00
foamyguy
57d7f7f2ad move to _pixelmap 2022-11-24 09:07:08 -06:00
Jeffrey Shimbo
c0b57ff8c5
Typo in docs for supervisor.ticks_ms()
https://docs.circuitpython.org/en/latest/shared-bindings/supervisor/index.html#supervisor.ticks_ms
ticks_add() helper function has an error
2022-11-24 06:05:46 -08:00
Dan Halbert
17be447c4b correct Radio.connect() and .start_ap() signatures; clean up some code 2022-11-22 17:11:03 -05:00
Scott Shawcroft
dc20390588
Fix stubs 2022-11-22 09:04:12 -08:00
foamyguy
19f1119994 Merge branch 'main' into fastpixelmap
# Conflicts:
#	shared-module/adafruit_pixelbuf/PixelBuf.c
2022-11-21 20:25:58 -06:00
Scott Shawcroft
c3a96a63c0
Enable* web workflow for Pico W
* Except for circuitpython.local which depends on MDNS and will be
done in a follow up PR.

Progress on #7214
2022-11-21 16:24:05 -08:00
s-ol
40d35e9eaa Don't block in I2CTarget.request(-1)
Partially reverts #6985
Closes #7241
2022-11-20 16:08:00 +01:00
foamyguy
ef3398422a allow set_root_group for FrameBufferDisplay instead of show() 2022-11-19 11:41:48 -06:00
foamyguy
e3cae22297 allow set_root_group for EPaperDisplay instead of show() 2022-11-18 17:34:03 -06:00
foamyguy
403e3ef430 change to CIRCUITPYTHON_TERMINAL. change internal API to use set_root_group 2022-11-18 16:53:18 -06:00
MicroDev
f637332de6
Merge pull request #7209 from jepler/code-optimize-pixelbuf
Save code space by packing rgbw values into C union
2022-11-18 14:46:55 +05:30
Scott Shawcroft
866ff5bd21
Merge pull request #7197 from FoamyGuy/vectorio_hidden
implement self hidden property for vectorio shapes
2022-11-16 12:56:10 -08:00
foamyguy
788638f727 displayio.SERIAL_GROUP constant 2022-11-15 19:15:25 -06:00
foamyguy
1329fe998c add to .h and format code 2022-11-14 15:33:55 -06:00
foamyguy
2cd5d4f5a5 allow setting root_group on Display 2022-11-14 15:10:28 -06:00
Jeff Epler
adca341d3b
Save code space by packing rgbw values into C union
It's more efficient passing one register-sized structure than 4
arguments or 4 pointers; working on intermediate values of 'int' size
is also more efficient in code size!

On raspberry pi pico w, this increased free flash space by +104 bytes.
It also increased the speed of my testing animation very slightly, from
187fps to 189fps when run 'unthrottled'
2022-11-14 09:29:45 -06:00
Jeff Epler
cdab078d9d
shared-bindings: Get rid of CYW43 special cases in shared-bindings
.. by moving it into a new weak function that can be replaced
just by the picow build.
2022-11-14 08:44:08 -06:00
foamyguy
56be547754 fix type name 2022-11-11 20:18:42 -06:00
foamyguy
3c4d8c6926 implement self hidden property for vectorio shapes 2022-11-11 17:50:07 -06:00
Jeff Epler
f5c637dc10
Add adafruit_pixelmap.PixelMap
.. a fast helper for animations. It is similar to and inspired by the
PixelMap helper in Adafruit LED Animation library, but with an extremely
fast 'paste' method for setting a series of pixels. This is a common
operation for many animations, and can give a substantial speed improvement.

It's named `adafruit_pixelmap` so that we can package a compatible version
in pure Python for systems that can't fit it in C in flash, or for
Blinka.

This is a proof of concept and can make a very fast comet animation:
```python
import time
import adafruit_pixelbuf
import adafruti_pixelmap
import board
import neopixel
from supervisor import ticks_ms
from adafruit_led_animation.animation.solid import Solid
from adafruit_led_animation import color

pixel_pin = board.GP0
pixel_num = 96

pixels = neopixel.NeoPixel(pixel_pin, pixel_num, brightness=1, auto_write=False, pixel_order="RGB")

evens = adafruit_pixelmap.PixelMap(pixels, tuple(range(0, pixel_num, 2)))
odd_indices = tuple((i, i+2) for i in range(1, pixel_num, 4))
print(odd_indices)
odds = adafruit_pixelbuf.PixelMap(pixels, odd_indices)
assert len(odds) == len(odd_indices)


comet_length = 16

comet1 = [color.calculate_intensity(color.GREEN, ((1+i) / comet_length) ** 2.4)
        for i in range(comet_length)]
comet2 = [color.calculate_intensity(color.PURPLE, ((1+i) / comet_length) ** 2.4)
        for i in range(comet_length)]

pos1 = 0
pos2 = 96//4

while True:
    evens.paste(comet1, pos1, wrap=True, reverse=False, others=0)
    pos1 = (pos1 + 1) % len(evens)

    odds.paste(comet2, pos2, wrap=True, reverse=True, others=0)
    pos2 = (pos2 - 1) % len(odds)
    pixels.show()

    m = ticks_ms()
    if m % 2000 > 1000:
        time.sleep(.02)
```
2022-11-11 07:54:33 -06:00