Compare commits

...
13 Commits
Author SHA1 Message Date
Earle F. Philhower, III ad5b426453 Implement HW protection mutex 2024-08-04 08:44:38 -07:00
Earle F. Philhower, III e8f1d82e1a Allow LWIP to call itself internally 2024-08-03 14:40:09 -07:00
Earle F. Philhower, III 0c978760dc Debugging, looks like will never work
sys_check_timeouts may call other LWIP calls...but we're stuck in the
main LWIP processing loop already!
2024-08-03 12:58:07 -07:00
Earle F. Philhower, III b4afabd39d Remove tcp_listen wrap, enable backlog, lwip thread
tcp_listen is a macro, no wrapping possible or needed.

Backlock was "used" but actually a noop.  Adjust defines and
rebuild libs to actually enable it.

Add first LWIP processing thread
2024-08-02 18:15:48 -07:00
Earle F. Philhower, III f88f04223a Support multithreading for LWIP in FreeRTOS
Implement a LWIP task which will parse messages from other tasks to perform all
LWIP operations.  Allows both cores and mu,ltiple tasks to use LWIP without
worrying about re-entrancy.
2024-08-02 16:25:43 -07:00
Earle F. Philhower, III e86f8f5002 Really remove dup'd TUSB GAMEPAD16 HID descriptor (#2306) 2024-07-30 09:54:12 -07:00
Earle F. Philhower, III 4f4e638aee Replace most remaining ESP_ debug macros (#2305)
In ported libraries there were still some remaining DEBUG_ESP_PORT
references.  Moved to their RP2040 equivalents.
2024-07-28 09:36:10 -07:00
Earle F. Philhower, III 34f386a21b LwIpIntfDev.end() check _started to prevent crash (#2304)
From @JAndrassy https://github.com/esp8266/Arduino/pull/9173
2024-07-27 11:46:39 -07:00
Earle F. Philhower, III dd1c9095e8 Factor out cut-n-pasted GAMEPAD16 HID structures (#2302)
Create a single spot with the gamepad16's HID report descriptor and
report structure.  Avoids cut-n-pasted code.
2024-07-26 09:11:41 -07:00
Earle F. Philhower, III 8140c354c7 Fix HTTPClient debug output (#2300)
Found via #2296, the HTTPClient was looking for old ESP8266 defines and
not the RP2040 core ones to enable it.  Now dump on `Core` level.
2024-07-25 22:21:38 -07:00
Earle F. Philhower, III 5c4eb022c1 Rename Picoprobe upload to DebugProbe new name (#2298)
Picoprobe was rechristened Debugprobe earlier this year, add a note
in the menus to be specific about it.

See https://github.com/raspberrypi/debugprobe
2024-07-25 10:10:33 -07:00
Earle F. Philhower, III 6e5b3897b7 Fix BT/BLE Joystick reports (#2293)
Underlying HID_Joystick now always using 16-bit format axes, need to update
BT and BLE descriptors sent to the BT master or it will misinterpret the
reports and the reported joystick state will be read as garbage.

Fixes bug introduced in #2276, oops!
2024-07-23 21:11:08 -07:00
Earle F. Philhower, III f3b8c58157 Remove obsolete TRAVIS CI variables (#2292)
Use GH native ones instead.
2024-07-23 09:48:33 -07:00
48 changed files with 1358 additions and 277 deletions
-5
View File
@@ -6,11 +6,6 @@ name: Arduino-Pico CI
on:
pull_request:
env:
TRAVIS_BUILD_DIR: ${{ github.workspace }}
TRAVIS_TAG: ${{ github.ref }}
jobs:
# Consistent style, spelling
-1
View File
@@ -33,7 +33,6 @@ jobs:
# pip install --upgrade platformio
- name: Deploy updated JSON
env:
TRAVIS_BUILD_DIR: ${{ github.workspace }}
BUILD_TYPE: package
CI_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
PLATFORMIO_AUTH_TOKEN: ${{ secrets.PLATFORMIO_AUTH_TOKEN }}
@@ -24,7 +24,6 @@ jobs:
python-version: '3.x'
- name: Build package JSON
env:
TRAVIS_BUILD_DIR: ${{ github.workspace }}
BUILD_TYPE: package
CI_GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
run: |
+90 -90
View File
@@ -235,7 +235,7 @@ rpipico.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
rpipico.menu.uploadmethod.picotool.upload.maximum_data_size=262144
rpipico.menu.uploadmethod.picotool.upload.tool=picotool
rpipico.menu.uploadmethod.picotool.upload.tool.default=picotool
rpipico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
rpipico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
rpipico.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
rpipico.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
rpipico.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -547,7 +547,7 @@ rpipicow.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
rpipicow.menu.uploadmethod.picotool.upload.maximum_data_size=262144
rpipicow.menu.uploadmethod.picotool.upload.tool=picotool
rpipicow.menu.uploadmethod.picotool.upload.tool.default=picotool
rpipicow.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
rpipicow.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
rpipicow.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
rpipicow.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
rpipicow.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -849,7 +849,7 @@ rpipicow.menu.uploadmethod.picodebug.upload.tool.default=picodebug
0xcb_helios.menu.uploadmethod.picotool.upload.maximum_data_size=262144
0xcb_helios.menu.uploadmethod.picotool.upload.tool=picotool
0xcb_helios.menu.uploadmethod.picotool.upload.tool.default=picotool
0xcb_helios.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
0xcb_helios.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
0xcb_helios.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
0xcb_helios.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
0xcb_helios.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -1107,7 +1107,7 @@ adafruit_feather.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTO
adafruit_feather.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -1361,7 +1361,7 @@ adafruit_feather_scorpio.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
adafruit_feather_scorpio.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_scorpio.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_scorpio.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_scorpio.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_scorpio.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_scorpio.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_scorpio.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_scorpio.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -1615,7 +1615,7 @@ adafruit_feather_dvi.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
adafruit_feather_dvi.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_dvi.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_dvi.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_dvi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_dvi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_dvi.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_dvi.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_dvi.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -1869,7 +1869,7 @@ adafruit_feather_adalogger.menu.uploadmethod.picotool.build.picodebugflags=-DENA
adafruit_feather_adalogger.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_adalogger.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_adalogger.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_adalogger.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_adalogger.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_adalogger.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -2123,7 +2123,7 @@ adafruit_feather_rfm.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
adafruit_feather_rfm.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_rfm.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_rfm.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_rfm.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_rfm.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_rfm.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_rfm.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_rfm.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -2377,7 +2377,7 @@ adafruit_feather_thinkink.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
adafruit_feather_thinkink.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_thinkink.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_thinkink.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_thinkink.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_thinkink.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_thinkink.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_thinkink.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_thinkink.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -2631,7 +2631,7 @@ adafruit_feather_usb_host.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
adafruit_feather_usb_host.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_usb_host.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_usb_host.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_usb_host.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_usb_host.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_usb_host.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_usb_host.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_usb_host.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -2885,7 +2885,7 @@ adafruit_feather_can.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
adafruit_feather_can.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_can.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_can.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_can.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_can.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_can.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_can.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_can.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -3139,7 +3139,7 @@ adafruit_feather_prop_maker.menu.uploadmethod.picotool.build.picodebugflags=-DEN
adafruit_feather_prop_maker.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_feather_prop_maker.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_feather_prop_maker.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_feather_prop_maker.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_feather_prop_maker.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_feather_prop_maker.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_feather_prop_maker.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_feather_prop_maker.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -3401,7 +3401,7 @@ adafruit_itsybitsy.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICO
adafruit_itsybitsy.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_itsybitsy.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_itsybitsy.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_itsybitsy.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_itsybitsy.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_itsybitsy.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_itsybitsy.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_itsybitsy.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -3711,7 +3711,7 @@ adafruit_metro.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL
adafruit_metro.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_metro.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_metro.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_metro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_metro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_metro.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_metro.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_metro.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -3973,7 +3973,7 @@ adafruit_qtpy.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_
adafruit_qtpy.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_qtpy.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_qtpy.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_qtpy.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_qtpy.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_qtpy.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_qtpy.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_qtpy.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -4235,7 +4235,7 @@ adafruit_stemmafriend.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
adafruit_stemmafriend.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_stemmafriend.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_stemmafriend.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_stemmafriend.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_stemmafriend.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_stemmafriend.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_stemmafriend.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_stemmafriend.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -4489,7 +4489,7 @@ adafruit_trinkeyrp2040qt.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
adafruit_trinkeyrp2040qt.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_trinkeyrp2040qt.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_trinkeyrp2040qt.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_trinkeyrp2040qt.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_trinkeyrp2040qt.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_trinkeyrp2040qt.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_trinkeyrp2040qt.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_trinkeyrp2040qt.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -4743,7 +4743,7 @@ adafruit_macropad2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
adafruit_macropad2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_macropad2040.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_macropad2040.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_macropad2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_macropad2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_macropad2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_macropad2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_macropad2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -4997,7 +4997,7 @@ adafruit_kb2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOO
adafruit_kb2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
adafruit_kb2040.menu.uploadmethod.picotool.upload.tool=picotool
adafruit_kb2040.menu.uploadmethod.picotool.upload.tool.default=picotool
adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
adafruit_kb2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -6084,7 +6084,7 @@ amken_bunny.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_US
amken_bunny.menu.uploadmethod.picotool.upload.maximum_data_size=262144
amken_bunny.menu.uploadmethod.picotool.upload.tool=picotool
amken_bunny.menu.uploadmethod.picotool.upload.tool.default=picotool
amken_bunny.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
amken_bunny.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
amken_bunny.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
amken_bunny.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
amken_bunny.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -6499,7 +6499,7 @@ amken_revelop.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_
amken_revelop.menu.uploadmethod.picotool.upload.maximum_data_size=262144
amken_revelop.menu.uploadmethod.picotool.upload.tool=picotool
amken_revelop.menu.uploadmethod.picotool.upload.tool.default=picotool
amken_revelop.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
amken_revelop.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
amken_revelop.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
amken_revelop.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
amken_revelop.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -6914,7 +6914,7 @@ amken_revelop_plus.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICO
amken_revelop_plus.menu.uploadmethod.picotool.upload.maximum_data_size=262144
amken_revelop_plus.menu.uploadmethod.picotool.upload.tool=picotool
amken_revelop_plus.menu.uploadmethod.picotool.upload.tool.default=picotool
amken_revelop_plus.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
amken_revelop_plus.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
amken_revelop_plus.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
amken_revelop_plus.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
amken_revelop_plus.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -7217,7 +7217,7 @@ amken_revelop_es.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTO
amken_revelop_es.menu.uploadmethod.picotool.upload.maximum_data_size=262144
amken_revelop_es.menu.uploadmethod.picotool.upload.tool=picotool
amken_revelop_es.menu.uploadmethod.picotool.upload.tool.default=picotool
amken_revelop_es.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
amken_revelop_es.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
amken_revelop_es.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
amken_revelop_es.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
amken_revelop_es.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -7531,7 +7531,7 @@ arduino_nano_connect.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
arduino_nano_connect.menu.uploadmethod.picotool.upload.maximum_data_size=262144
arduino_nano_connect.menu.uploadmethod.picotool.upload.tool=picotool
arduino_nano_connect.menu.uploadmethod.picotool.upload.tool.default=picotool
arduino_nano_connect.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
arduino_nano_connect.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
arduino_nano_connect.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
arduino_nano_connect.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
arduino_nano_connect.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -7763,7 +7763,7 @@ artronshop_rp2_nano.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
artronshop_rp2_nano.menu.uploadmethod.picotool.upload.maximum_data_size=262144
artronshop_rp2_nano.menu.uploadmethod.picotool.upload.tool=picotool
artronshop_rp2_nano.menu.uploadmethod.picotool.upload.tool.default=picotool
artronshop_rp2_nano.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
artronshop_rp2_nano.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
artronshop_rp2_nano.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
artronshop_rp2_nano.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
artronshop_rp2_nano.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -8093,7 +8093,7 @@ breadstick_raspberry.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
breadstick_raspberry.menu.uploadmethod.picotool.upload.maximum_data_size=262144
breadstick_raspberry.menu.uploadmethod.picotool.upload.tool=picotool
breadstick_raspberry.menu.uploadmethod.picotool.upload.tool.default=picotool
breadstick_raspberry.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
breadstick_raspberry.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
breadstick_raspberry.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
breadstick_raspberry.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
breadstick_raspberry.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -8368,7 +8368,7 @@ bridgetek_idm2040_7a.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
bridgetek_idm2040_7a.menu.uploadmethod.picotool.upload.maximum_data_size=262144
bridgetek_idm2040_7a.menu.uploadmethod.picotool.upload.tool=picotool
bridgetek_idm2040_7a.menu.uploadmethod.picotool.upload.tool.default=picotool
bridgetek_idm2040_7a.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
bridgetek_idm2040_7a.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
bridgetek_idm2040_7a.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
bridgetek_idm2040_7a.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
bridgetek_idm2040_7a.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -8619,7 +8619,7 @@ bridgetek_idm2040_43a.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
bridgetek_idm2040_43a.menu.uploadmethod.picotool.upload.maximum_data_size=262144
bridgetek_idm2040_43a.menu.uploadmethod.picotool.upload.tool=picotool
bridgetek_idm2040_43a.menu.uploadmethod.picotool.upload.tool.default=picotool
bridgetek_idm2040_43a.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
bridgetek_idm2040_43a.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
bridgetek_idm2040_43a.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
bridgetek_idm2040_43a.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
bridgetek_idm2040_43a.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -8851,7 +8851,7 @@ cytron_maker_nano_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
cytron_maker_nano_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
cytron_maker_nano_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
cytron_maker_nano_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
cytron_maker_nano_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
cytron_maker_nano_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
cytron_maker_nano_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
cytron_maker_nano_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
cytron_maker_nano_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -9083,7 +9083,7 @@ cytron_maker_pi_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_
cytron_maker_pi_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
cytron_maker_pi_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
cytron_maker_pi_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
cytron_maker_pi_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
cytron_maker_pi_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
cytron_maker_pi_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
cytron_maker_pi_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
cytron_maker_pi_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -9315,7 +9315,7 @@ cytron_maker_uno_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
cytron_maker_uno_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
cytron_maker_uno_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
cytron_maker_uno_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
cytron_maker_uno_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
cytron_maker_uno_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
cytron_maker_uno_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
cytron_maker_uno_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
cytron_maker_uno_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -9547,7 +9547,7 @@ datanoisetv_picoadk.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
datanoisetv_picoadk.menu.uploadmethod.picotool.upload.maximum_data_size=262144
datanoisetv_picoadk.menu.uploadmethod.picotool.upload.tool=picotool
datanoisetv_picoadk.menu.uploadmethod.picotool.upload.tool.default=picotool
datanoisetv_picoadk.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
datanoisetv_picoadk.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
datanoisetv_picoadk.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
datanoisetv_picoadk.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
datanoisetv_picoadk.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -9853,7 +9853,7 @@ degz_suibo.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
degz_suibo.menu.uploadmethod.picotool.upload.maximum_data_size=262144
degz_suibo.menu.uploadmethod.picotool.upload.tool=picotool
degz_suibo.menu.uploadmethod.picotool.upload.tool.default=picotool
degz_suibo.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
degz_suibo.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
degz_suibo.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
degz_suibo.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
degz_suibo.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -10099,7 +10099,7 @@ flyboard2040_core.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOT
flyboard2040_core.menu.uploadmethod.picotool.upload.maximum_data_size=262144
flyboard2040_core.menu.uploadmethod.picotool.upload.tool=picotool
flyboard2040_core.menu.uploadmethod.picotool.upload.tool.default=picotool
flyboard2040_core.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
flyboard2040_core.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
flyboard2040_core.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
flyboard2040_core.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
flyboard2040_core.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -10315,7 +10315,7 @@ dfrobot_beetle_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
dfrobot_beetle_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
dfrobot_beetle_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
dfrobot_beetle_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
dfrobot_beetle_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
dfrobot_beetle_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
dfrobot_beetle_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
dfrobot_beetle_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
dfrobot_beetle_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -10561,7 +10561,7 @@ DudesCab.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
DudesCab.menu.uploadmethod.picotool.upload.maximum_data_size=262144
DudesCab.menu.uploadmethod.picotool.upload.tool=picotool
DudesCab.menu.uploadmethod.picotool.upload.tool.default=picotool
DudesCab.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
DudesCab.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
DudesCab.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
DudesCab.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
DudesCab.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -10793,7 +10793,7 @@ electroniccats_huntercat_nfc.menu.uploadmethod.picotool.build.picodebugflags=-DE
electroniccats_huntercat_nfc.menu.uploadmethod.picotool.upload.maximum_data_size=262144
electroniccats_huntercat_nfc.menu.uploadmethod.picotool.upload.tool=picotool
electroniccats_huntercat_nfc.menu.uploadmethod.picotool.upload.tool.default=picotool
electroniccats_huntercat_nfc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
electroniccats_huntercat_nfc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
electroniccats_huntercat_nfc.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
electroniccats_huntercat_nfc.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
electroniccats_huntercat_nfc.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -11099,7 +11099,7 @@ evn_alpha.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
evn_alpha.menu.uploadmethod.picotool.upload.maximum_data_size=262144
evn_alpha.menu.uploadmethod.picotool.upload.tool=picotool
evn_alpha.menu.uploadmethod.picotool.upload.tool.default=picotool
evn_alpha.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
evn_alpha.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
evn_alpha.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
evn_alpha.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
evn_alpha.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -11307,7 +11307,7 @@ extelec_rc2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL
extelec_rc2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
extelec_rc2040.menu.uploadmethod.picotool.upload.tool=picotool
extelec_rc2040.menu.uploadmethod.picotool.upload.tool.default=picotool
extelec_rc2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
extelec_rc2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
extelec_rc2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
extelec_rc2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
extelec_rc2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -11581,7 +11581,7 @@ groundstudio_marble_pico.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
groundstudio_marble_pico.menu.uploadmethod.picotool.upload.maximum_data_size=262144
groundstudio_marble_pico.menu.uploadmethod.picotool.upload.tool=picotool
groundstudio_marble_pico.menu.uploadmethod.picotool.upload.tool.default=picotool
groundstudio_marble_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
groundstudio_marble_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
groundstudio_marble_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
groundstudio_marble_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
groundstudio_marble_pico.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -11855,7 +11855,7 @@ challenger_2040_lte.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
challenger_2040_lte.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_lte.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_lte.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_lte.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_lte.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_lte.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_lte.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_lte.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -12129,7 +12129,7 @@ challenger_2040_lora.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
challenger_2040_lora.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_lora.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_lora.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_lora.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_lora.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_lora.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_lora.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_lora.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -12403,7 +12403,7 @@ challenger_2040_subghz.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_
challenger_2040_subghz.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_subghz.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_subghz.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_subghz.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_subghz.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_subghz.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_subghz.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_subghz.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -12678,7 +12678,7 @@ challenger_2040_wifi.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
challenger_2040_wifi.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_wifi.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_wifi.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -12953,7 +12953,7 @@ challenger_2040_wifi_ble.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
challenger_2040_wifi_ble.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_wifi_ble.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_wifi_ble.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -13228,7 +13228,7 @@ challenger_2040_wifi6_ble.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
challenger_2040_wifi6_ble.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_wifi6_ble.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_wifi6_ble.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_wifi6_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_wifi6_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_wifi6_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_wifi6_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_wifi6_ble.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -13503,7 +13503,7 @@ challenger_nb_2040_wifi.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
challenger_nb_2040_wifi.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_nb_2040_wifi.menu.uploadmethod.picotool.upload.tool=picotool
challenger_nb_2040_wifi.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_nb_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_nb_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_nb_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_nb_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_nb_2040_wifi.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -13777,7 +13777,7 @@ challenger_2040_sdrtc.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
challenger_2040_sdrtc.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_sdrtc.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_sdrtc.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_sdrtc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_sdrtc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_sdrtc.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_sdrtc.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_sdrtc.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -14051,7 +14051,7 @@ challenger_2040_nfc.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
challenger_2040_nfc.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_nfc.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_nfc.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_nfc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_nfc.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_nfc.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_nfc.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_nfc.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -14325,7 +14325,7 @@ challenger_2040_uwb.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
challenger_2040_uwb.menu.uploadmethod.picotool.upload.maximum_data_size=262144
challenger_2040_uwb.menu.uploadmethod.picotool.upload.tool=picotool
challenger_2040_uwb.menu.uploadmethod.picotool.upload.tool.default=picotool
challenger_2040_uwb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
challenger_2040_uwb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
challenger_2040_uwb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
challenger_2040_uwb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
challenger_2040_uwb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -14600,7 +14600,7 @@ connectivity_2040_lte_wifi_ble.menu.uploadmethod.picotool.build.picodebugflags=-
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picotool.upload.maximum_data_size=262144
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picotool.upload.tool=picotool
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picotool.upload.tool.default=picotool
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
connectivity_2040_lte_wifi_ble.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -14875,7 +14875,7 @@ ilabs_rpico32.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_
ilabs_rpico32.menu.uploadmethod.picotool.upload.maximum_data_size=262144
ilabs_rpico32.menu.uploadmethod.picotool.upload.tool=picotool
ilabs_rpico32.menu.uploadmethod.picotool.upload.tool.default=picotool
ilabs_rpico32.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
ilabs_rpico32.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
ilabs_rpico32.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
ilabs_rpico32.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
ilabs_rpico32.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -15149,7 +15149,7 @@ melopero_cookie_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_
melopero_cookie_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
melopero_cookie_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
melopero_cookie_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
melopero_cookie_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
melopero_cookie_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
melopero_cookie_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
melopero_cookie_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
melopero_cookie_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -15479,7 +15479,7 @@ melopero_shake_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
melopero_shake_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
melopero_shake_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
melopero_shake_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
melopero_shake_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
melopero_shake_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
melopero_shake_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
melopero_shake_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
melopero_shake_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -15760,7 +15760,7 @@ akana_r1.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
akana_r1.menu.uploadmethod.picotool.upload.maximum_data_size=262144
akana_r1.menu.uploadmethod.picotool.upload.tool=picotool
akana_r1.menu.uploadmethod.picotool.upload.tool.default=picotool
akana_r1.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
akana_r1.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
akana_r1.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
akana_r1.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
akana_r1.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -16006,7 +16006,7 @@ nekosystems_bl2040_mini.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
nekosystems_bl2040_mini.menu.uploadmethod.picotool.upload.maximum_data_size=262144
nekosystems_bl2040_mini.menu.uploadmethod.picotool.upload.tool=picotool
nekosystems_bl2040_mini.menu.uploadmethod.picotool.upload.tool.default=picotool
nekosystems_bl2040_mini.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
nekosystems_bl2040_mini.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
nekosystems_bl2040_mini.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
nekosystems_bl2040_mini.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
nekosystems_bl2040_mini.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -16252,7 +16252,7 @@ newsan_archi.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_U
newsan_archi.menu.uploadmethod.picotool.upload.maximum_data_size=262144
newsan_archi.menu.uploadmethod.picotool.upload.tool=picotool
newsan_archi.menu.uploadmethod.picotool.upload.tool.default=picotool
newsan_archi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
newsan_archi.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
newsan_archi.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
newsan_archi.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
newsan_archi.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -16482,7 +16482,7 @@ nullbits_bit_c_pro.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICO
nullbits_bit_c_pro.menu.uploadmethod.picotool.upload.maximum_data_size=262144
nullbits_bit_c_pro.menu.uploadmethod.picotool.upload.tool=picotool
nullbits_bit_c_pro.menu.uploadmethod.picotool.upload.tool.default=picotool
nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
nullbits_bit_c_pro.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -16714,7 +16714,7 @@ olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144
olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.tool=picotool
olimex_rp2040pico30_2mb.menu.uploadmethod.picotool.upload.tool.default=picotool
olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
olimex_rp2040pico30_2mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -17044,7 +17044,7 @@ olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144
olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.tool=picotool
olimex_rp2040pico30_16mb.menu.uploadmethod.picotool.upload.tool.default=picotool
olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
olimex_rp2040pico30_16mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -17318,7 +17318,7 @@ pimoroni_pga2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTO
pimoroni_pga2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
pimoroni_pga2040.menu.uploadmethod.picotool.upload.tool=picotool
pimoroni_pga2040.menu.uploadmethod.picotool.upload.tool.default=picotool
pimoroni_pga2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
pimoroni_pga2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
pimoroni_pga2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
pimoroni_pga2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
pimoroni_pga2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -17550,7 +17550,7 @@ pimoroni_plasma2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
pimoroni_plasma2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
pimoroni_plasma2040.menu.uploadmethod.picotool.upload.tool=picotool
pimoroni_plasma2040.menu.uploadmethod.picotool.upload.tool.default=picotool
pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -17810,7 +17810,7 @@ pimoroni_tiny2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOT
pimoroni_tiny2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
pimoroni_tiny2040.menu.uploadmethod.picotool.upload.tool=picotool
pimoroni_tiny2040.menu.uploadmethod.picotool.upload.tool.default=picotool
pimoroni_tiny2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
pimoroni_tiny2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
pimoroni_tiny2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
pimoroni_tiny2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
pimoroni_tiny2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -18032,7 +18032,7 @@ pintronix_pinmax.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTO
pintronix_pinmax.menu.uploadmethod.picotool.upload.maximum_data_size=262144
pintronix_pinmax.menu.uploadmethod.picotool.upload.tool=picotool
pintronix_pinmax.menu.uploadmethod.picotool.upload.tool.default=picotool
pintronix_pinmax.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
pintronix_pinmax.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
pintronix_pinmax.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
pintronix_pinmax.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
pintronix_pinmax.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -18264,7 +18264,7 @@ rakwireless_rak11300.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
rakwireless_rak11300.menu.uploadmethod.picotool.upload.maximum_data_size=262144
rakwireless_rak11300.menu.uploadmethod.picotool.upload.tool=picotool
rakwireless_rak11300.menu.uploadmethod.picotool.upload.tool.default=picotool
rakwireless_rak11300.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
rakwireless_rak11300.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
rakwireless_rak11300.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
rakwireless_rak11300.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
rakwireless_rak11300.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -18578,7 +18578,7 @@ redscorp_rp2040_eins.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
redscorp_rp2040_eins.menu.uploadmethod.picotool.upload.maximum_data_size=262144
redscorp_rp2040_eins.menu.uploadmethod.picotool.upload.tool=picotool
redscorp_rp2040_eins.menu.uploadmethod.picotool.upload.tool.default=picotool
redscorp_rp2040_eins.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
redscorp_rp2040_eins.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
redscorp_rp2040_eins.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
redscorp_rp2040_eins.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
redscorp_rp2040_eins.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -18892,7 +18892,7 @@ redscorp_rp2040_promini.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
redscorp_rp2040_promini.menu.uploadmethod.picotool.upload.maximum_data_size=262144
redscorp_rp2040_promini.menu.uploadmethod.picotool.upload.tool=picotool
redscorp_rp2040_promini.menu.uploadmethod.picotool.upload.tool.default=picotool
redscorp_rp2040_promini.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
redscorp_rp2040_promini.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
redscorp_rp2040_promini.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
redscorp_rp2040_promini.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
redscorp_rp2040_promini.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -19142,7 +19142,7 @@ sea_picro.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
sea_picro.menu.uploadmethod.picotool.upload.maximum_data_size=262144
sea_picro.menu.uploadmethod.picotool.upload.tool=picotool
sea_picro.menu.uploadmethod.picotool.upload.tool.default=picotool
sea_picro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
sea_picro.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
sea_picro.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
sea_picro.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
sea_picro.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -19360,7 +19360,7 @@ silicognition_rp2040_shim.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.maximum_data_size=262144
silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.tool=picotool
silicognition_rp2040_shim.menu.uploadmethod.picotool.upload.tool.default=picotool
silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
silicognition_rp2040_shim.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -19610,7 +19610,7 @@ solderparty_rp2040_stamp.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
solderparty_rp2040_stamp.menu.uploadmethod.picotool.upload.maximum_data_size=262144
solderparty_rp2040_stamp.menu.uploadmethod.picotool.upload.tool=picotool
solderparty_rp2040_stamp.menu.uploadmethod.picotool.upload.tool.default=picotool
solderparty_rp2040_stamp.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
solderparty_rp2040_stamp.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
solderparty_rp2040_stamp.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
solderparty_rp2040_stamp.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
solderparty_rp2040_stamp.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -19940,7 +19940,7 @@ sparkfun_micromodrp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
sparkfun_micromodrp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
sparkfun_micromodrp2040.menu.uploadmethod.picotool.upload.tool=picotool
sparkfun_micromodrp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
sparkfun_micromodrp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
sparkfun_micromodrp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
sparkfun_micromodrp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
sparkfun_micromodrp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
sparkfun_micromodrp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -20270,7 +20270,7 @@ sparkfun_promicrorp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
sparkfun_promicrorp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
sparkfun_promicrorp2040.menu.uploadmethod.picotool.upload.tool=picotool
sparkfun_promicrorp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
sparkfun_promicrorp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
sparkfun_promicrorp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
sparkfun_promicrorp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
sparkfun_promicrorp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
sparkfun_promicrorp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -20600,7 +20600,7 @@ sparkfun_thingplusrp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
sparkfun_thingplusrp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
sparkfun_thingplusrp2040.menu.uploadmethod.picotool.upload.tool=picotool
sparkfun_thingplusrp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
sparkfun_thingplusrp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
sparkfun_thingplusrp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
sparkfun_thingplusrp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
sparkfun_thingplusrp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
sparkfun_thingplusrp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -20832,7 +20832,7 @@ upesy_rp2040_devkit.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PIC
upesy_rp2040_devkit.menu.uploadmethod.picotool.upload.maximum_data_size=262144
upesy_rp2040_devkit.menu.uploadmethod.picotool.upload.tool=picotool
upesy_rp2040_devkit.menu.uploadmethod.picotool.upload.tool.default=picotool
upesy_rp2040_devkit.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
upesy_rp2040_devkit.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
upesy_rp2040_devkit.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
upesy_rp2040_devkit.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
upesy_rp2040_devkit.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -21064,7 +21064,7 @@ seeed_indicator_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_
seeed_indicator_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
seeed_indicator_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
seeed_indicator_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
seeed_indicator_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
seeed_indicator_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
seeed_indicator_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
seeed_indicator_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
seeed_indicator_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -21296,7 +21296,7 @@ seeed_xiao_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOT
seeed_xiao_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
seeed_xiao_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
seeed_xiao_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
seeed_xiao_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
seeed_xiao_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
seeed_xiao_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
seeed_xiao_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
seeed_xiao_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -21582,7 +21582,7 @@ vccgnd_yd_rp2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTO
vccgnd_yd_rp2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144
vccgnd_yd_rp2040.menu.uploadmethod.picotool.upload.tool=picotool
vccgnd_yd_rp2040.menu.uploadmethod.picotool.upload.tool.default=picotool
vccgnd_yd_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
vccgnd_yd_rp2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
vccgnd_yd_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
vccgnd_yd_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
vccgnd_yd_rp2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -21856,7 +21856,7 @@ viyalab_mizu.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_U
viyalab_mizu.menu.uploadmethod.picotool.upload.maximum_data_size=262144
viyalab_mizu.menu.uploadmethod.picotool.upload.tool=picotool
viyalab_mizu.menu.uploadmethod.picotool.upload.tool.default=picotool
viyalab_mizu.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
viyalab_mizu.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
viyalab_mizu.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
viyalab_mizu.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
viyalab_mizu.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -22088,7 +22088,7 @@ waveshare_rp2040_zero.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
waveshare_rp2040_zero.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_zero.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_zero.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_zero.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_zero.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_zero.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_zero.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_zero.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -22334,7 +22334,7 @@ waveshare_rp2040_one.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
waveshare_rp2040_one.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_one.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_one.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_one.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_one.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_one.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_one.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_one.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -22566,7 +22566,7 @@ waveshare_rp2040_matrix.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
waveshare_rp2040_matrix.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_matrix.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_matrix.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_matrix.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_matrix.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_matrix.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_matrix.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_matrix.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -22896,7 +22896,7 @@ waveshare_rp2040_pizero.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE
waveshare_rp2040_pizero.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_pizero.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_pizero.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_pizero.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_pizero.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_pizero.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_pizero.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_pizero.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -23142,7 +23142,7 @@ waveshare_rp2040_plus_4mb.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
waveshare_rp2040_plus_4mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_plus_4mb.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_plus_4mb.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_plus_4mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_plus_4mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_plus_4mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_plus_4mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_plus_4mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -23472,7 +23472,7 @@ waveshare_rp2040_plus_16mb.menu.uploadmethod.picotool.build.picodebugflags=-DENA
waveshare_rp2040_plus_16mb.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_plus_16mb.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_plus_16mb.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_plus_16mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_plus_16mb.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_plus_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_plus_16mb.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_plus_16mb.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -23704,7 +23704,7 @@ waveshare_rp2040_lcd_0_96.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_lcd_0_96.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -23936,7 +23936,7 @@ waveshare_rp2040_lcd_1_28.menu.uploadmethod.picotool.build.picodebugflags=-DENAB
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picotool.upload.maximum_data_size=262144
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picotool.upload.tool=picotool
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picotool.upload.tool.default=picotool
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
waveshare_rp2040_lcd_1_28.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -24168,7 +24168,7 @@ wiznet_5100s_evb_pico.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_P
wiznet_5100s_evb_pico.menu.uploadmethod.picotool.upload.maximum_data_size=262144
wiznet_5100s_evb_pico.menu.uploadmethod.picotool.upload.tool=picotool
wiznet_5100s_evb_pico.menu.uploadmethod.picotool.upload.tool.default=picotool
wiznet_5100s_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
wiznet_5100s_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
wiznet_5100s_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
wiznet_5100s_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
wiznet_5100s_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -24400,7 +24400,7 @@ wiznet_wizfi360_evb_pico.menu.uploadmethod.picotool.build.picodebugflags=-DENABL
wiznet_wizfi360_evb_pico.menu.uploadmethod.picotool.upload.maximum_data_size=262144
wiznet_wizfi360_evb_pico.menu.uploadmethod.picotool.upload.tool=picotool
wiznet_wizfi360_evb_pico.menu.uploadmethod.picotool.upload.tool.default=picotool
wiznet_wizfi360_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
wiznet_wizfi360_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
wiznet_wizfi360_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
wiznet_wizfi360_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
wiznet_wizfi360_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -24632,7 +24632,7 @@ wiznet_5500_evb_pico.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PI
wiznet_5500_evb_pico.menu.uploadmethod.picotool.upload.maximum_data_size=262144
wiznet_5500_evb_pico.menu.uploadmethod.picotool.upload.tool=picotool
wiznet_5500_evb_pico.menu.uploadmethod.picotool.upload.tool.default=picotool
wiznet_5500_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
wiznet_5500_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
wiznet_5500_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
wiznet_5500_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
wiznet_5500_evb_pico.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
@@ -24932,7 +24932,7 @@ generic.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB
generic.menu.uploadmethod.picotool.upload.maximum_data_size=262144
generic.menu.uploadmethod.picotool.upload.tool=picotool
generic.menu.uploadmethod.picotool.upload.tool.default=picotool
generic.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe (CMSIS-DAP)
generic.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP)
generic.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k
generic.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl
generic.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144
+1 -41
View File
@@ -36,6 +36,7 @@
#include <hardware/watchdog.h>
#include <pico/bootrom.h>
#include "sdkoverride/tusb_absmouse.h"
#include "sdkoverride/tusb_gamepad16.h"
#include <device/usbd_pvt.h>
// Big, global USB mutex, shared with all USB devices to make sure we don't
@@ -155,47 +156,6 @@ static uint8_t *GetDescHIDReport(int *len) {
return __hid_report;
}
#define TUD_HID_REPORT_DESC_GAMEPAD16(...) \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_GAMEPAD ) ,\
HID_COLLECTION ( HID_COLLECTION_APPLICATION ) ,\
/* Report ID if any */\
__VA_ARGS__ \
/* 16 bit X, Y, Z, Rz, Rx, Ry (min -32767, max 32767 ) */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_X ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_Y ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_Z ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RZ ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RX ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RY ) ,\
HID_LOGICAL_MIN_N ( -32767, 2 ) ,\
HID_LOGICAL_MAX_N ( 32767, 2 ) ,\
HID_REPORT_COUNT ( 6 ) ,\
HID_REPORT_SIZE ( 16 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
/* 8 bit DPad/Hat Button Map */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_HAT_SWITCH ) ,\
HID_LOGICAL_MIN ( 1 ) ,\
HID_LOGICAL_MAX ( 8 ) ,\
HID_PHYSICAL_MIN ( 0 ) ,\
HID_PHYSICAL_MAX_N ( 315, 2 ) ,\
HID_REPORT_COUNT ( 1 ) ,\
HID_REPORT_SIZE ( 8 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
/* 32 bit Button Map */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ) ,\
HID_USAGE_MIN ( 1 ) ,\
HID_USAGE_MAX ( 32 ) ,\
HID_LOGICAL_MIN ( 0 ) ,\
HID_LOGICAL_MAX ( 1 ) ,\
HID_REPORT_COUNT ( 32 ) ,\
HID_REPORT_SIZE ( 1 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
HID_COLLECTION_END \
void __SetupDescHIDReport() {
//allocate memory for the HID report descriptors. We don't use them, but need the size here.
uint8_t desc_hid_report_mouse[] = { TUD_HID_REPORT_DESC_MOUSE(HID_REPORT_ID(1)) };
+260 -54
View File
@@ -30,55 +30,16 @@
#include <pico/mutex.h>
#include <sys/lock.h>
#include "_xoshiro.h"
#include "lwip_wrap.h"
extern void ethernet_arch_lwip_begin() __attribute__((weak));
extern void ethernet_arch_lwip_end() __attribute__((weak));
extern void ethernet_arch_lwip_gpio_mask() __attribute__((weak));
extern void ethernet_arch_lwip_gpio_unmask() __attribute__((weak));
auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?)
class LWIPMutex {
public:
LWIPMutex() {
if (ethernet_arch_lwip_gpio_mask) {
ethernet_arch_lwip_gpio_mask();
}
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
if (rp2040.isPicoW()) {
cyw43_arch_lwip_begin();
return;
}
#endif
if (ethernet_arch_lwip_begin) {
ethernet_arch_lwip_begin();
} else {
recursive_mutex_enter_blocking(&__lwipMutex);
}
}
~LWIPMutex() {
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
if (rp2040.isPicoW()) {
cyw43_arch_lwip_end();
} else {
#endif
if (ethernet_arch_lwip_end) {
ethernet_arch_lwip_end();
} else {
recursive_mutex_exit(&__lwipMutex);
}
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
}
#endif
if (ethernet_arch_lwip_gpio_unmask) {
ethernet_arch_lwip_gpio_unmask();
}
}
};
//auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?)
recursive_mutex_t __lwipMutex;
extern "C" {
extern void __lwip(__lwip_op op, void *req) __attribute((weak));
extern bool __isLWIPThread();
static XoshiroCpp::Xoshiro256PlusPlus *_lwip_rng = nullptr;
// Random number generator for LWIP
unsigned long __lwip_rand() {
@@ -89,6 +50,7 @@ extern "C" {
extern void __real_lwip_init();
void __wrap_lwip_init() {
if (!_lwip_rng) {
recursive_mutex_init(&__lwipMutex);
_lwip_rng = new XoshiroCpp::Xoshiro256PlusPlus(micros() * rp2040.getCycleCount());
__real_lwip_init();
}
@@ -97,215 +59,404 @@ extern "C" {
extern u8_t __real_pbuf_header(struct pbuf *p, s16_t header_size);
u8_t __wrap_pbuf_header(struct pbuf *p, s16_t header_size) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
u8_t ret;
__pbuf_header_req req = { p, header_size, &ret };
__lwip(__pbuf_header, &req);
return ret;
}
return __real_pbuf_header(p, header_size);
}
extern u8_t __real_pbuf_free(struct pbuf *p);
u8_t __wrap_pbuf_free(struct pbuf *p) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
u8_t ret;
__pbuf_free_req req = { p, &ret };
__lwip(__pbuf_free, &req);
return ret;
}
return __real_pbuf_free(p);
}
extern struct pbuf *__real_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type);
struct pbuf *__wrap_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct pbuf *ret;
__pbuf_alloc_req req = {l, length, type, &ret };
__lwip(__pbuf_alloc, &req);
return ret;
}
return __real_pbuf_alloc(l, length, type);
}
extern err_t __real_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len);
err_t __wrap_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__pbuf_take_req req = { buf, dataptr, len, &ret };
__lwip(__pbuf_take, &req);
return ret;
}
return __real_pbuf_take(buf, dataptr, len);
}
extern u16_t __real_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset);
u16_t __wrap_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
u16_t ret;
__pbuf_copy_partial_req req = { p, dataptr, len, offset, &ret };
__lwip(__pbuf_copy_partial, &req);
return ret;
}
return __real_pbuf_copy_partial(p, dataptr, len, offset);
}
extern void __real_pbuf_ref(struct pbuf *p);
void __wrap_pbuf_ref(struct pbuf *p) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__pbuf_ref_req req = { p };
__lwip(__pbuf_ref, &req);
return;
}
__real_pbuf_ref(p);
}
extern u8_t __real_pbuf_get_at(const struct pbuf* p, u16_t offset);
u8_t __wrap_pbuf_get_at(const struct pbuf* p, u16_t offset) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
u8_t ret;
__pbuf_get_at_req req = { p, offset, &ret };
__lwip(__pbuf_get_at, &req);
return ret;
}
return __real_pbuf_get_at(p, offset);
}
extern void *__real_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset);
void *__wrap_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
void *ret;
__pbuf_get_contiguous_req req = { p, buffer, bufsize, len, offset, &ret };
__lwip(__pbuf_get_contiguous, &req);
return ret;
}
return __real_pbuf_get_contiguous(p, buffer, bufsize, len, offset);
}
extern void __real_pbuf_cat(struct pbuf *head, struct pbuf *tail);
void __wrap_pbuf_cat(struct pbuf *head, struct pbuf *tail) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__pbuf_cat_req req = { head, tail };
__lwip(__pbuf_cat, &req);
return;
}
__real_pbuf_cat(head, tail);
}
extern void __real_tcp_arg(struct tcp_pcb *pcb, void *arg);
void __wrap_tcp_arg(struct tcp_pcb *pcb, void *arg) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_arg_req req = { pcb, arg };
__lwip(__tcp_arg, &req);
return;
}
__real_tcp_arg(pcb, arg);
}
extern struct tcp_pcb *__real_tcp_new(void);
struct tcp_pcb *__wrap_tcp_new(void) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct tcp_pcb *ret;
__tcp_new_req req = { &ret };
__lwip(__tcp_new, &req);
return ret;
}
return __real_tcp_new();
}
extern err_t __real_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
err_t __wrap_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__tcp_bind_req req = { pcb, ipaddr, port, &ret };
__lwip(__tcp_bind, &req);
return ret;
}
return __real_tcp_bind(pcb, ipaddr, port);
}
extern struct tcp_pcb *__real_tcp_listen(struct tcp_pcb *pcb);
struct tcp_pcb *__wrap_tcp_listen(struct tcp_pcb *pcb) {
LWIPMutex m;
return __real_tcp_listen(pcb);
}
extern struct tcp_pcb *__real_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog);
struct tcp_pcb *__wrap_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct tcp_pcb *ret;
__tcp_listen_with_backlog_req req = { pcb, backlog, &ret };
__lwip(__tcp_listen_with_backlog, &req);
return ret;
}
return __real_tcp_listen_with_backlog(pcb, backlog);
}
extern void __real_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err));
void __wrap_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_accept_req req = { pcb, accept };
__lwip(__tcp_accept, &req);
return;
}
__real_tcp_accept(pcb, accept);
}
extern err_t __real_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err));
err_t __wrap_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__tcp_connect_req req = { pcb, ipaddr, port, connected, &ret };
__lwip(__tcp_connect, &req);
return ret;
}
return __real_tcp_connect(pcb, ipaddr, port, connected);
}
extern err_t __real_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags);
err_t __wrap_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__tcp_write_req req = { pcb, dataptr, len, apiflags, &ret };
__lwip(__tcp_write, &req);
return ret;
}
return __real_tcp_write(pcb, dataptr, len, apiflags);
}
extern void __real_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len));
void __wrap_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_sent_req req = { pcb, sent };
__lwip(__tcp_sent, &req);
return;
}
__real_tcp_sent(pcb, sent);
}
extern void __real_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err));
void __wrap_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_recv_req req = { pcb, recv };
__lwip(__tcp_recv, &req);
return;
}
__real_tcp_recv(pcb, recv);
}
extern void __real_tcp_recved(struct tcp_pcb *pcb, u16_t len);
void __wrap_tcp_recved(struct tcp_pcb *pcb, u16_t len) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_recved_req req = { pcb, len };
__lwip(__tcp_recved, &req);
return;
}
__real_tcp_recved(pcb, len);
}
extern void __real_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval);
void __wrap_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_poll_req req = { pcb, poll, interval };
__lwip(__tcp_poll, &req);
return;
}
__real_tcp_poll(pcb, poll, interval);
}
extern err_t __real_tcp_close(struct tcp_pcb *pcb);
err_t __wrap_tcp_close(struct tcp_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__tcp_close_req req = { pcb, &ret };
__lwip(__tcp_close, &req);
return ret;
}
return __real_tcp_close(pcb);
}
extern void __real_tcp_abort(struct tcp_pcb *pcb);
void __wrap_tcp_abort(struct tcp_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_abort_req req = { pcb };
__lwip(__tcp_abort, &req);
return;
}
__real_tcp_abort(pcb);
}
extern void __real_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err));
void __wrap_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err)) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_err_req req = { pcb, err };
__lwip(__tcp_err, &req);
return;
}
__real_tcp_err(pcb, err);
}
extern err_t __real_tcp_output(struct tcp_pcb *pcb);
err_t __wrap_tcp_output(struct tcp_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__tcp_output_req req = { pcb, &ret };
__lwip(__tcp_output, &req);
return ret;
}
return __real_tcp_output(pcb);
}
extern void __real_tcp_setprio(struct tcp_pcb *pcb, u8_t prio);
void __wrap_tcp_setprio(struct tcp_pcb *pcb, u8_t prio) {
LWIPMutex m;
return __real_tcp_setprio(pcb, prio);
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_setprio_req req = { pcb, prio };
__lwip(__tcp_setprio, &req);
return;
}
__real_tcp_setprio(pcb, prio);
}
extern void __real_tcp_backlog_delayed(struct tcp_pcb* pcb);
void __wrap_tcp_backlog_delayed(struct tcp_pcb* pcb) {
LWIPMutex m;
return __real_tcp_backlog_delayed(pcb);
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_backlog_delayed_req req = { pcb };
__lwip(__tcp_backlog_delayed, &req);
return;
}
__real_tcp_backlog_delayed(pcb);
}
extern void __real_tcp_backlog_accepted(struct tcp_pcb* pcb);
void __wrap_tcp_backlog_accepted(struct tcp_pcb* pcb) {
LWIPMutex m;
return __real_tcp_backlog_accepted(pcb);
if (__isFreeRTOS && !__isLWIPThread()) {
__tcp_backlog_accepted_req req = { pcb };
__lwip(__tcp_backlog_accepted, &req);
return;
}
__real_tcp_backlog_accepted(pcb);
}
extern struct udp_pcb *__real_udp_new(void);
struct udp_pcb *__wrap_udp_new(void) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct udp_pcb *ret;
__udp_new_req req = { &ret };
__lwip(__udp_new, &req);
return ret;
}
return __real_udp_new();
}
extern void __real_udp_remove(struct udp_pcb *pcb);
void __wrap_udp_remove(struct udp_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__udp_remove_req req = { pcb };
__lwip(__udp_remove, &req);
return;
}
__real_udp_remove(pcb);
}
extern err_t __real_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
err_t __wrap_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__udp_bind_req req = { pcb, ipaddr, port, &ret };
__lwip(__udp_bind, &req);
return ret;
}
return __real_udp_bind(pcb, ipaddr, port);
}
extern err_t __real_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
err_t __wrap_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__udp_connect_req req = { pcb, ipaddr, port, &ret };
__lwip(__udp_connect, &req);
return ret;
}
return __real_udp_connect(pcb, ipaddr, port);
}
extern err_t __real_udp_disconnect(struct udp_pcb *pcb);
err_t __wrap_udp_disconnect(struct udp_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__udp_disconnect_req req = { pcb, &ret };
__lwip(__udp_disconnect, &req);
return ret;
}
return __real_udp_disconnect(pcb);
}
extern err_t __real_udp_send(struct udp_pcb *pcb, struct pbuf *p);
err_t __wrap_udp_send(struct udp_pcb *pcb, struct pbuf *p) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__udp_send_req req = { pcb, p, &ret };
__lwip(__udp_send, &req);
return ret;
}
return __real_udp_send(pcb, p);
}
extern void __real_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg);
void __wrap_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__udp_recv_req req = { pcb, recv, recv_arg };
__lwip(__udp_recv, &req);
return;
}
__real_udp_recv(pcb, recv, recv_arg);
}
extern err_t __real_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif);
err_t __wrap_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__udp_sendto_if_req req = { pcb, p, dst_ip, dst_port, netif, &ret };
__lwip(__udp_sendto_if, &req);
return ret;
}
return __real_udp_sendto_if(pcb, p, dst_ip, dst_port, netif);
}
@@ -313,60 +464,115 @@ extern "C" {
extern void __real_sys_check_timeouts();
void __wrap_sys_check_timeouts(void) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__lwip(__sys_check_timeouts, nullptr);
return;
}
__real_sys_check_timeouts();
}
extern err_t __real_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg);
err_t __wrap_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__dns_gethostbyname_req req = { hostname, addr, found, callback_arg, &ret };
__lwip(__dns_gethostbyname, &req);
return ret;
}
return __real_dns_gethostbyname(hostname, addr, found, callback_arg);
}
extern err_t __real_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype);
err_t __wrap_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__dns_gethostbyname_addrtype_req req = { hostname, addr, found, callback_arg, dns_addrtype, &ret };
__lwip(__dns_gethostbyname_addrtype, &req);
return ret;
}
return __real_dns_gethostbyname_addrtype(hostname, addr, found, callback_arg, dns_addrtype);
}
extern struct raw_pcb *__real_raw_new(u8_t proto);
struct raw_pcb *__wrap_raw_new(u8_t proto) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct raw_pcb *ret;
__raw_new_req req = { proto, &ret };
__lwip(__raw_new, &req);
return ret;
}
return __real_raw_new(proto);
}
extern void __real_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg);
void __wrap_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__raw_recv_req req = { pcb, recv, recv_arg };
__lwip(__raw_recv, &req);
return;
}
__real_raw_recv(pcb, recv, recv_arg);
}
extern err_t __real_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr);
err_t __wrap_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__raw_bind_req req = { pcb, ipaddr, &ret };
__lwip(__raw_bind, &req);
return ret;
}
return __real_raw_bind(pcb, ipaddr);
}
extern err_t __real_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr);
err_t __wrap_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
err_t ret;
__raw_sendto_req req = { pcb, p, ipaddr, &ret };
__lwip(__raw_sendto, &req);
return ret;
}
return __real_raw_sendto(pcb, p, ipaddr);
}
extern void __real_raw_remove(struct raw_pcb *pcb);
void __wrap_raw_remove(struct raw_pcb *pcb) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__raw_remove_req req = { pcb };
__lwip(__raw_remove, &req);
return;
}
__real_raw_remove(pcb);
}
extern struct netif *__real_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input);
struct netif *__wrap_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
struct netif *ret;
__netif_add_req req = { netif, ipaddr, netmask, gw, state, init, input, &ret };
__lwip(__netif_add, &req);
return ret;
}
return __real_netif_add(netif, ipaddr, netmask, gw, state, init, input);
}
extern void __real_netif_remove(struct netif *netif);
void __wrap_netif_remove(struct netif *netif) {
LWIPMutex m;
if (__isFreeRTOS && !__isLWIPThread()) {
__netif_remove_req req = { netif };
__lwip(__netif_remove, &req);
return;
}
__real_netif_remove(netif);
}
+470
View File
@@ -0,0 +1,470 @@
/*
FreeRTOS LWIP wrappers, implement a single LWIP work task
Copyright (c) 2024 Earle F. Philhower, III <earlephilhower@yahoo.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
#include <Arduino.h>
#include <lwip/pbuf.h>
#include <lwip/udp.h>
#include <lwip/tcp.h>
#include <lwip/dns.h>
#include <lwip/raw.h>
#include <lwip/timeouts.h>
extern void ethernet_arch_lwip_begin() __attribute__((weak));
extern void ethernet_arch_lwip_end() __attribute__((weak));
extern void ethernet_arch_lwip_gpio_mask() __attribute__((weak));
extern void ethernet_arch_lwip_gpio_unmask() __attribute__((weak));
//auto_init_recursive_mutex(__lwipMutex); // Only for case with no Ethernet or PicoW, but still doing LWIP (PPP?)
extern recursive_mutex_t __lwipMutex;
class LWIPMutex {
public:
LWIPMutex() {
if (ethernet_arch_lwip_gpio_mask) {
ethernet_arch_lwip_gpio_mask();
}
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
if (rp2040.isPicoW()) {
cyw43_arch_lwip_begin();
return;
}
#endif
if (ethernet_arch_lwip_begin) {
ethernet_arch_lwip_begin();
} else {
recursive_mutex_enter_blocking(&__lwipMutex);
}
}
~LWIPMutex() {
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
if (rp2040.isPicoW()) {
cyw43_arch_lwip_end();
} else {
#endif
if (ethernet_arch_lwip_end) {
ethernet_arch_lwip_end();
} else {
recursive_mutex_exit(&__lwipMutex);
}
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
}
#endif
if (ethernet_arch_lwip_gpio_unmask) {
ethernet_arch_lwip_gpio_unmask();
}
}
};
#ifdef __cplusplus
extern "C" {
#endif
// Implement all LWIP operations in a single FreeRTOS task. Calls to LWIP will
// actually post work on the work queue and wait until the LWIP task indicates
// completion
// Enumerated type for LWIP request
typedef enum {
__lwip_init = 1000,
__pbuf_header = 2000,
__pbuf_free,
__pbuf_alloc,
__pbuf_take,
__pbuf_copy_partial,
__pbuf_ref,
__pbuf_get_at,
__pbuf_get_contiguous,
__pbuf_cat,
__tcp_arg = 3000,
__tcp_new,
__tcp_bind,
__tcp_listen,
__tcp_listen_with_backlog,
__tcp_accept,
__tcp_connect,
__tcp_write,
__tcp_sent,
__tcp_recv,
__tcp_recved,
__tcp_poll,
__tcp_close,
__tcp_abort,
__tcp_err,
__tcp_output,
__tcp_setprio,
__tcp_backlog_delayed,
__tcp_backlog_accepted,
__udp_new = 4000,
__udp_remove,
__udp_bind,
__udp_connect,
__udp_disconnect,
__udp_send,
__udp_recv,
__udp_sendto_if,
__sys_check_timeouts = 5000,
__dns_gethostbyname = 6000,
__dns_gethostbyname_addrtype,
__raw_new = 7000,
__raw_recv,
__raw_bind,
__raw_sendto,
__raw_remove,
__netif_add = 8000,
__netif_remove
} __lwip_op;
// Set up a local request buffer and call this to add to lwip work queue. Will only return once lwip operation completed
// LWIP callbacks will happen from the LWIP task at some future time
void __lwip(__lwip_op op, void *req);
void __lwipISR(__lwip_op op, void *req);
extern void __real_lwip_init();
extern u8_t __real_pbuf_header(struct pbuf *p, s16_t header_size);
extern u8_t __real_pbuf_free(struct pbuf *p);
extern struct pbuf *__real_pbuf_alloc(pbuf_layer l, u16_t length, pbuf_type type);
extern err_t __real_pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len);
extern u16_t __real_pbuf_copy_partial(const struct pbuf *p, void *dataptr, u16_t len, u16_t offset);
extern void __real_pbuf_ref(struct pbuf *p);
extern u8_t __real_pbuf_get_at(const struct pbuf* p, u16_t offset);
extern void *__real_pbuf_get_contiguous(const struct pbuf *p, void *buffer, size_t bufsize, u16_t len, u16_t offset);
extern void __real_pbuf_cat(struct pbuf *head, struct pbuf *tail);
extern void __real_tcp_arg(struct tcp_pcb *pcb, void *arg);
extern struct tcp_pcb *__real_tcp_new(void);
extern err_t __real_tcp_bind(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
extern struct tcp_pcb *__real_tcp_listen(struct tcp_pcb *pcb);
extern struct tcp_pcb *__real_tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog);
extern void __real_tcp_accept(struct tcp_pcb *pcb, err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err));
extern err_t __real_tcp_connect(struct tcp_pcb *pcb, ip_addr_t *ipaddr, u16_t port, err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err));
extern err_t __real_tcp_write(struct tcp_pcb *pcb, const void *dataptr, u16_t len, u8_t apiflags);
extern void __real_tcp_sent(struct tcp_pcb *pcb, err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len));
extern void __real_tcp_recv(struct tcp_pcb *pcb, err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err));
extern void __real_tcp_recved(struct tcp_pcb *pcb, u16_t len);
extern void __real_tcp_poll(struct tcp_pcb *pcb, err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval);
extern err_t __real_tcp_close(struct tcp_pcb *pcb);
extern void __real_tcp_abort(struct tcp_pcb *pcb);
extern void __real_tcp_err(struct tcp_pcb *pcb, void (* err)(void *arg, err_t err));
extern err_t __real_tcp_output(struct tcp_pcb *pcb);
extern void __real_tcp_setprio(struct tcp_pcb *pcb, u8_t prio);
extern void __real_tcp_backlog_delayed(struct tcp_pcb* pcb);
extern void __real_tcp_backlog_accepted(struct tcp_pcb* pcb);
extern struct udp_pcb *__real_udp_new(void);
extern void __real_udp_remove(struct udp_pcb *pcb);
extern err_t __real_udp_bind(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
extern err_t __real_udp_connect(struct udp_pcb *pcb, ip_addr_t *ipaddr, u16_t port);
extern err_t __real_udp_disconnect(struct udp_pcb *pcb);
extern err_t __real_udp_send(struct udp_pcb *pcb, struct pbuf *p);
extern void __real_udp_recv(struct udp_pcb *pcb, void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port), void *recv_arg);
extern err_t __real_udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif);
extern void __real_sys_check_timeouts();
extern err_t __real_dns_gethostbyname(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg);
extern err_t __real_dns_gethostbyname_addrtype(const char *hostname, ip_addr_t *addr, dns_found_callback found, void *callback_arg, u8_t dns_addrtype);
extern struct raw_pcb *__real_raw_new(u8_t proto);
extern void __real_raw_recv(struct raw_pcb *pcb, raw_recv_fn recv, void *recv_arg);
extern err_t __real_raw_bind(struct raw_pcb *pcb, const ip_addr_t *ipaddr);
extern err_t __real_raw_sendto(struct raw_pcb *pcb, struct pbuf *p, const ip_addr_t *ipaddr);
extern void __real_raw_remove(struct raw_pcb *pcb);
extern struct netif *__real_netif_add(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *netmask, const ip4_addr_t *gw, void *state, netif_init_fn init, netif_input_fn input);
extern void __real_netif_remove(struct netif *netif);
typedef struct {
struct pbuf *p;
s16_t header_size;
u8_t *ret;
} __pbuf_header_req;
typedef struct {
struct pbuf *p;
u8_t *ret;
} __pbuf_free_req;
typedef struct {
pbuf_layer l;
u16_t length;
pbuf_type type;
struct pbuf **ret;
} __pbuf_alloc_req;
typedef struct {
struct pbuf *buf;
const void *dataptr;
u16_t len;
err_t *ret;
} __pbuf_take_req;
typedef struct {
const struct pbuf *p;
void *dataptr;
u16_t len;
u16_t offset;
u16_t *ret;
} __pbuf_copy_partial_req;
typedef struct {
struct pbuf *p;
} __pbuf_ref_req;
typedef struct {
const struct pbuf* p;
u16_t offset;
u8_t *ret;
} __pbuf_get_at_req;
typedef struct {
const struct pbuf *p;
void *buffer;
size_t bufsize;
u16_t len;
u16_t offset;
void **ret;
} __pbuf_get_contiguous_req;
typedef struct {
struct pbuf *head;
struct pbuf *tail;
} __pbuf_cat_req;
typedef struct {
struct tcp_pcb *pcb;
void *arg;
} __tcp_arg_req;
typedef struct {
struct tcp_pcb **ret;
} __tcp_new_req;
typedef struct {
struct tcp_pcb *pcb;
ip_addr_t *ipaddr;
u16_t port;
err_t *ret;
} __tcp_bind_req;
typedef struct {
struct tcp_pcb *pcb;
struct tcp_pcb **ret;
} __tcp_listen_req;
typedef struct {
struct tcp_pcb *pcb;
u8_t backlog;
struct tcp_pcb **ret;
} __tcp_listen_with_backlog_req;
typedef struct {
struct tcp_pcb *pcb;
err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err);
} __tcp_accept_req;
typedef struct {
struct tcp_pcb *pcb;
ip_addr_t *ipaddr;
u16_t port;
err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err);
err_t *ret;
} __tcp_connect_req;
typedef struct {
struct tcp_pcb *pcb;
const void *dataptr;
u16_t len;
u8_t apiflags;
err_t *ret;
} __tcp_write_req;
typedef struct {
struct tcp_pcb *pcb;
err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len);
} __tcp_sent_req;
typedef struct {
struct tcp_pcb *pcb;
err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err);
} __tcp_recv_req;
typedef struct {
struct tcp_pcb *pcb;
u16_t len;
} __tcp_recved_req;
typedef struct {
struct tcp_pcb *pcb;
err_t (* poll)(void *arg, struct tcp_pcb *tpcb);
u8_t interval;
} __tcp_poll_req;
typedef struct {
struct tcp_pcb *pcb;
err_t *ret;
} __tcp_close_req;
typedef struct {
struct tcp_pcb *pcb;
} __tcp_abort_req;
typedef struct {
struct tcp_pcb *pcb;
void (* err)(void *arg, err_t err);
} __tcp_err_req;
typedef struct {
struct tcp_pcb *pcb;
err_t *ret;
} __tcp_output_req;
typedef struct {
struct tcp_pcb *pcb;
u8_t prio;
} __tcp_setprio_req;
typedef struct {
struct tcp_pcb* pcb;
} __tcp_backlog_delayed_req;
typedef struct {
struct tcp_pcb* pcb;
} __tcp_backlog_accepted_req;
typedef struct {
struct udp_pcb **ret;
} __udp_new_req;
typedef struct {
struct udp_pcb *pcb;
} __udp_remove_req;
typedef struct {
struct udp_pcb *pcb;
ip_addr_t *ipaddr;
u16_t port;
err_t *ret;
} __udp_bind_req;
typedef struct {
struct udp_pcb *pcb;
ip_addr_t *ipaddr;
u16_t port;
err_t *ret;
} __udp_connect_req;
typedef struct {
struct udp_pcb *pcb;
err_t *ret;
} __udp_disconnect_req;
typedef struct {
struct udp_pcb *pcb;
struct pbuf *p;
err_t *ret;
} __udp_send_req;
typedef struct {
struct udp_pcb *pcb;
void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, ip_addr_t *addr, u16_t port);
void *recv_arg;
} __udp_recv_req;
typedef struct {
struct udp_pcb *pcb;
struct pbuf *p;
const ip_addr_t *dst_ip;
u16_t dst_port;
struct netif *netif;
err_t *ret;
} __udp_sendto_if_req;
typedef struct {
const char *hostname;
ip_addr_t *addr;
dns_found_callback found;
void *callback_arg;
err_t *ret;
} __dns_gethostbyname_req;
typedef struct {
const char *hostname;
ip_addr_t *addr;
dns_found_callback found;
void *callback_arg;
u8_t dns_addrtype;
err_t *ret;
} __dns_gethostbyname_addrtype_req;
typedef struct {
u8_t proto;
struct raw_pcb **ret;
} __raw_new_req;
typedef struct {
struct raw_pcb *pcb;
raw_recv_fn recv;
void *recv_arg;
} __raw_recv_req;
typedef struct {
struct raw_pcb *pcb;
const ip_addr_t *ipaddr;
err_t *ret;
} __raw_bind_req;
typedef struct {
struct raw_pcb *pcb;
struct pbuf *p;
const ip_addr_t *ipaddr;
err_t *ret;
} __raw_sendto_req;
typedef struct {
struct raw_pcb *pcb;
} __raw_remove_req;
typedef struct {
struct netif *netif;
const ip4_addr_t *ipaddr;
const ip4_addr_t *netmask;
const ip4_addr_t *gw;
void *state;
netif_init_fn init;
netif_input_fn input;
struct netif **ret;
} __netif_add_req;
typedef struct {
struct netif *netif;
} __netif_remove_req;
#ifdef __cplusplus
};
#endif
+75
View File
@@ -0,0 +1,75 @@
/*
16-bit axis gamepad definition
Copyright (c) 2024 Earle F. Philhower, III <earlephilhower@yahoo.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#pragma once
#include "tusb.h"
#include "class/hid/hid_device.h"
#define TUD_HID_REPORT_DESC_GAMEPAD16(...) \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_GAMEPAD ) ,\
HID_COLLECTION ( HID_COLLECTION_APPLICATION ) ,\
/* Report ID if any */\
__VA_ARGS__ \
/* 16 bit X, Y, Z, Rz, Rx, Ry (min -32767, max 32767 ) */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_X ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_Y ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_Z ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RZ ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RX ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_RY ) ,\
HID_LOGICAL_MIN_N ( -32767, 2 ) ,\
HID_LOGICAL_MAX_N ( 32767, 2 ) ,\
HID_REPORT_COUNT ( 6 ) ,\
HID_REPORT_SIZE ( 16 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
/* 8 bit DPad/Hat Button Map */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ) ,\
HID_USAGE ( HID_USAGE_DESKTOP_HAT_SWITCH ) ,\
HID_LOGICAL_MIN ( 1 ) ,\
HID_LOGICAL_MAX ( 8 ) ,\
HID_PHYSICAL_MIN ( 0 ) ,\
HID_PHYSICAL_MAX_N ( 315, 2 ) ,\
HID_REPORT_COUNT ( 1 ) ,\
HID_REPORT_SIZE ( 8 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
/* 32 bit Button Map */ \
HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ) ,\
HID_USAGE_MIN ( 1 ) ,\
HID_USAGE_MAX ( 32 ) ,\
HID_LOGICAL_MIN ( 0 ) ,\
HID_LOGICAL_MAX ( 1 ) ,\
HID_REPORT_COUNT ( 32 ) ,\
HID_REPORT_SIZE ( 1 ) ,\
HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,\
HID_COLLECTION_END \
// HID Gamepad Protocol Report.
typedef struct TU_ATTR_PACKED {
int16_t x; ///< Delta x movement of left analog-stick
int16_t y; ///< Delta y movement of left analog-stick
int16_t z; ///< Delta z movement of right analog-joystick
int16_t rz; ///< Delta Rz movement of right analog-joystick
int16_t rx; ///< Delta Rx movement of analog left trigger
int16_t ry; ///< Delta Ry movement of analog right trigger
uint8_t hat; ///< Buttons mask for currently pressed buttons in the DPad/hat
uint32_t buttons; ///< Buttons mask for currently pressed buttons
} hid_gamepad16_report_t;
+2
View File
@@ -38,6 +38,8 @@ extern unsigned long __lwip_rand(void);
#define TCP_MSS 1460
#define TCP_SND_BUF (8 * TCP_MSS)
#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1)) / (TCP_MSS))
#define TCP_LISTEN_BACKLOG 1
#define TCP_DEFAULT_LISTEN_BACKLOG 2
#define LWIP_NETIF_STATUS_CALLBACK 1
#define LWIP_NETIF_LINK_CALLBACK 1
#define LWIP_NETIF_HOSTNAME 1
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -166,7 +166,7 @@
-Wl,--wrap=tcp_arg
-Wl,--wrap=tcp_new
-Wl,--wrap=tcp_listen
-Wl,--wrap=tcp_bind
-Wl,--wrap=tcp_listen_with_backlog
-Wl,--wrap=tcp_accept
-Wl,--wrap=tcp_connect
+8 -9
View File
@@ -22,23 +22,22 @@
#include <functional>
#include <WiFiUdp.h>
#include "ArduinoOTA.h"
#include "MD5Builder.h"
#include <MD5Builder.h>
#include <PicoOTA.h>
#include <StreamString.h>
#include "lwip/udp.h"
#include "include/UdpContext.h"
#include <lwip/udp.h>
#include <include/UdpContext.h>
#if !defined(NO_GLOBAL_INSTANCES) && !defined(NO_GLOBAL_MDNS)
#include <LEAmDNS.h>
#endif
//#ifdef DEBUG_ESP_OTA
//#ifdef DEBUG_ESP_PORT
//#define OTA_DEBUG DEBUG_ESP_PORT
//#endif
//#endif
#define OTA_DEBUG Serial
#ifdef DEBUG_RP2040_CORE
#ifdef DEBUG_RP2040_PORT
#define OTA_DEBUG DEBUG_RP2040_PORT
#endif
#endif
ArduinoOTAClass::ArduinoOTAClass() {
}
+2 -2
View File
@@ -24,8 +24,8 @@
#include <lwip/def.h>
#include <Arduino.h>
#ifdef DEBUG_ESP_PORT
#define CONSOLE DEBUG_ESP_PORT
#ifdef DEBUG_RP2040_PORT
#define CONSOLE DEBUG_RP2040_PORT
#else
#define CONSOLE Serial
#endif
+1
View File
@@ -26,6 +26,7 @@
#define configSUPPORT_STATIC_ALLOCATION 1
#define configSTACK_DEPTH_TYPE uint32_t
#define configUSE_TASK_PREEMPTION_DISABLE 1
#define configTASK_NOTIFICATION_ARRAY_ENTRIES 4
#define configUSE_NEWLIB_REENTRANT 1
#define configNEWLIB_REENTRANT_IS_DYNAMIC 1
+354
View File
@@ -193,6 +193,354 @@ extern "C" void __no_inline_not_in_flash_func(__freertos_resume_other_core)() {
vTaskPreemptionEnable(nullptr);
}
#include <lwip_wrap.h>
static TaskHandle_t __lwipTask;
static QueueHandle_t __lwipQueue;
typedef struct {
__lwip_op op;
void *req;
TaskHandle_t wakeup;
} LWIPWork;
#define TASK_NOTIFY_LWIP_WAKEUP (configTASK_NOTIFICATION_ARRAY_ENTRIES - 1)
extern "C" void __lwip(__lwip_op op, void *req) {
LWIPWork w;
TaskStatus_t t;
vTaskGetInfo(nullptr, &t, pdFALSE, eInvalid); // TODO - can we speed this up???
w.op = op;
w.req = req;
w.wakeup = t.xHandle;
if (!xQueueSend(__lwipQueue, &w, portMAX_DELAY)) {
panic("LWIP task send failed");
}
ulTaskNotifyTakeIndexed(TASK_NOTIFY_LWIP_WAKEUP, pdTRUE, portMAX_DELAY);
}
extern "C" bool __isLWIPThread() {
TaskStatus_t t;
vTaskGetInfo(nullptr, &t, pdFALSE, eInvalid); // TODO - can we speed this up???
return t.xHandle == __lwipTask;
}
static void lwipThread(void *params) {
(void) params;
LWIPWork w;
assert(__isLWIPThread());
while (true) {
if (xQueueReceive(__lwipQueue, &w, portMAX_DELAY)) {
switch (w.op) {
case __lwip_init:
{
__real_lwip_init();
break;
}
case __pbuf_header:
{
__pbuf_header_req *r = (__pbuf_header_req *)w.req;
*(r->ret) = __real_pbuf_header(r->p, r->header_size);
break;
}
case __pbuf_free:
{
__pbuf_free_req *r = (__pbuf_free_req *)w.req;
*(r->ret) = __real_pbuf_free(r->p);
break;
}
case __pbuf_alloc:
{
__pbuf_alloc_req *r = (__pbuf_alloc_req *)w.req;
*(r->ret) = __real_pbuf_alloc(r->l, r->length, r->type);
break;
}
case __pbuf_take:
{
__pbuf_take_req *r = (__pbuf_take_req *)w.req;
*(r->ret) = __real_pbuf_take(r->buf, r->dataptr, r->len);
break;
}
case __pbuf_copy_partial:
{
__pbuf_copy_partial_req *r = (__pbuf_copy_partial_req *)w.req;
*(r->ret) = __real_pbuf_copy_partial(r->p, r->dataptr, r->len, r->offset);
break;
}
case __pbuf_ref:
{
__pbuf_ref_req *r = (__pbuf_ref_req *)w.req;
__real_pbuf_ref(r->p);
break;
}
case __pbuf_get_at:
{
__pbuf_get_at_req *r = (__pbuf_get_at_req *)w.req;
*(r->ret) = __real_pbuf_get_at(r->p, r->offset);
break;
}
case __pbuf_get_contiguous:
{
__pbuf_get_contiguous_req *r = (__pbuf_get_contiguous_req *)w.req;
*(r->ret) = __real_pbuf_get_contiguous(r->p, r->buffer, r->bufsize, r->len, r->offset);
break;
}
case __pbuf_cat:
{
__pbuf_cat_req *r = (__pbuf_cat_req *)w.req;
__real_pbuf_cat(r->head, r->tail);
break;
}
case __tcp_arg:
{
__tcp_arg_req *r = (__tcp_arg_req *)w.req;
__real_tcp_arg(r->pcb, r->arg);
break;
}
case __tcp_new:
{
__tcp_new_req *r = (__tcp_new_req *)w.req;
*(r->ret) = __real_tcp_new();
break;
}
case __tcp_bind:
{
__tcp_bind_req *r = (__tcp_bind_req *)w.req;
*(r->ret) = __real_tcp_bind(r->pcb, r->ipaddr, r->port);
break;
}
case __tcp_listen_with_backlog:
{
__tcp_listen_with_backlog_req *r = (__tcp_listen_with_backlog_req *)w.req;
*(r->ret) = __real_tcp_listen_with_backlog(r->pcb, r->backlog);
break;
}
case __tcp_accept:
{
__tcp_accept_req *r = (__tcp_accept_req *)w.req;
__real_tcp_accept(r->pcb, r->accept);
break;
}
case __tcp_connect:
{
__tcp_connect_req *r = (__tcp_connect_req *)w.req;
*(r->ret) = __real_tcp_connect(r->pcb, r->ipaddr, r->port, r->connected);
break;
}
case __tcp_write:
{
__tcp_write_req *r = (__tcp_write_req *)w.req;
*(r->ret) = __real_tcp_write(r->pcb, r->dataptr, r->len, r->apiflags);
break;
}
case __tcp_sent:
{
__tcp_sent_req *r = (__tcp_sent_req *)w.req;
__real_tcp_sent(r->pcb, r->sent);
break;
}
case __tcp_recv:
{
__tcp_recv_req *r = (__tcp_recv_req *)w.req;
__real_tcp_recv(r->pcb, r->recv);
break;
}
case __tcp_recved:
{
__tcp_recved_req *r = (__tcp_recved_req *)w.req;
__real_tcp_recved(r->pcb, r->len);
break;
}
case __tcp_poll:
{
__tcp_poll_req *r = (__tcp_poll_req *)w.req;
__real_tcp_poll(r->pcb, r->poll, r->interval);
break;
}
case __tcp_close:
{
__tcp_close_req *r = (__tcp_close_req *)w.req;
*(r->ret) = __real_tcp_close(r->pcb);
break;
}
case __tcp_abort:
{
__tcp_abort_req *r = (__tcp_abort_req *)w.req;
__real_tcp_abort(r->pcb);
break;
}
case __tcp_err:
{
__tcp_err_req *r = (__tcp_err_req *)w.req;
__real_tcp_err(r->pcb, r->err);
break;
}
case __tcp_output:
{
__tcp_output_req *r = (__tcp_output_req *)w.req;
*(r->ret) = __real_tcp_output(r->pcb);
break;
}
case __tcp_setprio:
{
__tcp_setprio_req *r = (__tcp_setprio_req *)w.req;
__real_tcp_setprio(r->pcb, r->prio);
break;
}
case __tcp_backlog_delayed:
{
__tcp_backlog_delayed_req *r = (__tcp_backlog_delayed_req *)w.req;
__real_tcp_backlog_delayed(r->pcb);
break;
}
case __tcp_backlog_accepted:
{
__tcp_backlog_accepted_req *r = (__tcp_backlog_accepted_req *)w.req;
__real_tcp_backlog_accepted(r->pcb);
break;
}
case __udp_new:
{
__udp_new_req *r = (__udp_new_req *)w.req;
*(r->ret) = __real_udp_new();
break;
}
case __udp_remove:
{
__udp_remove_req *r = (__udp_remove_req *)w.req;
__real_udp_remove(r->pcb);
break;
}
case __udp_bind:
{
__udp_bind_req *r = (__udp_bind_req *)w.req;
*(r->ret) = __real_udp_bind(r->pcb, r->ipaddr, r->port);
break;
}
case __udp_connect:
{
__udp_connect_req *r = (__udp_connect_req *)w.req;
*(r->ret) = __real_udp_connect(r->pcb, r->ipaddr, r->port);
break;
}
case __udp_disconnect:
{
__udp_disconnect_req *r = (__udp_disconnect_req *)w.req;
*(r->ret) = __real_udp_disconnect(r->pcb);
break;
}
case __udp_send:
{
__udp_send_req *r = (__udp_send_req *)w.req;
*(r->ret) = __real_udp_send(r->pcb, r->p);
break;
}
case __udp_recv:
{
__udp_recv_req *r = (__udp_recv_req *)w.req;
__real_udp_recv(r->pcb, r->recv, r->recv_arg);
break;
}
case __udp_sendto_if:
{
__udp_sendto_if_req *r = (__udp_sendto_if_req *)w.req;
*(r->ret) = __real_udp_sendto_if(r->pcb, r->p, r->dst_ip, r->dst_port, r->netif);
break;
}
case __sys_check_timeouts:
{
__real_sys_check_timeouts();
break;
}
case __dns_gethostbyname:
{
__dns_gethostbyname_req *r = (__dns_gethostbyname_req *)w.req;
*(r->ret) = __real_dns_gethostbyname(r->hostname, r->addr, r->found, r->callback_arg);
break;
}
case __dns_gethostbyname_addrtype:
{
__dns_gethostbyname_addrtype_req *r = (__dns_gethostbyname_addrtype_req *)w.req;
*(r->ret) = __real_dns_gethostbyname_addrtype(r->hostname, r->addr, r->found, r->callback_arg, r->dns_addrtype);
break;
}
case __raw_new:
{
__raw_new_req *r = (__raw_new_req *)w.req;
*(r->ret) = __real_raw_new(r->proto);
break;
}
case __raw_recv:
{
__raw_recv_req *r = (__raw_recv_req *)w.req;
__real_raw_recv(r->pcb, r->recv, r->recv_arg);
break;
}
case __raw_bind:
{
__raw_bind_req *r = (__raw_bind_req *)w.req;
*(r->ret) = __real_raw_bind(r->pcb, r->ipaddr);
break;
}
case __raw_sendto:
{
__raw_sendto_req *r = (__raw_sendto_req *)w.req;
*(r->ret) = __real_raw_sendto(r->pcb, r->p, r->ipaddr);
break;
}
case __raw_remove:
{
__raw_remove_req *r = (__raw_remove_req *)w.req;
__real_raw_remove(r->pcb);
break;
}
case __netif_add:
{
__netif_add_req *r = (__netif_add_req *)w.req;
*(r->ret) = __real_netif_add(r->netif, r->ipaddr, r->netmask, r->gw, r->state, r->init, r->input);
break;
}
case __netif_remove:
{
__netif_remove_req *r = (__netif_remove_req *)w.req;
__real_netif_remove(r->netif);
break;
}
default:
{
// Any new unimplemented calls = ERROR!!!
panic("Unimplemented LWIP thread action");
break;
}
}
// Work done, return value set, just tickle the calling task
xTaskNotifyGiveIndexed(w.wakeup, TASK_NOTIFY_LWIP_WAKEUP);
}
}
}
extern "C" void ethernet_timeout_reached(void *context, void *worker);
static TaskHandle_t __ethernetTask;
SemaphoreHandle_t __hwMutex;
static void ethernetTask(void *param) {
(void) param;
while (true) {
delay(20);
{
LWIPMutex m;
ethernet_timeout_reached(nullptr, nullptr);
}
}
}
void __startEthernetTask() {
xTaskCreate(ethernetTask, "Ethernet", 1024, 0, configMAX_PRIORITIES / 2 - 1, &__ethernetTask);
vTaskCoreAffinitySet(__ethernetTask, 1 << 0);
}
extern mutex_t __usb_mutex;
static TaskHandle_t __usbTask;
@@ -216,6 +564,12 @@ void startFreeRTOS(void) {
xTaskCreate(IdleThisCore, "IdleCore1", 128, 0, configMAX_PRIORITIES - 1, __idleCoreTask + 1);
vTaskCoreAffinitySet(__idleCoreTask[1], 1 << 1);
// LWIP runs on core 0 only
__lwipQueue = xQueueCreate(16, sizeof(LWIPWork));
__hwMutex = xSemaphoreCreateMutex();
xTaskCreate(lwipThread, "LWIP", 1024, 0, configMAX_PRIORITIES / 2 - 1, &__lwipTask);
vTaskCoreAffinitySet(__lwipTask, 1 << 0);
// Initialise and run the freeRTOS scheduler. Execution should never return here.
__freeRTOSinitted = true;
vTaskStartScheduler();
@@ -1,4 +1,5 @@
#include "HID_Bluetooth.h"
#include <sdkoverride/tusb_gamepad16.h>
//setup the report map.
//more generic function to be used with BLE & BT Classis
@@ -6,7 +7,7 @@ void __SetupHIDreportmap(void (*WeakMouse)(), void (*WeakKeyboard)(), void (*Wea
//allocate memory for the HID report descriptors. We don't use them, but need the size here.
uint8_t desc_hid_report_mouse[] = { TUD_HID_REPORT_DESC_MOUSE(HID_REPORT_ID(1)) };
uint8_t desc_hid_report_absmouse[] = { TUD_HID_REPORT_DESC_ABSMOUSE(HID_REPORT_ID(1)) };
uint8_t desc_hid_report_joystick[] = { TUD_HID_REPORT_DESC_GAMEPAD(HID_REPORT_ID(1)) };
uint8_t desc_hid_report_joystick[] = { TUD_HID_REPORT_DESC_GAMEPAD16(HID_REPORT_ID(1)) };
uint8_t desc_hid_report_keyboard[] = { TUD_HID_REPORT_DESC_KEYBOARD(HID_REPORT_ID(1)), TUD_HID_REPORT_DESC_CONSUMER(HID_REPORT_ID(2)) };
int size = 0;
@@ -111,7 +112,7 @@ void __SetupHIDreportmap(void (*WeakMouse)(), void (*WeakKeyboard)(), void (*Wea
reportid++;
offset += sizeof(desc_hid_report_absmouse);
}
uint8_t desc_local[] = { TUD_HID_REPORT_DESC_GAMEPAD(HID_REPORT_ID(reportid)) };
uint8_t desc_local[] = { TUD_HID_REPORT_DESC_GAMEPAD16(HID_REPORT_ID(reportid)) };
memcpy(*reportmap + offset, desc_local, sizeof(desc_local));
}
+3 -3
View File
@@ -35,9 +35,9 @@
#include <memory>
#include <vector>
#ifdef DEBUG_ESP_HTTP_CLIENT
#ifdef DEBUG_ESP_PORT
#define DEBUG_HTTPCLIENT(fmt, ...) DEBUG_ESP_PORT.printf_P( (PGM_P)PSTR(fmt), ## __VA_ARGS__ )
#ifdef DEBUG_RP2040_CORE
#ifdef DEBUG_RP2040_PORT
#define DEBUG_HTTPCLIENT(fmt, ...) DEBUG_RP2040_PORT.printf_P( (PGM_P)PSTR(fmt), ## __VA_ARGS__ )
#endif
#endif
+3 -3
View File
@@ -31,9 +31,9 @@
#include <WiFiUdp.h>
#include <HTTPClient.h>
#ifdef DEBUG_ESP_HTTP_UPDATE
#ifdef DEBUG_ESP_PORT
#define DEBUG_HTTP_UPDATE(fmt, ...) DEBUG_ESP_PORT.printf_P( (PGM_P)PSTR(fmt), ## __VA_ARGS__ )
#ifdef DEBUG_RP2040_CORE
#ifdef DEBUG_RP2040_PORT
#define DEBUG_HTTP_UPDATE(fmt, ...) DEBUG_RP2040_PORT.printf_P( (PGM_P)PSTR(fmt), ## __VA_ARGS__ )
#endif
#endif
+3 -3
View File
@@ -1,5 +1,5 @@
/*
SD.h - A thin shim for Arduino ESP8266 Filesystems
SD.h - A thin shim for Arduino RP2040 Filesystems
Copyright (c) 2019 Earle F. Philhower, III. All rights reserved.
This library is free software; you can redistribute it and/or
@@ -139,9 +139,9 @@ public:
size_t size() {
uint64_t sz = size64();
#ifdef DEBUG_ESP_PORT
#ifdef DEBUG_RP2040_PORT
if (sz > std::numeric_limits<uint32_t>::max()) {
DEBUG_ESP_PORT.printf_P(PSTR("WARNING: SD card size overflow (%lld >= 4GB). Please update source to use size64().\n"), (long long)sz);
DEBUG_RP2040_PORT.printf_P(PSTR("WARNING: SD card size overflow (%lld >= 4GB). Please update source to use size64().\n"), (long long)sz);
}
#endif
return (size_t)sz;
+2 -2
View File
@@ -115,10 +115,10 @@ public:
info.pageSize = i.pageSize;
info.maxOpenFiles = i.maxOpenFiles;
info.maxPathLength = i.maxPathLength;
#ifdef DEBUG_ESP_PORT
#ifdef DEBUG_RP2040_PORT
if (i.totalBytes > std::numeric_limits<uint32_t>::max()) {
// This catches both total and used cases, since used must always be < total.
DEBUG_ESP_PORT.printf_P(PSTR("WARNING: SD card size overflow (%lld >= 4GB). Please update source to use info64().\n"), (long long)i.totalBytes);
DEBUG_RP2040_PORT.printf_P(PSTR("WARNING: SD card size overflow (%lld >= 4GB). Please update source to use info64().\n"), (long long)i.totalBytes);
}
#endif
info.totalBytes = (size_t)i.totalBytes;
+2 -2
View File
@@ -21,8 +21,8 @@
#include <memory>
#if defined(DEBUG_ESP_SSL) && defined(DEBUG_ESP_PORT)
#define DEBUG_BSSL(fmt, ...) DEBUG_ESP_PORT.printf_P((PGM_P)PSTR( "BSSL:" fmt), ## __VA_ARGS__)
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
#define DEBUG_BSSL(fmt, ...) DEBUG_RP2040_PORT.printf_P((PGM_P)PSTR( "BSSL:" fmt), ## __VA_ARGS__)
#else
#define DEBUG_BSSL(...)
#endif
+15 -20
View File
@@ -29,18 +29,14 @@
#include "WiFiClientSecureBearSSL.h"
#include "WiFiNTP.h"
#include "StackThunk.h"
#include "lwip/opt.h"
#include "lwip/ip.h"
#include "lwip/tcp.h"
#include "lwip/inet.h"
#include "lwip/netif.h"
#include <lwip/opt.h>
#include <lwip/ip.h>
#include <lwip/tcp.h>
#include <lwip/inet.h>
#include <lwip/netif.h>
#include <include/ClientContext.h>
//#include "c_types.h"
//#include <mmu_iram.h>
//#include <umm_malloc/umm_malloc.h>
//#include <umm_malloc/umm_heap_select.h>
#if 1
#if !CORE_MOCK
#if !defined(CORE_MOCK)
// The BearSSL thunks in use for now
#define br_ssl_engine_recvapp_ack thunk_br_ssl_engine_recvapp_ack
@@ -52,11 +48,10 @@
#define br_ssl_engine_sendrec_ack thunk_br_ssl_engine_sendrec_ack
#define br_ssl_engine_sendrec_buf thunk_br_ssl_engine_sendrec_buf
#endif
#endif
#if defined(DEBUG_ESP_SSL) && defined(DEBUG_ESP_PORT)
#define DEBUG_BSSL(fmt, ...) DEBUG_ESP_PORT.printf_P((PGM_P)PSTR( "BSSL:" fmt), ## __VA_ARGS__)
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
#define DEBUG_BSSL(fmt, ...) DEBUG_RP2040_PORT.printf_P((PGM_P)PSTR( "BSSL:" fmt), ## __VA_ARGS__)
#else
#define DEBUG_BSSL(...)
#endif
@@ -721,12 +716,12 @@ extern "C" {
if (!xc->done_cert) {
br_sha1_update(&xc->sha1_cert, buf, len);
br_x509_decoder_push(&xc->ctx, (const void*)buf, len);
#if defined(DEBUG_ESP_SSL) && defined(DEBUG_ESP_PORT)
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
DEBUG_BSSL("CERT: ");
for (size_t i = 0; i < len; i++) {
DEBUG_ESP_PORT.printf_P(PSTR("%02x "), buf[i] & 0xff);
DEBUG_RP2040_PORT.printf_P(PSTR("%02x "), buf[i] & 0xff);
}
DEBUG_ESP_PORT.printf_P(PSTR("\n"));
DEBUG_RP2040_PORT.printf_P(PSTR("\n"));
#endif
}
}
@@ -750,7 +745,7 @@ extern "C" {
char res[20];
br_sha1_out(&xc->sha1_cert, res);
if (xc->match_fingerprint && memcmp(res, xc->match_fingerprint, sizeof(res))) {
#ifdef DEBUG_ESP_SSL
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
DEBUG_BSSL("insecure_end_chain: Received cert FP doesn't match\n");
char buff[3 * sizeof(res) + 1]; // 3 chars per byte XX_, and null
buff[0] = 0;
@@ -1143,7 +1138,7 @@ bool WiFiClientSecureCtx::_connectSSL(const char* hostName) {
}
}
#ifdef DEBUG_ESP_SSL
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
// BearSSL will reject all connections unless an authentication option is set, warn in DEBUG builds
if (!_use_insecure && !_use_fingerprint && !_use_self_signed && !_knownkey && !_certStore && !_ta) {
DEBUG_BSSL("Connection *will* fail, no authentication method is setup\n");
@@ -1213,7 +1208,7 @@ bool WiFiClientSecureCtx::_connectSSL(const char* hostName) {
}
auto ret = _wait_for_handshake();
#ifdef DEBUG_ESP_SSL
#if defined(DEBUG_RP2040_CORE) && defined(DEBUG_RP2040_PORT)
if (!ret) {
char err[256];
getLastSSLError(err, sizeof(err));
+1 -1
View File
@@ -171,7 +171,7 @@ public:
_on_rx = handler;
}
#ifdef DEBUG_ESP_CORE
#ifdef DEBUG_RP2040_CORE
// this helper is ready to be used when debugging UDP
void printChain(const pbuf* pb, const char* msg, size_t n) const {
// printf the pb pbuf chain, buffered and all at once
+8 -3
View File
@@ -170,8 +170,8 @@ static async_context_t *lwip_ethernet_init_default_async_context(void) {
uint32_t __ethernet_timeout_reached_calls = 0;
static uint32_t _pollingPeriod = 20;
// This will only be called under the protection of the async context mutex, so no re-entrancy checks needed
static void ethernet_timeout_reached(__unused async_context_t *context, __unused async_at_time_worker_t *worker) {
assert(worker == &ethernet_timeout_worker);
extern "C" void ethernet_timeout_reached(__unused async_context_t *context, __unused async_at_time_worker_t *worker) {
// assert(worker == &ethernet_timeout_worker);
__ethernet_timeout_reached_calls++;
ethernet_arch_lwip_gpio_mask(); // Ensure non-polled devices won't interrupt us
for (auto handlePacket : _handlePacketList) {
@@ -192,6 +192,7 @@ static void update_next_timeout(async_context_t *context, async_when_pending_wor
worker->work_pending = true;
async_context_add_at_time_worker_in_ms(context, &ethernet_timeout_worker, _pollingPeriod);
}
extern void __startEthernetTask() __attribute((weak));
void __startEthernetContext() {
if (__ethernetContextInitted) {
@@ -209,7 +210,11 @@ void __startEthernetContext() {
ethernet_timeout_worker.do_work = ethernet_timeout_reached;
always_pending_update_timeout_worker.work_pending = true;
always_pending_update_timeout_worker.do_work = update_next_timeout;
async_context_add_when_pending_worker(_context, &always_pending_update_timeout_worker);
if (__isFreeRTOS) {
__startEthernetTask();
} else {
async_context_add_when_pending_worker(_context, &always_pending_update_timeout_worker);
}
__ethernetContextInitted = true;
}
+1 -1
View File
@@ -39,7 +39,7 @@ extern "C" void netif_status_changed(struct netif* netif) {
bool LwipIntf::stateChangeSysCB(LwipIntf::CBType&& cb) {
if (netifStatusChangeListLength >= NETIF_STATUS_CB_SIZE) {
#if defined(DEBUG_ESP_CORE)
#if defined(DEBUG_RP2040_CORE)
DEBUGV("NETIF_STATUS_CB_SIZE is too low\n");
#endif
return false;
+29 -11
View File
@@ -40,6 +40,9 @@
#include <lwip/inet_chksum.h>
#include <lwip/apps/sntp.h>
#include <_freertos.h>
extern SemaphoreHandle_t __hwMutex;
#include "SPI.h"
#include "LwipIntf.h"
@@ -369,9 +372,12 @@ bool LwipIntfDev<RawDev>::begin(const uint8_t* macAddress, const uint16_t mtu) {
return false;
}
__freertos_mutex_take(__hwMutex);
if (!RawDev::begin(_macAddress, &_netif)) {
__freertos_mutex_give(__hwMutex);
return false;
}
__freertos_mutex_give(__hwMutex);
if (_intrPin < 0) {
_phID = __addEthernetPacketHandler([this] { this->handlePackets(); });
@@ -427,18 +433,22 @@ bool LwipIntfDev<RawDev>::begin(const uint8_t* macAddress, const uint16_t mtu) {
template<class RawDev>
void LwipIntfDev<RawDev>::end() {
if (_intrPin < 0) {
__removeEthernetPacketHandler(_phID);
} else {
detachInterrupt(_intrPin);
__removeEthernetGPIO(_intrPin);
if (_started) {
if (_intrPin < 0) {
__removeEthernetPacketHandler(_phID);
} else {
detachInterrupt(_intrPin);
__removeEthernetGPIO(_intrPin);
}
__freertos_mutex_take(__hwMutex);
RawDev::end();
__freertos_mutex_give(__hwMutex);
netif_remove(&_netif);
_started = false;
}
RawDev::end();
netif_remove(&_netif);
_started = false;
}
template<class RawDev>
@@ -464,7 +474,9 @@ template<class RawDev>
err_t LwipIntfDev<RawDev>::linkoutput_s(netif* netif, struct pbuf* pbuf) {
LwipIntfDev* lid = (LwipIntfDev*)netif->state;
ethernet_arch_lwip_begin();
__freertos_mutex_take(__hwMutex);
uint16_t len = lid->sendFrame((const uint8_t*)pbuf->payload, pbuf->len);
__freertos_mutex_give(__hwMutex);
lid->_packetsSent++;
#if PHY_HAS_CAPTURE
if (phy_capture) {
@@ -548,7 +560,9 @@ err_t LwipIntfDev<RawDev>::handlePackets() {
return ERR_OK;
}
__freertos_mutex_take(__hwMutex);
uint16_t tot_len = RawDev::readFrameSize();
__freertos_mutex_give(__hwMutex);
if (!tot_len) {
return ERR_OK;
}
@@ -566,11 +580,15 @@ err_t LwipIntfDev<RawDev>::handlePackets() {
if (pbuf) {
pbuf_free(pbuf);
}
__freertos_mutex_take(__hwMutex);
RawDev::discardFrame(tot_len);
__freertos_mutex_give(__hwMutex);
return ERR_BUF;
}
__freertos_mutex_take(__hwMutex);
uint16_t len = RawDev::readFrameData((uint8_t*)pbuf->payload, tot_len);
__freertos_mutex_give(__hwMutex);
if (len != tot_len) {
// tot_len is given by readFrameSize()
// and is supposed to be honoured by readFrameData()
+1 -1
View File
@@ -2,7 +2,7 @@
cache_dir=$(mktemp -d)
source "$TRAVIS_BUILD_DIR"/tests/common.sh
source "$GITHUB_WORKSPACE"/tests/common.sh
install_arduino nodebug
+1 -1
View File
@@ -2,7 +2,7 @@
cache_dir=$(mktemp -d)
source "$TRAVIS_BUILD_DIR"/tests/common.sh
source "$GITHUB_WORKSPACE"/tests/common.sh
if [ -z "$BUILD_PARITY" ]; then
mod=1
+1 -1
View File
@@ -4,7 +4,7 @@
set -ev
cd $TRAVIS_BUILD_DIR
cd $GITHUB_WORKSPACE
tools/boards.txt.py --boardsgen --ldgen --packagegen --docgen
+1 -1
View File
@@ -4,6 +4,6 @@
set -ev
cd $TRAVIS_BUILD_DIR/doc
cd $GITHUB_WORKSPACE/doc
SPHINXOPTS="-W" make html
+3 -3
View File
@@ -4,13 +4,13 @@
set -ev
export PKG_URL=https://github.com/esp8266/Arduino/releases/download/$TRAVIS_TAG/esp8266-$TRAVIS_TAG.zip
export DOC_URL=https://arduino-esp8266.readthedocs.io/en/$TRAVIS_TAG/
export PKG_URL=https://github.com/esp8266/Arduino/releases/download/$GITHUB_REF/esp8266-$GITHUB_REF.zip
export DOC_URL=https://arduino-esp8266.readthedocs.io/en/$GITHUB_REF/
if [ -z "$CI_GITHUB_API_KEY" ]; then
echo "Github API key not set. Skip building the package."
exit 0
fi
cd $TRAVIS_BUILD_DIR/package
cd $GITHUB_WORKSPACE/package
./build_boards_manager_package.sh
+1 -1
View File
@@ -4,7 +4,7 @@
set -ev
cd $TRAVIS_BUILD_DIR/tests/host
cd $GITHUB_WORKSPACE/tests/host
make -j2 FORCE32=0 ssl
+1 -1
View File
@@ -12,4 +12,4 @@ ${org}/../restyle.sh
git --version || true
git submodule foreach --recursive 'git reset --hard'
git diff --exit-code -- $TRAVIS_BUILD_DIR
git diff --exit-code -- $GITHUB_WORKSPACE
+8 -8
View File
@@ -230,9 +230,9 @@ function install_arduino()
{
local debug=$1
# Install Arduino IDE and required libraries
cd $TRAVIS_BUILD_DIR
install_ide $HOME/arduino_ide $TRAVIS_BUILD_DIR $debug
cd $TRAVIS_BUILD_DIR
cd $GITHUB_WORKSPACE
install_ide $HOME/arduino_ide $GITHUB_WORKSPACE $debug
cd $GITHUB_WORKSPACE
install_libraries
}
@@ -244,7 +244,7 @@ function build_sketches_with_arduino()
# Compile sketches
build_sketches $HOME/arduino_ide $HOME/arduino_ide/examples "-l $HOME/Arduino/libraries ${build_extra}" $build_mod $build_rem
build_sketches $HOME/arduino_ide $TRAVIS_BUILD_DIR/libraries "-l $HOME/Arduino/libraries ${build_extra}" $build_mod $build_rem
build_sketches $HOME/arduino_ide $GITHUB_WORKSPACE/libraries "-l $HOME/Arduino/libraries ${build_extra}" $build_mod $build_rem
# Generate size report
cat size.log
@@ -253,11 +253,11 @@ function build_sketches_with_arduino()
set -e
if [ -z "$TRAVIS_BUILD_DIR" ]; then
echo "TRAVIS_BUILD_DIR is not set, trying to guess:"
if [ -z "$GITHUB_WORKSPACE" ]; then
echo "GITHUB_WORKSPACE is not set, trying to guess:"
pushd $(dirname $0)/../ > /dev/null
TRAVIS_BUILD_DIR=$PWD
GITHUB_WORKSPACE=$PWD
popd > /dev/null
echo "TRAVIS_BUILD_DIR=$TRAVIS_BUILD_DIR"
echo "GITHUB_WORKSPACE=$GITHUB_WORKSPACE"
fi
+1 -1
View File
@@ -2,7 +2,7 @@
cache_dir=$(mktemp -d)
source "$TRAVIS_BUILD_DIR"/tests/common.sh
source "$GITHUB_WORKSPACE"/tests/common.sh
if [ "$BUILD_PARITY" = "even" ]; then
mod=2
+1 -1
View File
@@ -84,7 +84,7 @@ git submodule update --init
(cd pico-extras && git submodule update --init)
export HOME="${TMPCI}"
export TRAVIS_BUILD_DIR="${TMPCI}"
export GITHUB_WORKSPACE="${TMPCI}"
export BUILD_TYPE="$BUILD_TYPE"
if [ "$BUILD_TYPE" = "build" ]; then
+1 -1
View File
@@ -36,7 +36,7 @@ target_compile_definitions(common INTERFACE
target_compile_options(common INTERFACE
-fno-exceptions
-Os
-Og
$<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>
)
+2
View File
@@ -38,6 +38,8 @@ extern unsigned long __lwip_rand(void);
#define TCP_MSS 1460
#define TCP_SND_BUF (8 * TCP_MSS)
#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1)) / (TCP_MSS))
#define TCP_LISTEN_BACKLOG 1
#define TCP_DEFAULT_LISTEN_BACKLOG 2
#define LWIP_NETIF_STATUS_CALLBACK 1
#define LWIP_NETIF_LINK_CALLBACK 1
#define LWIP_NETIF_HOSTNAME 1
+1 -1
View File
@@ -134,7 +134,7 @@ def BuildIPBTStack(name):
def BuildUploadMethodMenu(name):
for a, b, c, d, e, f in [ ["default", "Default (UF2)", 256, "picoprobe_cmsis_dap.tcl", "uf2conv", "uf2conv-network"],
["picotool", "Picotool", 256, "picoprobe.tcl", "picotool", None],
["picoprobe_cmsis_dap", "Picoprobe (CMSIS-DAP)", 256, "picoprobe_cmsis_dap.tcl", "picoprobe_cmsis_dap", None],
["picoprobe_cmsis_dap", "Picoprobe/Debugprobe (CMSIS-DAP)", 256, "picoprobe_cmsis_dap.tcl", "picoprobe_cmsis_dap", None],
["picodebug", "Pico-Debug", 240, "picodebug.tcl", "picodebug", None] ]:
print("%s.menu.uploadmethod.%s=%s" % (name, a, b))
print("%s.menu.uploadmethod.%s.build.ram_length=%dk" % (name, a, c))