Commit Graph

1231 Commits

Author SHA1 Message Date
RetiredWizard
1fb6d4d77e I2S pin names per Dan's suggestions on iMX PR 2023-04-28 16:58:39 -04:00
Bernhard Bablok
14c17224a1 update product-id 2023-04-28 08:57:22 +02:00
Bernhard Bablok
4f8ae14c18 update to upstream version 2023-04-28 08:56:52 +02:00
Bernhard Bablok
a86c5f7310 Merge branch 'main' into plasma2040w 2023-04-28 08:41:02 +02:00
Bernhard Bablok
ec6fde91ad integrate latest changes from upstream 2023-04-27 18:14:46 +02:00
Bernhard Bablok
cc3d61eb49 fixed merge conflicts 2023-04-27 13:23:34 +02:00
RetiredWizard
12f59b4948 pre-commit formatting 2023-04-26 21:14:57 -04:00
RetiredWizard
aba4c50e74 Add adafruit_sdcard as frozen library 2023-04-26 21:08:28 -04:00
RetiredWizard
5d0c37f198 Rename folders and add VID/PID from Pimoroni 2023-04-26 17:45:59 -04:00
RetiredWizard
4214f2bb77
Rename ports/raspberrypi/boards/pimoroni_pico_dv to ports/raspberrypi/boards/pimoroni_pico_dv_base 2023-04-26 11:01:56 -04:00
Dan Halbert
34f565dd89
Merge pull request #7891 from tannewt/fix_epd_uc
Add address_little_endian and fix display memory reuse
2023-04-26 00:27:59 -04:00
Dan Halbert
be6e90c0ed
Merge pull request #7877 from dhalbert/rp2040-propmaker
Add Adafruit Feather RP2040 Prop-Maker
2023-04-26 00:23:49 -04:00
Dan Halbert
95acec0f55 Improve pin names 2023-04-25 13:22:42 -04:00
Neradoc
2bee4926f9 Fix Scorpio on-board neopixel pin 2023-04-25 17:22:04 +02:00
RetiredWizard
076cd1fab4
Nope, can't use the COSMO-pico vid/pid pair
Setting back, at least temporarily to the Adafruit pair.
2023-04-25 11:14:48 -04:00
RetiredWizard
361608119c
Change VID/PID to be Raspberry Pi values
Spotted the Cosmo_pico port on circuitpython.org which is the same class of device as the Pimoroni PICO dv so I'm switching the VID/PID to use the Raspberry Pi owned values rather than the Adafruit values just as the Como device uses.
2023-04-25 10:33:13 -04:00
Dan Halbert
2b95fc3029
Merge pull request #7893 from tannewt/fix_rp2040_idle
Fix RP2040 idle
2023-04-24 13:53:12 -04:00
Dan Halbert
b9c7cd4028
describe instance more precisely 2023-04-24 12:58:40 -04:00
David Glaude
6aa3e7d8a6
This is about picodvi not rgbmatrix
There might be another way or other place where the documentation does not match the code.
But this is the most obvious, that's why I found it.
2023-04-23 10:58:02 +02:00
Scott Shawcroft
b59f0e17be
Fix RP2040 idle
Don't idle from main if we scheduled an interrupt for 0 ticks in
the future.

Have RP2040 detect wakes that happen between setting the timer and
the idle call.

Fixes #7361
2023-04-21 16:04:23 -07:00
Scott Shawcroft
b16037859c
Fix native epd boards 2023-04-21 14:36:35 -07:00
Scott Shawcroft
d5b747b305
Fix board inits 2023-04-21 13:23:01 -07:00
RetiredWizard
b3c8575b81 Update for Pimoroni Pico dv pins/connectors 2023-04-20 21:22:39 -04:00
Scott Shawcroft
0f9fb33371
Merge branch 'main' into rp2040_cpu_frequency 2023-04-19 17:05:58 -07:00
Scott Shawcroft
e2ab7a4751
Change voltage. Refine docs 2023-04-19 17:04:54 -07:00
Scott Shawcroft
13bb801211
Fix docs and windows 2023-04-19 15:42:02 -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
Dan Halbert
7567082965 Add Adafruit Feather RP2040 Prop-Maker 2023-04-18 15:52:06 -04:00
Bernhard Bablok
2a49567ec6 added Adafruit_CircuitPython_Register to frozen libs 2023-04-17 19:03:42 +02:00
Bernhard Bablok
2b3601451f Merge branch 'main' into badger_2040_w 2023-04-08 13:06:37 +02:00
Scott Shawcroft
097af804cd
Fix ticks
In #7497 port_background_task was renamed to port_background_tick
but the actual call site wasn't changed. This meant that it was
no longer called!

