0.24.0
Pre-release
Pre-release
Added
- The new
QNETHERNET_MEMORY_IN_RAM1
configuration macro indicates that lwIP-declared memory should go into RAM1. - New
EthernetFrameClass::receiveQueueSize()
function. - New
EthernetUDP::receiveQueueSize()
andsetReceiveQueueSize(size)
functions. - Enabled external definition of macros
LWIP_NETIF_LOOPBACK
andLWIP_LOOPBACK_MAX_PBUFS
. - Sprinkled some more
Ethernet.loop()
calls where pcb and pbuf allocations fail. - Added
EthernetClass::setLinkState(flag)
for manually setting the link state when a link is needed, such as when using the loopback feature. Network operations will usually fail unless there's a link. - Added more unit tests:
- test_ethernet:
- test_setLinkState
- test_udp_receive_queueing
- test_udp_receive_timestamp
- test_udp_state
- test_client_connectNoWait
- test_client_timeout
- test_client_state
- test_server_state
- test_other_state
- test_entropy:
- test_randomDevice
- test_ethernet:
- Added commented-out
LWIP_STATS_LARGE
option to lwipopts.h.
Changed
- Changed memory declaration macro,
LWIP_DECLARE_MEMORY_ALIGNED()
, to use theMEM_ALIGNMENT
value. - Now calling
shrink_to_fit()
on the UDP and Ethernet frame queues when changing their size. - Add 6 to
MEMP_NUM_SYS_TIMEOUT
option for mDNS instead of 5. Timeout exhaustion was still observed with 5. - There's now a single lwip_driver.h header for interfacing with the stack.
- Changed all
EthernetClass::begin(mac, ...)
functions to be consistent. If the MAC address is NULL then the MAC will be set to the internal one. Also, if starting Ethernet fails, the MAC address will not be changed. - Improved Ethernet tests to do proper object destruction when tests fail. The Unity test framework makes use of longjmp for failing tests, and that doesn't work well with object destructors.
- Unit test updates.
- Made single-argument
EthernetClass
andEthernetClient
constructors explicit.
Fixed
- Now using the correct name when adding an mDNS service.
- Pre-reserving memory for raw frames and UDP packets prematurely exhausts the heap when a larger number of them are reserved in the queue. These buffers are no longer reserved; they only grow appropriately when data comes in.
- Fixed closing
EthernetClient
s to remove the connection state if not already connected. Restarting anEthernetClient
via one of theconnectXXX()
functions callsclose()
first. If there was no connection, then closing never removed the internal connection object, causing a leak. - Fixed
Ethernet.loop()
to also poll the netif if loopback is enabled. This allows loopback to work. EthernetServer::end()
now sets the port to -1.