While I don't see it in RFC 7230, some web services seem to deliver an
explicit t-e header even with the default identity mapping. If seen,
let it pass.
Found & fixed by M. Guenther
* Rewrite HTTPClient chunked transfer-encoding
Fixes#3029
The chunked decoder seems to have had some race conditions resulting in
lost data.
The HTTPClient::getStreamPtr returned the raw WiFiClient which included
all of the chunked block size markers, requiring the user to manually
parse the chunked encoding.
Remove the existing chunked handling, add a HTTPStream as a WiFiClient
subclass. The HTTPClient will return this HTTPStream which will always
properly cut out chunk markers when present (and pass things raw for
non-encoded streams). Use this new HTTPStream class to replace the
existing handling in HTTPClient
Update the fingerprint in the StreamHTTPSClient example because their
cert was updated.
* Astyle
* Add block write passthru
* Add other WiFiClient passthru calls
BT SPP doesn't have backoff and we can receive long
messages. If there's not enough memory to store them
then they will be truncated.
Increase the default space to 1K to help avoid this issue.
Related to #2991, the ADCInput bufferWords needs to be a size that always
has the 1st ADC sample at offset 0:0. For 1 and 2 inputs that's guaranteed.
For 3 inputs we need a multiple of 3 words to ensure things always align
in the case of overflow. For 4 inputs, a multiple of 2 words is needed.
Moves to just released GCC 14.3
Moves to full-fat printf/scanf because Newlib no longer supports all the
calls libstdc++ requires with the older, smaller, nano-formatted-io option.
Moves to latest SDK develop branch with important float acceleration fixes
for the RP2350, among other updates.
Moves to latest pioasm, picotool develop branches
* SDK was refactored, update the includes
* Rebuild PicoSDK and BearSSL libs
* Update certs in BSSL validation example
* Don't spell check the certs!
* Updated tools with full fat++ newlib printf/scanf
When a link comes up, we were only sending a DHCP request if the existing
netif's ipaddress was 0. When a DHCP lease is acquired at first that IP
is changed to the given address, and if we do another ::begin we wouldn't
dhcp_start to send a new request and use the old one (until its lease
expired).
In the case of network changing (i.e. WiFiMulti on different nets or
moving an Ethernet cable to another router) that old address would not
be valid.
Track if an IP address has been manually set and use that to determine
if DHCP needs to be re-requested instead of looking at the old netif's
ipaddress.
Fixes#2974
Fixes#2935
The PICO_2350A patch flipped the logic of the ADCInput bitmask calcs
causing the 2040 and 2350A to use bitmasks for the 2350B (i.e. wrong
GPIOs) and vice versa.
* Add PIO.h header verification to CI
Ensure all PIO .pio.h headers match the .pio sources in the tree
* Install all tools for Style check
* Clean up mismatched PIO headers
No functional changes, but the PDM pdm.pio file did not init a data pin
while the pdm.pio.h (the one actually used in the core) did. Correct to
match.
* No need for submodules in the style check
* Convert to SDK RP2350A/B determination
Fixes#2878
The SDK uses `defined(PICO_RP2350) && !PICO_RP2350A` to indicate an RP2350B
chip, not the define PICO_RP2350B.
Match the SDK's usage by converting from `defined(PICO_RP2350B)` to
`defined(PICO_RP2350) && !PICO_RP2350A` and update the chip variants
accordingly.
* Need to explicitly override PICO_RP2350A for all
The *SDK*'s board definition file hardcodes a PICO_RP2350A value for
all boards, but we use the same board file for both A and B variants.
Override the SDK board definition in the variant definition file.
* Generic RP2350 needs 2-stage PICO_RP2350A setting
Also ensure SDK board definition included before pins_arduino.h for
clearing up redefinition errors.
* Factor out undef PICO_RP2350A
* Update Arduino.h
* Initial commit.
* Works with AK4619 in TDM128 I2S compatibility mode set to rising BCLK.
* Works with I2S compat mode with BCLK mode set to 0 on AK4619.
My application is designed to generate HSTX data on core0 in interrupts,
but also uses hardware SPI for SD card access.
It turns out that the amount of time spent in maskInterrupts/
unmaskInterrupts, even with an empty _usingIRQs, is too long.
Add a quick check and avoid touching the interrupt disable flag if
there's not actually any GPIO interrupt to (un)mask.
* 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.