Rename more functions from task to tick to make it clearer which is
which.
2023-04-07 09:49:51 -07:00
Scott Shawcroft
76f9c187e0
Merge pull request #7843 from waptang/Waveshare_RP2040-LCD-0.96
Add Waveshare RP2040-LCD-0.96
2023-04-07 09:10:57 -07:00
John Sanders
af35337136 Add Waveshare RP2040-LCD-0.96 2023-04-07 03:24:30 -07:00
MicroDev
50e259fefc
Merge pull request #7836 from thess/rfc-web-server
RFC: Web Workflow reliability and performance improvements
2023-04-07 09:20:37 +05:30
Scott Shawcroft
6df88ac948
Merge pull request #7825 from jepler/better-synthio
Better synthio
2023-04-05 12:23:10 -07:00
Bernhard Bablok
690168b1ab add support for Plasma2040W 2023-04-05 19:53:26 +02:00
Ted Hess
9825b7fbb7 Web Workflow sockets and threads handling improvements.
Fixes polling thread looping forever hangs preventing new connections.
Don't lose listening sockets on mp resets and re-init.
Keep better separation of "system" and "user" sockets.
Track socket states to prevent re-use of sockets before closed.
Close REST socket when transaction completes. No post-init.
Remove unnecessary state flags.
2023-04-05 13:50:42 -04:00
Dan Halbert
a8ea8ea81a
Merge pull request #7834 from dhalbert/adafruit-feather-rp2040-can
Add Adafruit Feather RP2040 CAN
2023-04-05 13:25:19 -04:00
Jeff Epler
4c7b962d16
Increase synthio channels to 12 on rp2040
with the AudioMixer workaround for #7837 this appears to work
even up to 48kHz.
2023-04-05 10:30:57 -05:00
Dan Halbert
85cc21adc0 add Adafruit Feather RP2040 USB Host 2023-04-04 19:44:06 -04:00
Dan Halbert
44d7f4e7e1 fix Neopixel for RP2040 CAN 2023-04-04 19:33:39 -04:00
Dan Halbert
5d56ef06e7 Add Adafruit Feather RP2040 CAN 2023-04-04 19:16:39 -04:00
Dan Halbert
5c429320a8 Add wifi.radio.connected, wifi.radio.ap_active 2023-03-31 17:57:53 -04:00
Gregory Neverov
173bc198c6 don't set tcp_err callback for listen sockets 2023-03-29 11:49:32 -07:00
Kattni Rembor
2a4383e633 Add Feather RP2040 RFM, update DVI. 2023-03-28 15:23:19 -04:00
Kattni Rembor
16854ae570 Add BUTTON, reorganise pins. 2023-03-27 16:29:03 -04:00
Bernhard Bablok
659e5b4bed support for Pimoroni Badger2040W 2023-03-24 12:29:51 +01:00
hathach
8c1095b268
Merge branch 'main' into add-codespell 2023-03-23 14:09:57 +07:00
hathach
a8abe8e705
remove lib from exludes, fix all remaining typos 2023-03-23 13:59:08 +07:00
Dan Halbert
3ef2b7f81f
Merge pull request #7777 from tannewt/fix_epd_grayscale
Fix tricolor epd and add EPD feather
2023-03-22 20:13:23 -04:00
Jeff Epler
e05f0ba3b2
Revert "Correctly raise OS error in socketpool_socket_recv_into()"
This reverts commit 7e6e824d56.

Fixes #7770

The change in #7623 needs to be revered; the raise-site added in #7632
is the correct one and the one in socketpool needs to be reverted.

This is not affecting 8.0.x because #7623 was not back-ported to there
before we realized it was not a full fix.

