* Move to Arduino API 10501
Track upstream Arduino API headers
* IPAddress V4/V6 compatiblity restored
* Fix WiFiUDP includes
* String differences in example
* HardwareSerial using exported
* Add PIO-based SoftwareSPI enabling SPI on any pins
The Raspberry Pi team has a working PIO-based SPI interface. Wrap it
to work like a hardware SPI interface, allowing SPI on any pin
combination.
Tested reading and writing an SD card using unmodified SD library.
* Add W5500 example
Good for testing, shows non-contiguous pin outs.
* Added buffer read to `AudioBufferManager` and `I2S`. Example and documentation included.
* Update type of words to unsigned in example.
* Improve buffered loopback example.
* Remove const from read buffer.
* Don't set SDFAT_FILE_TYPE, default is OK
Fixes#2772
No need to set SDFAT_FILE_TYPE=3 as that is the defaulr value with upstream
SdFat. Remove it from platform.txt and platform.io build.
* Codespell got all techy
* Replace ESP8266SdFat w/SdFat 2.3.0, add SDIO and ExFAT support
Remove ESP8266SdFat fork and replaces with upstream SdFat to simplify
maintenance.
This 2.3.0 version adds SDIO support and enables exFAT support.
Also upgraded FAT filename support to 256 chars, identical to LittleFS.
* Add SDIO support to SD and SDFS, documentation, and examples
* Update SD examples to all support SPI0, SPI1, or SDIO
When multiple inputs were active, the frequency was being scaled two
times resulting in incorrect sampling speed. Correct to only scale
the calculation and not the stored value (which is used in `begin`).
Fixes#2754
The memcpy-version of the ABM::write updated the destination and count
but neglected to move the source forward. If a block write crossed a
frame boundary then the 2nd frame would repeat the data from the first
half of the buffer.
Fix by incrementing the source pointer by the same amount as was written.
Calculating the DMA clock divider for PWMAudio can take a very long time
because there are 65K floating point divisions required. But most audio
will be one of a dozen sample rates, so it is possible to precalculate
the rates on the host and use a small lookup table to avoid any math at
all. Removes occasional scratching in PWMAudio when the BackgroundAudio
library changes sample rates.
Optimize AudioRequestBuffer writing when large blocks are available (i.e.
I2S writes of full MP3 or AAC frames in BackgroundAudio). Update I2S to use
the new call. Reduces 1152 calls to arb::write() to a single call/return
and optimized memcpy in that case.
The audio output objects all have the same general necessary configuration
calls. Abstract them out to a generic AudioOutputBase interface class that
they will inherit from. Simplifies letting applications use different
output channels.
Should be backwards compatible with existing code.
Semihosting is handy for debugging, so allow the core to use `SerialSemi` as the
::printf port. Add menu item to the IDE to allow selection.
Add RISC-V implementation of semihost call
* Add MDNS.addServiceTxt() to SimpleMDNS
Fixes#2678
A simple mapping allows for basic service text addition even when using
SimpleMDNS and ArduinoOTA.
* Protection against duplicate services addition
Adds a menu item to enable onboard profiling. This requires significant
RAM and really only makes sense on devices with PSRAM to store the state.
When the menu item is selected, allocates RAM and tracks function calls and
periodically samples the PC to generate a histogram of application usage.
The onboard gmon.out file can be written over Semihosting or
some other way to transfer to a PC for analysis.
Adds a profiling example with command lines.
Enable ARM-only semihosting mode. This mode allows applications on the
Pico to write to the OpenOCD console and read and write files on the
host system (i.e. debugging dump information, etc.)
It is not very fast because of the way it uses breakpoints on the Pico
to communicate, but it is useful in cases when you want to get a single
file off of the Pico while debugging.
Note that this **requires** a connected OpenOCD and GDB or else the
semihosting will cause a system panic.
Using pico-sdk develop branch, add in support for CYW43-based
WiFi/BT/BLE boards on the RP2350 such as the
SparkFun Thing Plus RP2350 or the Pimoroni Pico Plus 2W.
Fixes#2608
Rolls in dynamic SPI divider #2600
* Support LED digitalWrite on RP2350+CYW
Also move "special GPIO" to 64 since the Pimoroni Pico 2W uses the
RP2350B with 48 GPIOs.
* Enable CYW43_PIN_WL_DYNAMIC in IDE and P.IO
Allows calling `cyw43_set_pins_wl(cyw43_pin_array);` to redefine the
CYW43 hookup in the variant initialization.
A flush() on a packet that's already been sent should be a no-op, not
send a 0-byte UDP packet. Track when an outgoing packet is dirty and
only endPacket()/transmit it when so.
Fixes#2617
* Enable LWIP IGMP, MDNS internal server
* Enable MDNS lookup from LWIP DNS
* Add SimpleMDNS responder, small code and no malloc
* Ensure we copy out lwipopts in make-libpico
Adds a small wrapper around the LWIP-provided MDNS responder application.
Drop-in replacement in many basic cases for LEAmDNS.
For FreeRTOS it is important to not allocate memory on an LWIP callback.
LEAmDNS needs to do this to create response objects, leading to crashes.
Increase LWIP timers by bumping the LWIP_ARP number (as done before).
Replace ArduinoOTA LEAmDNS with SimpleMDNS and update a
HTTPUpdateServer example.
Remove old pre-release BTStack files from sdkoverrides (were needed for
compound BLE devices, but the latest BTStack now incorporates these
changes).
Fixes#2547
* Adds RISC-V compilation option to the IDE and Platform.IO.
* Build RP2350-RISCV libpico, libbearssl
* Fix RP2350 BearSSL library (was copied from RP2040, now built for M33)
* New GCC 14.2 toolchain is required (12.4 RISC-V support is borked)
* Newlib locking fixed prototypes
* Manually force all runtime init code into RP2350 binaries
* Add RISC-V to CI
* Remove RP2350 BOOT2.S files, binaries (not used)
* Clean up minor GCC 14.x warnings
* Add RP2350-RISCV OTA build, link
* Add RISC-V FreeRTOS files (configuration still not running, but builds)
* Add basic documentation