I just released v0.28.0. Here's the Changelog:
Highlights:
* DiffServ field support
* Address-changed callback now called for every change
*
* Fixed mDNS responses
Link: https://github.com/ssilverman/QNEthernet/releases/tag/v0.28.0
Markdown (GitHub flavored):
## [0.28.0]
### Added
* Added raw frame loopback support and a `QNETHERNET_ENABLE_RAW_FRAME_LOOPBACK`
macro to enable.
* Added a fourth step to the _MbedTLSDemo_ example instructions: modify
the config.
* New `EthernetFrameClass` functions: `destinationMAC()`, `sourceMAC()`,
`etherTypeOrLength()`, and `payload()`.
* Consolidated all the hardware abstraction layer (HAL) functions into one
place: `qnethernet_hal.cpp`.
* New `NullPrint` and `PrintDecorator` utility classes in the
`qindesign::network::util` namespace.
* Added `driver_is_link_state_detectable()` function to the driver. This is for
detecting whether the hardware is able to read the link state.
* Added `EthernetClass::isLinkStateDetectable()` to detect whether the driver is
capable of detecting link state.
* Added `setOutgoingDiffServ(ds)` and `outgoingDiffServ()` functions for
modifying and accessing the differentiated services (DiffServ) field,
respectively, in the outgoing IP header, to `EthernetClient`
and `EthernetUDP`.
* Added `EthernetUDP::receivedDiffServ()` for retrieving the DiffServ value of
the last received packet.
* Added `EthernetFrameClass::clear()` for clearing the outgoing and
incoming buffers.
### Changed
* Updated the Mbed TLS version in the README and comments to 2.28.8
(was 2.28.6).
* Updated `mbedtls_hardware_poll()` in _MbedTLSDemo_ example for
other platforms.
* Renamed `QNETHERNET_ENABLE_CUSTOM_WRITE` to `QNETHERNET_CUSTOM_WRITE`.
* Improved the _PixelPusherServer_ example.
* The address-changed callback is now called for independent IP address,
netmask, and gateway changes.
* Improved link function documentation for `linkStatus()`, `linkState()`,
and `isLinkStateDetectable()`.
* Updated `EthernetClient::setNoDelay(flag)` to return whether successful.
* Add another 2 to `MEMP_NUM_SYS_TIMEOUT` option for mDNS, for a total of an
additional 8. Timeout exhaustion was still observed with 6. Why 8 and not 7:
* https://lists.nongnu.org/archive/html/lwip-users/2024-05/msg00000.html
* https://savannah.nongnu.org/patch/?9523#comment18
* Updated `EthernetClient::connect()` to return a Boolean value. (The function
signatures don't change; they still return an `int`.) This matches the new
definition at
[Ethernet - client.connect()](https://www.arduino.cc/reference/en/libraries/ethernet/client.connect/).
* Changed `EthernetClient::connectNoWait()` return types to `bool`.
### Fixed
* Improved marking of unused parameters.
* Fixed up use of `__has_include()`, per:
[__has_include (The C Preprocessor)](https://gcc.gnu.org/onlinedocs/cpp/_005f_005fhas_005finclude.html)
* In mDNS, ensure there's at least an empty TXT record, otherwise the SRV record
doesn't appear.
* Make the alternative `yield()` implementation `extern "C"`.
* Fixed `EthernetUDP` data copy for zero-length outgoing packets. `pbuf_take()`
considers NULL data an error, so only copy the data if the packet's size is
not zero.
Highlights:
* DiffServ field support
* Address-changed callback now called for every change
*
EthernetClient::connect()
now returns a Boolean value (but still returns an int
type), to match the new Arduino doc change* Fixed mDNS responses
Link: https://github.com/ssilverman/QNEthernet/releases/tag/v0.28.0