Both #7770 and #7606 should be re-tested. I didn't test.
2023-03-22 14:32:06 -05:00
Scott Shawcroft
a280c010c2
Fix tricolor epd and add EPD feather 2023-03-22 11:14:38 -07:00
Jeff Epler
3ac696e7ba
Merge pull request #7731 from kreasteve/statemachine_run_fix
Statemachine run fix
2023-03-19 20:47:09 -05:00
hathach
fecc1bdedb
fix typos (partial) detected by codepell 2023-03-18 22:17:02 +07:00
Benjamin Shockley
f35af4c9ce
Update mpconfigboard.mk
Added trailing line
2023-03-16 16:54:55 -05:00
Benjamin Shockley
d59a57ecc9
Update pins.c
Changed GIO00 to GIO0
2023-03-16 16:54:38 -05:00
Benjamin Shockley
eab8633a9e
Updated Fig Pi Pins and Added Memory Option
Updated the Fig Pi pin definition to match latest production and fix errors.  Added an optional memory chip for parts shortage issues.
2023-03-16 16:41:49 -05:00
kreasteve
208c081c95 bugfix_#7706 2023-03-16 11:10:57 +01:00
kreasteve
d7fb21ec76 Revert "bugfix"
This reverts commit 4f1627f68e.
2023-03-16 11:02:41 +01:00
kreasteve
4f1627f68e bugfix 2023-03-16 10:56:22 +01:00
MicroDev
37b9f778e1
Merge pull request #7237 from kdb424/main
Add Boardsource Blok
2023-03-16 00:02:10 +05:30
Kyle Brown
6062e75b08 add Blok 2023-03-15 08:58:53 -07:00
MicroDev
11cf031284
reset watchdog conditionally 2023-03-15 19:03:57 +05:30
MicroDev
8ff408161a
update watchdog implementation for raspberrypi 2023-03-15 16:38:50 +05:30
Dan Halbert
9083ae02de
Merge pull request #7710 from PaintYourDragon/pb-feather-dvi
Add Feather RP2040 DVI
2023-03-14 13:10:47 -04:00
hathach
b432cf6201
fix rp2040 with new shared irq usb handler 2023-03-13 22:46:27 +07:00
Paint Your Dragon
ff0a17d095
Merge branch 'adafruit:main' into main 2023-03-10 13:45:53 -08:00
Dan Halbert
0f31ba676b update errata fixes for RP2040 2023-03-09 17:40:53 -05:00
Scott Shawcroft
fe40035cb9
Merge pull request #7697 from dhalbert/pico-sdk-cyw43-update
pico-sdk to 1.5.0; cyw43-driver to 0.9.0
2023-03-09 10:02:45 -08:00
Dan Halbert
2ebc0ea51c
GitHub online editor introduced spaces on blank lines :( 2023-03-09 11:30:38 -05:00
Dan Halbert
de3c5ad2f4
add blank lines around aliased pins 2023-03-09 11:00:55 -05:00
Dan Halbert
fef9571400 pico-sdk to 1.5.0; cyw43-driver to 0.9.0 2023-03-08 22:43:12 -05:00
Phillip Burgess
fa55669da5 Merge branch 'main' of https://github.com/PaintYourDragon/circuitpython 2023-03-08 12:55:23 -08:00
Phillip Burgess
a2514ca304 Add board adafruit_feather_rp2040_dvi
Based on Feather RP2040 SCORPIO, but new USB PID (from MBAdafruitBoards/Production) and pin name changes for GP16-23 (CKN/CKP etc., from board schematic).
2023-03-08 11:37:51 -08:00
MicroDev
b17364a447
conditionally build all languages 2023-03-04 15:08:54 +05:30
Dan Halbert
859a48723f
Merge pull request #7633 from tannewt/fix_imx_pwm
Fix `pwmio` on iMX RT.
2023-02-28 14:11:06 -05:00
Scott Shawcroft
8e4626ffba
Merge pull request #7559 from startup-potech/main
Request to add a COSMO-Pico board
2023-02-28 09:49:31 -08:00
Dan Halbert
f9831b3bbc
Merge pull request #7639 from adafruit/8.0.x
Merge 8.0.x up to main
2023-02-24 19:32:09 -05:00
Scott Shawcroft
f832386cda
Merge remote-tracking branch 'adafruit/main' into banglejs2 2023-02-23 14:43:38 -08:00
Scott Shawcroft
1acf65ee22
Fix pwmio on iMX RT.
It now handles deinit, never_reset and sharing tracking. PWM
now runs in the WAIT state as well during a time.sleep().

_reset_ok() was removed because it was called in one spot right
before deinit().

Some PWMOut were also switched to a bitmap for use instead of
reference count. That way init and deinit are idempotent.

Fixes #6589. Fixes #4841. Fixes #4541.
2023-02-22 11:22:39 -08:00
Jeff Epler
de9233f84a
raspberrypi: SSLSocket: raise OSError when appropriate
Rather than returning the negative error value.

This is intended to close #7606, though I did not test with mqtt.
Instead, I created a simple standalone test program:
```python
import wifi, socketpool, ssl, time
#wifi.radio.connect(<omitted>)
import socketpool
socket = socketpool.SocketPool(wifi.radio)
ctx = ssl.create_default_context()

b = bytearray(8)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sss = ctx.wrap_socket(s, server_hostname='example.com')
sss.connect(('example.com', 443))
sss.setblocking(False)
r = sss.recv_into(b)
print(r, b)  # prints 4294967285 which is -11 as unsigned
sss.close()
```

Before the change, r was the out of range value 4294967285. After the
change, the recv_into call raises OSError instead.

This is comparable to the behavior on standard Python, though an
SSLWantReadError is raised instead.

The original (mis)behavior seems to match what was uncovered deep inside
minimqtt by adding logging:
```
370.578: DEBUG - PKT: _sock_exact_recv: recv_len = 4294967285
```
2023-02-22 10:07:48 -06:00
Scott Shawcroft
de5f58a61d
Merge branch 'main' into banglejs2 2023-02-21 12:04:28 -08:00
root
7e6e824d56 Correctly raise OS error in socketpool_socket_recv_into() 2023-02-21 13:38:29 -06:00
MicroDev
508f2015b6
Merge pull request #7605 from Neradoc/pico-uart-in-use-error
Tweak the UART in use message on RP2040
2023-02-18 08:35:52 +05:30
Neradoc
13716c9c30 tweak the UART in use message on RP2040 2023-02-17 23:29:44 +01:00
Dan Halbert
bbadc00599
Merge pull request #7577 from dhalbert/safemode-py
Implement safemode.py
2023-02-16 14:15:20 -05:00
Gregory Neverov
fd1c3ca784 Increase number of LWIP timers for MDNS 2023-02-15 16:40:45 -08: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
MicroDev
32d86c3ea3
Merge pull request #7580 from adafruit/8.0.x
Merge 8.0.x up to main
2023-02-15 09:16:51 +05:30
MicroDev
48077daa7f
Merge pull request #7581 from gneverov/issue_7333
Add function common_hal_busio_uart_never_reset for rp2
2023-02-15 09:16:25 +05:30
Gregory Neverov
98b61279e4 Add function common_hal_busio_uart_never_reset for rp2 2023-02-14 09:05:24 -08:00
Dan Halbert
d8231f1588 Implement safemode.py 2023-02-13 18:26:38 -05:00
Scott Shawcroft
7d236f2782
Merge pull request #7547 from ajs256/add_sprig
Add new board hack_club_sprig
2023-02-13 10:25:04 -08:00
Pierre Constantineau
676cbb308d minor update to boards.c to fix mismatched number of LEDs causing LEDs not to be reset 2023-02-13 09:52:18 -06:00
Ubuntu
e125370cd4 first commit 2023-02-09 01:59:59 +00:00
Jeff Epler
b9f689adf4 Use lowest drive level for PIO 2023-02-08 16:18:58 -06:00
Alex
e78143a2f5
fix copyright header 2023-02-05 11:18:23 -08:00
Alex Sirota
07e8506b79 Add board hack_club_sprig 2023-02-03 20:19:11 -08:00
Gregory Neverov
77c6daf4b8 don't throw exception 2023-02-01 16:33:22 -08:00
MicroDev
d9d94eacca
run updated pre-commit 2023-02-01 13:38:41 +05:30
Dan Halbert
13338df9f1
Merge pull request #7462 from tannewt/fix_rp2_reset_reason
Tweak RP2040 reset reason
2023-01-19 21:10:57 -05:00
Scott Shawcroft
82a313065e
Tweak RP2040 reset reason
Watchdogs are used to reboot out of the bootloader. There is a
scratch register for user watchdogs. So use sdk functions to better
distinguish these.

Related to #7346
2023-01-17 16:12:08 -08:00
Scott Shawcroft
683e393878
Add comments for MDNS code 2023-01-17 14:07:30 -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
Colin B
bfba1e4100 Change common_hal_mcu_processor_set_frequency to void
* Add warning about setting RP2040 frequency
2023-01-16 21:26:13 -08:00
Dan Halbert
79bd88349e
Merge pull request #7444 from tannewt/fix_start_end_w_arrays
Have start and end kwargs respect element size
2023-01-13 20:11:41 -05:00
Scott Shawcroft
ee2fe993dd
Fix repeated MDNS use on Pico W 2023-01-12 14:56:06 -08:00
Scott Shawcroft
5c517b7e5a
Handle MDNS deinited better. 2023-01-12 11:24:20 -08:00
Scott Shawcroft
72f4a8ebbc
Merge pull request #7423 from 0xCB-dev/add-0xCB-Helios
add support for 0xCB Helios rp2040 controller
2023-01-11 16:27:36 -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
Scott Shawcroft
78c2fa5b28
Merge pull request #7437 from dhalbert/improve-type-checking-error-msgs
Improve type validation error messages, especially for pins
2023-01-11 10:54:22 -08:00
Jeff Epler
e817563ca0
Update cyw43-driver, fix no-password wifi
Now, open wifi works on Pico W, so this closes #7438.

For the web workflow it's now OK to either
 * specify an empty password string (as before)
 * not have the CIRCUITPY_WIFI_PASSWORD key at all (new functionality)
2023-01-10 15:07:17 -06:00
Dan Halbert
a974402542 Improve type validation errors messages, especially for pins 2023-01-10 15:02:55 -05:00
Colin B
a84a8855ed Add frequency setting for RP2040 boards. 2023-01-07 17:41:37 -08:00
Conor Burns
5aa8419455
add pid.codes VID and PID 2023-01-07 13:11:38 +01:00
Conor Burns
56c0f0388d
add 0xCB Helios 2023-01-05 23:02:00 +01:00
Scott Shawcroft
bb3a1c0a2a
Merge pull request #7153 from fonix232/feature/waveshare_rp2040_lcd_1_28
feat: Add support for Waveshare RP2040-LCD-1.28
2023-01-04 10:18:01 -08:00
Dan Halbert
4f78d63905
Merge pull request #7412 from 2231puppy/e-fidget
Add E-Fidget board
2023-01-04 12:32:27 -05:00
2231puppy
38ebe90f7c Remove unexposed pins from E-Fidget 2023-01-03 19:24:48 -05:00
2231puppy
bea62030b7 Add E-Fidget board 2023-01-03 16:02:24 -05:00
Jozsef Kiraly
f23a96fa09
Update config with proper USB VID 2023-01-03 20:31:18 +00:00
Jozsef Kiraly
463c8d0f11
Merge pull request #2 from adafruit/main
Merge main
2023-01-03 20:28:18 +00: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
Dan Halbert
4e31522d08
Merge pull request #7373 from jaygreco/add_nullbits_bit_c_pro
Add nullbits Bit-C PRO board
2023-01-02 09:22:16 -05:00
Jeff Epler
928fb0a9c4
Make the "name or service not known" message translatable 2022-12-26 13:58:31 -06:00
Jay Greco
cdefd2e674 Add nullbits Bit-C PRO board 2022-12-25 15:21:32 +00:00
Neradoc
b36d603cf3 add GP25 as status LED on the Raspberry Pi Pico 2022-12-19 22:11:30 +01:00
Dan Halbert
66efed5ba5 fix AuthMode printing regression 2022-12-15 15:49:58 -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
Dan Halbert
398b7c26ca
Merge pull request #7321 from jepler/dotenv-becomes-toml
Dotenv becomes toml
2022-12-13 19:56:36 -05:00
Jeff Epler
d49af4d784
make wording a bit clearer 2022-12-13 08:11:47 -06:00
Pontus Oldberg
aa5b1e063f Added new RP2040 board with integrated SD/Card reader and RTC 2022-12-13 13:34:28 +01:00
Jeff Epler
adff93c61a
Mark cyw43 pins "never reset" before reset_port
reset_port calls reset_all_pins, which disables the built-in pull
down. In theory, this could allow some CYW43 interfacing pin to float
to an inappropriate value. There's no proof of this! but the move can't
really hurt, either
2022-12-12 20:14:08 -06:00
Jeff Epler
90894014a2
Use the HW LED as status indicator
For me this made a rare startup failure stop, which is nonsense.
2022-12-12 19:43:10 -06:00
Jeff Epler
243ecc2502
remove debugging prints 2022-12-08 14:18:22 -06:00
Jeff Epler
1fe05cb8cd
pico w: re-use previous connection if ssid matches 2022-12-08 12:44:34 -06:00
Jeff Epler
ff8d051eff
Add an additional large delay time at start for pico w boards 2022-12-07 15:10:13 -06:00
Scott Shawcroft
d7874e65c2
Merge pull request #7299 from BooleanMattock/main
Fix to Issue #7224 - Servo update slow due to PWM channel duty cycle update busy-wait
2022-12-05 12:54:41 -08:00
BooleanMattock
afb5301cef Fix to Issue #7224 - tested 2022-12-02 20:21:40 -05: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
f7504ff857
Tweaks based on review comments 2022-12-02 10:19:31 -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
Bill Sideris
3fb4fd81e9
Revert "debug_dhcp to follow general debug" 2022-11-30 22:44:18 +02:00
Bill Sideris
0738d50834
debug_dhcp to follow general debug 2022-11-30 22:24:21 +02:00
Bill Sideris
f8070d2141
Change comment, and logic on dhcpserver 2022-11-30 21:51:50 +02:00
Bill Sideris
44d5326d4c
fix picow-ap 2022-11-30 19:36:00 +02:00
Bill Sideris
362018dcca
Merge branch 'main' into picow-ap 2022-11-30 19:11:03 +02: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
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
Scott Shawcroft
30563655d7
Merge pull request #7249 from dhalbert/wifi-connect-ap-api
correct Radio.connect() and .start_ap() signatures; clean up some code
2022-11-23 10:29:05 -08:00
Dan Halbert
17be447c4b correct Radio.connect() and .start_ap() signatures; clean up some code 2022-11-22 17:11:03 -05:00
Dan Halbert
6d022733b3
Merge pull request #7162 from rhooper/boards-list
add boards list to make error message
2022-11-21 23:18:37 -05: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
Bill Sideris
b40facd0b4
Error msg changes 2022-11-22 01:00:34 +02:00
Dan Halbert
1611cf98da have clock start high in SPI mode 3 2022-11-18 18:27:38 -05:00
Bill Sideris
88bd9ef6b8
just change the ap error 2022-11-18 22:51:05 +02:00
MicroDev
c3c1717813
refactor common port specific Makefile code 2022-11-18 23:00:28 +05:30
MicroDev
e2a3597263
add awesome new make error message
Copied from initial implementation on atmel-samd

Co-authored-by: Rose Hooper <rhooper@toybox.ca>
Co-authored-by: Jeff Epler <jepler@gmail.com>
2022-11-18 11:27:23 +05:30
Bill Sideris
b8cd6c093f
picow-ap progress 2022-11-17 21:47:39 +02:00
Bill Sideris
a234b74e87
Merge branch 'adafruit:main' into picow-ap 2022-11-16 21:32:46 +02:00
Scott Shawcroft
6689b9ad09
Merge pull request #7208 from domdfcoding/weact_pico_16mb
Add support for the 16MB WeAct Studio Pico
2022-11-16 09:59:37 -08:00
Jeff Epler
ef34378b1d
Merge pull request #7201 from jepler/rp2040-light-sleep
raspberrypi: Make port_idle_until_interrupt work
2022-11-15 17:25:48 -06:00
Jeff Epler
ef93eda0a0
Merge pull request #7192 from bill88t/picow-debug
Fix pi cow debug compilation
2022-11-15 14:08:44 -06:00
Bill Sideris
6954e569b7
since it ain't leaving.. 2022-11-15 00:05:01 +02:00
Bill Sideris
fde1c05e6d
Revert "remove lwip_src"
This reverts commit 398e9122a0.
It fails on LINK without them.
2022-11-14 20:03:41 +02:00
Bill Sideris
398e9122a0
remove lwip_src 2022-11-14 19:33:06 +02:00
Bill Sideris
6ad61a3fd1
Radio.c work 2022-11-14 19:31:18 +02:00
Bill Sideris
2e6dd1bf1f
Radio.c no longer needs ping.h 2022-11-14 18:36:42 +02: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
Dominic Davis-Foster
e1046b1050
Add support for the 16MB WeAct Studio Pico 2022-11-14 14:04:07 +00:00
Dan Halbert
8f414eb4ee
Merge pull request #7179 from jepler/picow-voltage-monitor
Add ability to read VOLTAGE_MONITOR on Pico W
2022-11-13 22:40:54 -05:00
Jeff Epler
e4d620f055
make whitespace match 2022-11-12 09:17:52 -06:00
Jeff Epler
78fc43baab
raspberrypi: Make port_idle_until_interrupt work
This needs thorough testing before it's merged, as we tried
and reverted this once before (#5341 and #5356).

I think that besides checking for tinyusb having "something to do",
the fact that `port_interrupt_after_ticks` and `port_disable_tick`
weren't implemented that was causing a secondary problem.

I've tested this on a pico w over reboot-cycles and ctrl-c-cycles,
with and without drive automounting, with and without serial repl open,
and on a power-only connection.

I didn't notice the problem reported in #5356 after merely implementing
port_idle_until_interrupt; but I did notice that sleeps in general would
take over-long until "something" (like writing to the USB drive) happened;
I think "something" was probably calling port_enable_tick(). When this
problem was happening, sleeps would take a lot longer; for instance,
`sleep(.001)` would take about 1/20s and `sleep(.1)` would take about 1/7s.
2022-11-12 09:16:41 -06:00
Dan Halbert
983502d6e3 ignore pin changes before sleep 2022-11-11 15:31:49 -05:00
Bill Sideris
e6a4e2982f
Update ports/raspberrypi/common-hal/wifi/Radio.c
u32_t -> uint32_t

Co-authored-by: MicroDev <70126934+MicroDev1@users.noreply.github.com>
2022-11-11 14:40:47 +02:00
Bill Sideris
0bf9df232a
fix debug 2022-11-11 14:17:57 +02:00
paul-1
11f1174658
picow: Change init to use country code routine.....place holder for future improvements to allow country code setting. 2022-11-10 17:24:09 +02:00
paul-1
851c2cd8cb
picow: Add channel setting when starting AP 2022-11-10 17:23:59 +02:00
paul-1
8fdb2df0bf
picow: enable dhcpserver for apmode. 2022-11-10 17:23:38 +02:00
Bill Sideris
25c0a0aca9
Merge branch 'adafruit:main' into picow-ap 2022-11-10 17:04:21 +02:00
Jeff Epler
7f36a365cf
delay 100us for analog voltage to stabilize
.. otherwise, depending on the prior state of the pin as a digital
input, the value read could be 20% low.
2022-11-08 10:43:14 -06:00
Jeff Epler
09f6919c93
Add ability to read VOLTAGE_MONITOR on Pico W
Because this must be treated like an in-use pin for all other purposes,
unfortunately a special case must be added in shared-bindings.

Multiple AnalogIn objects for VOLTAGE_MONITOR can be created (because
in use tracking isn't working) but this causes no harm.

Testing performed: Read the monitor, then imported wifi. When the
pin state was insufficiently restored, the second step would fail
with debug messages about do_ioctl timeout.

```
import analogio, board
a = analogio.AnalogIn(board.VOLTAGE_MONITOR)
print(a.value)
import wifi
```

Closes: #7020
2022-11-08 09:37:15 -06:00
Jeff Epler
452ebe27ae
socketpool: make socket objects selectable
.. which will lead to them being usable in async contexts, pending
relevant changes in asyncio
2022-11-05 12:05:19 -05:00
Petr Sedlacek
f3ec46bbb5 Add missing pin definitions for 42. Keebs Frood 2022-11-04 15:33:16 +01:00
Jeff Epler
403a5b2681
Merge pull request #7126 from jepler/scorpio
add feather rp2040 scorpio
2022-11-02 14:47:40 -05:00
Dan Halbert
ded134c346 store wake_alarm in a static object 2022-10-29 16:26:36 -04:00
Jozsef Kiraly
992e97d84b fix: pre-commit 2022-10-29 20:00:37 +01:00
Jozsef Kiraly
9ca057385a feat: Add support for Waveshare RP2040-LCD-1.28 2022-10-29 18:52:43 +01:00
Dan Halbert
0221cc8df7 Merge remote-tracking branch 'adafruit/main' into alarm-lifetime 2022-10-28 14:11:32 -04:00
Dan Halbert
4e20049c38
Merge pull request #7122 from jepler/picow-ssl-server
pico w: implement sslsocket bind, listen, accept
2022-10-28 09:33:21 -04:00
Dan Halbert
9307b62ad5 wip 2022-10-27 22:42:04 -04:00
Dan Halbert
ca25016b52
Merge pull request #7119 from jepler/picow-reuseaddr
Enable, use SOF_REUSEADDR
2022-10-26 15:25:50 -04:00
Jeff Epler
7545e02a8e
add feather rp2040 scorpio 2022-10-26 10:05:37 -05:00
Jeff Epler
0cf096dda1
pico w: implement sslsocket bind, listen, accept 2022-10-25 14:46:41 -05:00
Jeff Epler
f997d0053d
Enable, use SOF_REUSEADDR
This is the lwip no-os version of SO_REUSEADDR, which is set on all
listening sockets in the espressif port; do so here as well,
it makes running servers easier. The "address in use" error does
not occur.
2022-10-25 10:09:16 -05:00
Petr Sedlacek
bd7f0e23d7 Adds support for the 42. Keebs Frood RP2040 board
https://github.com/piit79/Frood
2022-10-25 16:40:32 +02:00
Kattni Rembor
5ea8b75e17 Add STEMMA_I2C() object to Picos for Cowbells. 2022-10-24 16:27:32 -04:00
Bill Sideris
7a50beb67e
PicoW more ap work 2022-10-22 11:58:44 +03:00
Bill Sideris
8cc536bb7f
PicoW start_ap() 2022-10-21 13:20:16 +03:00
microDev
b33a2b45dc
add coproc alarm 2022-10-20 18:38:20 +05:30
Dan Halbert
7015b7396e
Merge pull request #7089 from jepler/picow-gpio-number
pico w: Disentangle "TOTAL_GPIO_COUNT", it's complicated
2022-10-19 22:42:16 -04:00
Jeff Epler
576a1ac700
pico w: Disentangle "TOTAL_GPIO_COUNT", it's complicated
You might wonder how this fixes a problem with PulseIn, when the
changes aren't to any of those files! PulseIn is implemented in terms of
StateMachine, which had some assumptions about the relation between
the index of a pin object in mcu_pin_global_dict_table and its "pin
number". This was true, until some pins were removed from the
microcontroller module on Pico W.

Closes: #7078
2022-10-19 21:09:50 -05:00
Jeff Epler
8bef4282c0
pico w: implement static configuration methods in wifi.Radio 2022-10-19 20:54:53 -05:00
Dan Halbert
08e1cdb282
Merge pull request #7079 from jepler/picow-2xmss
Pico W grab bag
2022-10-19 15:03:00 -04:00
Jeff Epler
6e350a65cf
Merge pull request #7076 from bill88t/early-wifi
Implement async wifi connection on picow
2022-10-17 19:54:58 -05:00
Jeff Epler
3b7feccd9b
picow: Implement stop_station
Weirdly we have to stop the AP too (which we never started),
or cyw43_tcpip_link_status still reports that STA is connected.
As long as AP mode isn't implemented, this doesn't matter and
we can just do it.
2022-10-17 19:42:10 -05:00
Jeff Epler
57756863ef
picow: depending on memory pressure, may only be able to write 1 MSS
Foamyguy discovered that trying to send >2920 bytes at once consistently
failed. I further discovered that sometimes trying to send >1460 bytes
would fail too.  By "fail", I mean that it would take a very long time
(around 200 * 50ms) before erroneously reporting that all bytes were
written.

In my testing, this change causes larger writes to successfully
send either 2920 or 1460 bytes (possibly after doing some 50ms waits
for a previous packet to clear).

The documentation of socket.send always stated that it COULD send fewer
bytes than requested, but adafruit_httpserver assumed that the number
of requested bytes were always sent, so after this change alone,
adafruit_httpserver will still not work properly.

Closes: #7077 (albeit fixes are needed in adafruit_httpserver too)
2022-10-17 19:42:07 -05:00
Jeff Epler
861b22730e
picow: if initial write fails, write at most 1 TCP MSS of data 2022-10-17 19:28:02 -05:00
Jeff Epler
1975742d9f
picow: fix formatting numbers in lwip debug output 2022-10-17 19:28:02 -05:00
Jeff Epler
6128f4e5af
picow: add resolution of ".local" names 2022-10-17 19:28:01 -05:00
Bill Sideris
47c373e67e
Use cyw43_tcpip_link_status instead 2022-10-17 18:33:32 +03:00
Bill Sideris
bce024f59e
Implement async wifi connection on picow 2022-10-17 18:17:14 +03:00
Jeff Epler
47541afc7c
picow: ask at a lower level if the interface is up
Closes: #7072

```
Adafruit CircuitPython 8.0.0-beta.2-9-g5192082e64-dirty on 2022-10-17; Raspberry Pi Pico W with rp2040
>>> import wifi
>>> print(wifi.radio.ipv4_address)
None
>>> import os
>>> wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))
>>> print(wifi.radio.ipv4_address)
10.0.2.94
```
2022-10-17 10:08:50 -05:00
Jeff Epler
d4b1d4d430
Fix GPIO state when initializing CYW43 pin
Closes: #7063
2022-10-15 13:10:22 -05:00
Dan Halbert
062d63ee3a
Merge pull request #7050 from jepler/picow-wirelsess-off-in-deep-sleep
picow: Turn off wifi co-processor regulator when entering deep sleep
2022-10-14 08:17:16 -04:00
Jeff Epler
3b3fe44174
implement hashlib for picow 2022-10-13 20:42:50 -05:00
Jeff Epler
0c5fd55c16
picow: Turn off wifi co-processor regulator when entering deep sleep
This reduces power consumption during true deep sleep.

In my measurements with ppk2 and a program that _irrevocably_ entered
deep sleep (no time alarm or pin alarm), power usage as measured on a
ppk2 decreased from ~10mA to ~1mA.
2022-10-13 20:10:10 -05:00
Georg Bøe
e768b9ebb3 Return correct errno 2022-10-13 21:00:51 +02:00
Jeff Epler
874ddd67bf
Pico W: ssl: factor out do_handshake 2022-10-12 11:38:30 -05:00
Jeff Epler
1641a7c002
Pico W: ssl: Correctly handle errors in send/recv
The prefixed versions raise Python exceptions, the un-prefixed return
negative error values. We don't want to raise an exception from here,
it leaves the SSL stack in an undefined state.
2022-10-12 11:38:30 -05:00
Jeff Epler
7c849fdadb
Pico W: ssl: Raise MemoryError for allocation errors 2022-10-12 11:38:29 -05:00
Jeff Epler
b1f7940297
Pico W: Correctly treat empty cadata= as disabling host checking 2022-10-12 11:38:29 -05:00
Jeff Epler
ca9523b814
Pico w: socket: Correctly return negative error code from recv_into 2022-10-12 11:38:29 -05:00
Jeff Epler
62cbd3bcd8
Pico w: socket: correctly track sockets generated by accept() 2022-10-12 11:38:26 -05:00
Dan Halbert
e19abef57e forgot to add these! 2022-10-11 13:12:43 -04:00
Dan Halbert
851f8a188d Merge remote-tracking branch 'adafruit/main' into HEAD 2022-10-11 12:21:59 -04:00
Jeff Epler
0c8b261ec9
picow: Add support of self-signed certificates.
## Testing self-signed certificates and `load_verify_locations`

Obtain the badssl "self-signed" certificate in the correct form:

```sh
openssl s_client -servername self-signed.badssl.com -connect untrusted-root.badssl.com:443 < /dev/null | openssl x509 > self-signed.pem
```

Copy it and the script to CIRCUITPY:
```python
import os
import wifi
import socketpool
import ssl
import adafruit_requests

TEXT_URL = "https://self-signed.badssl.com/"
if not wifi.radio.ipv4_address:
    wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))

pool = socketpool.SocketPool(wifi.radio)
context = ssl.create_default_context()
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} without certificate (should fail)")
try:
    response = requests.get(TEXT_URL)
except Exception as e:
    print(f"Failed: {e}")
else:
    print(f"{response.status_code=}, should have failed with exception")

print("Loading server certificate")
with open("/self-signed.pem", "rb") as certfile:
    context.load_verify_locations(cadata=certfile.read())
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} with certificate (should succeed)")
try:
    response = requests.get(TEXT_URL)
except Exception as e:
    print(f"Unexpected exception: {e}")
else:
    print(f"{response.status_code=}, should be 200 OK")
```
2022-10-10 15:53:56 -05:00
Jeff Epler
c98174eea5
Add support for SSL client certificate (load_cert_chain)
Tested with badssl.com:

 1. Get client certificates from https://badssl.com/download/
 2. Convert public portion with `openssl x509 -in badssl.com-client.pem -out CIRCUITPY/cert.pem`
 3. Convert private portion with `openssl rsa -in badssl.com-client.pem -out CIRCUITPY/privkey.pem` and the password `badssl.com`
 4. Put wifi settings in CIRCUITPY/.env
 5. Run the below Python script:

```py
import os
import wifi
import socketpool
import ssl
import adafruit_requests

TEXT_URL = "https://client.badssl.com/"
wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))

pool = socketpool.SocketPool(wifi.radio)
context = ssl.create_default_context()
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} without certificate (should fail)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 400 Bad Request")
input("hit enter to continue\r")

print("Loading client certificate")
context.load_cert_chain("/cert.pem", "privkey.pem")
requests = adafruit_requests.Session(pool, context)

print(f"Fetching from {TEXT_URL} with certificate (should succeed)")
response = requests.get(TEXT_URL)
print(f"{response.status_code=}, should be 200 OK")
```
2022-10-10 15:10:53 -05:00
Dan Halbert
de95463deb
Merge pull request #7023 from dhalbert/wifi-scanning-fixes
update esp-idf; allow start/stop channels in wifi scanning
2022-10-10 13:54:54 -04:00
Dan Halbert
747dc7746d handle scan channel bounds but note they do nothing for RP2040 CYW43 2022-10-07 16:22:17 -04:00
Jeff Epler
f882571366
pico w: pins improvements
Closes: #7017

 * Remove the 'GP23' alias for CYW1
 * Remove the 'CYW0' alias for CYW0
 * Switch VBUS_SENSE to CYW2, remove 'GP24' alias

Code that wants to use SMPS_MODE, VBUS_SENSE and LED while being
portable to the W and non-W variants should use those names, not alias
names.

 * Remove A3 / VOLTAGE_MONITOR

Right now this cannot be used. The ability to check the voltage monitor
should be added back in some fashion in the future.
2022-10-07 08:48:36 -05:00
Dan Halbert
041885da1b
Merge pull request #7011 from jepler/pico-w-resize-circuitpy-again
switch flash split to leave 512kB for CIRCUITPY
2022-10-07 08:32:18 -04:00
Neradoc
3a6382d1ea cyw43.CywPin should be the class, not a string 2022-10-07 02:11:05 +02:00
Jeff Epler
644d293641
Fix CIRCUITPY drive offset in flash correctly, accounting for NVM
.. and fix nvm to read/right the correct area.

.. putting a comment in link.ld to explain it all

Closes #7012
2022-10-06 12:39:46 -05:00
Jeff Epler
07cd2ff065
restore 4kB gap pending resolution of #7011 2022-10-06 11:20:48 -05:00
Jeff Epler
6e2c24083a
switch flash split to leave 512kB for CIRCUITPY 2022-10-06 10:12:22 -05:00
Jeff Epler
2dc283f578
close underlying socket object when closing ssl socket 2022-10-05 15:10:14 -05:00
Jeff Epler
4a9389d347
remove debug message 2022-10-05 14:57:04 -05:00
Jeff Epler
14f2309b6f
Enable more key exchange methods
This is intended (but not entirely verified) to match our esp32 builds.
It does fix accessing https://circuitpython.org, which failed before with
"MBEDTLS_ERR_SSL_FATAL_ALERT_MESSAGE".

It still doesn't work on a personal website of mine with valid letsencrypt
certificate but I haven't verified whether it works on esp32s2 with CP.
That site only allows TLS 1.3, while this mbedtls only supports up to
1.2.
The version of mbedtls we adopted based on micropython's use has no
TLS 1.3 support, but the one in espressif esp-idf does.
2022-10-05 14:56:27 -05:00
Jeff Epler
fabfdcf6fe
More ssl work 2022-10-05 14:56:26 -05:00
Jeff Epler
944d388158
copy esp_crt_bundle.c from esp-idf@d51f7d8821 2022-10-05 14:56:26 -05:00
Jeff Epler
dcb650c513 pico w: add ssl module
Note: at this time, the ssl module on pico_w never verifies the server
certificate. This means it does not actually provide a higher security
level than regular socket / http protocols.
2022-10-05 13:12:43 -04:00
Jeff Epler
2bd50673b6
Finish adapting flash storage size
Before this, CIRCUITPY would start at 1MB anyway. This appeared to work
only because I hadn't checked the actual size of the CIRCUITPY drive,
and because until now the flash hadn't actually crossed that 1MB
boundary into CIRCUITPY storage.

WARNING: on pico_w, upgrading/downgrading CircuitPython across this commit
boundary will erase the CIRCUITPY filesystem. After this commit,
switching between pico and pico_w firmware will erase the CIRCUITPY
filesystem
2022-10-05 10:02:38 -05:00
Dan Halbert
ad79f595a5
Merge pull request #6974 from MicroDev1/patch
Couple Minor Fixes
2022-10-01 13:12:01 -04:00
Dan Halbert
7bb90dbf45 remove redundant port/*/.gitignore; cleanup others 2022-10-01 11:52:36 -04:00
Jeff Epler
40c2de833d
doc improvements 2022-10-01 10:09:33 -05:00
Jeff Epler
d3e85d165e
Set cyw43 power management as needed, default to disabled
.. the value actually needs to be enforced each time the STA or AP
is enabled, because internally there's a call to cyw43_wifi_pm with the
library's defaut power management value, not ours.

Add a getter, though it only returns our idea of what the power
management register is set to, it doesn't read out from the actual
hardware, sadly.
2022-10-01 08:20:34 -05:00
Jeff Epler
943b992bfc
Improve cyw43.set_power_management documentation
.. and provide 4 preset values
2022-10-01 07:52:08 -05:00
Dan Halbert
bced76887e
Merge pull request #6973 from jepler/rp2040-fix-warnings
Rp2040 fix warnings
2022-09-30 16:21:31 -04:00