Skip to content

0.24.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@ssilverman ssilverman released this 07 Aug 03:54
· 449 commits to master since this 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() and setReceiveQueueSize(size) functions.
  • Enabled external definition of macros LWIP_NETIF_LOOPBACK and LWIP_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
  • Added commented-out LWIP_STATS_LARGE option to lwipopts.h.

Changed

  • Changed memory declaration macro, LWIP_DECLARE_MEMORY_ALIGNED(), to use the MEM_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 and EthernetClient 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 EthernetClients to remove the connection state if not already connected. Restarting an EthernetClient via one of the connectXXX() functions calls close() 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.