NuttX-7.27 Release Notes

The 127th release of NuttX, Version 7.27, was made on November 14, 2018, and is available for download from the Bitbucket.org website. Note that release consists of two tarballs: nuttx-7.27.tar.gz and apps-7.27.tar.gz. These are available from:

https://bitbucket.org/nuttx/nuttx/downloads
https://bitbucket.org/nuttx/apps/downloads

Both may be needed (see the top-level nuttx/README.txt file for build information).

Additional new features and extended functionality:

* Core OS:

  - Assertions:  Add 'BOARD_ASSERT_RESET_VALUE' in config/Kconfig and
    replace reboot status '0' to 'CONFIG_BOARD_ASSERT_RESET_VALUE'.  From
    Gregory Nutt.
  - Assertions:  up_registerdump capture the general register if not yet
    saved and up_saveusercontext is implemented, the register dump is very
    useful to find the cause of failure.  From Xiang Xiao.
  - Assertions:  up_stackdump() dump the full stack if stack overflow the
    stack info is very useful to find the backtrace  From Xiang Xiao.
  - binfmt/ and libs/libc:  Make exepath_*() more common:  Move
    exepath_*() related code to libc/misc, rename exepath_ to envpath_,
    and rename BINFMT_EXEPATH to LIB_ENVPATH.  From nchao.
  - CLOCK:  Support CLOCK_MONOTONIC in clock_getres.c.  From Xiang Xiao.
  - Clock Timekeeping:  Use clock_basetime() to initialize
    g_clock_wall_time to get the best initial RTC value and initialize
    g_clock_last_counter too since the hardware may not start counting
    from zero.  From Xiang Xiao.
  - exit():  Add SCHED_EXIT_KILL_CHILDREN option to kill all child threads
    when the main thread of a task exits.  From nchao.
  - IOBs:  Add an IOB notifier that will notify any registered threads
    that want to known when an IOB has been freed.  This is basically just
    a wrapper around the generic notifier.  Includes a divider that can be
    used to reduce the rate of IOB notifications.  From Gregory Nutt.
  - Memory Manager:  In mm_free(), add DEBUGASSERT()'s to catch memory
    corruption early.  From Petteri Aimonen.
  - Memory Manager:  Add debug option CONFG_MM_FILL_ALLOCATIONS to fill
    all mallocs() with recognizable value.  From Petteri Aimonen.
  - sched/signal and syscall/:  Add support for pselect() and ppoll()
    functions  From dongjianli.
  - Task Groups:  group_foreachchild() now iterates in reverse order since
    the callback (e.g. group_killchildren) may remove the tcb from list.
    From zhangyuan7.
  - WDOG Timer:  Improve accuracy of wd_gettime() in tickless mode  From
    ligd.
  - Work Queues:  Add a generic notification facility that runs on a work
    queue.  The notication facility can notify a group of subscribers to
    an event via callbacks.  This API is for use within the OS only.  From
    Gregory Nutt.

* File Systems/Block and MTD Drivers

  - FAT:  Add CONFIG_FAT_LFN_ALIAS_HASH to speed up creating long
    filenames.  Long filenames on FAT file systems have associated 8.3
    character alias short filenames. The traditional form of these is
    FILENA~1.EXT with a running count of the number of similar names.
    However creating this unique count can take several seconds if there
    are many similarly named files in the directory. Enabling
    FAT_LFN_ALIAS_HASH uses an alternative format of FI0123~1.TXT where
    the four digits are a hash of the original filename. This method is
    similar to what is used by Windows 2000 and later.  From Petteri
    Aimonen.
  - FAT: Add CONFIG_FAT_LFN_ALIAS_TRAILCHARS alternative format for 8.3
    filenames.  Traditional format for long filename 8.3 aliases takes
    first 6  characters of long filename. If this option is set to N > 0,
    NuttX will instead take first 6-N and last N characters to form  the
    short name. This is useful for filenames like "datafile12.txt"  where
    the first characters would always remain the same.  From Petteri
    Aimonen.
  - FAT: if block driver wait seems to be a long one, give time for other
    threads to run.  From Petteri Aimonen.
  - file_open():  Add file_open() implementation with some fully-function,
    interim, placeholder logic.  Change occurrences of open() followed by
    file_detach() in the OS to file_open().  From Gregory Nutt.
  - MX25LF25635F:  Add support to Macronix MX25LF25635F serial NOR flash
    From David Sidrane.
  - nx_open():  Add nx_open() which is the same as open() except that it
    does not create a cancellation point nor does it modify the errno
    variable.  Change most other, non-controversial calls to open() to
    nx_open().  From Gregory Nutt.
  - file_ioctl():  Replace calls to ioctl() in the OS to file_ioctl().
    From Gregory Nutt.
  - mount:  Add mount() support for file systems that require  MTD drivers
    (vs. block drivers).  From Gregory Nutt.
  - mount:  Add support for mounting a file system with either a block or
    an MTD driver.  From Xiang Xiao.
  - MTD FTL:  Support BIOC_FLUSH ioctl  From Xiang Xiao.
  - MTD FTL:  Make READAHEAD and WRITEBUFFER work independently of each
    other.  There have cases we use writebuffer but not readbuffer, so the
    write buffer must be flushed before read.  Let rwb driver do it.  From
    zhuyanlin.
  - MTD FTL:  Allocate eblock only when it's really needed  From Xiang Xiao.
  - MTD FTL:  Add support support unlink operation to avoid the memory
    leak.  From Xiang Xiao.
  - MTD Partition: Add register_mtdpartition() for MTD partition  From
    Xiang Xiao.
  - MTD Partition:  Remove the hard code partition name length From Xiang
    Xiao.
  - MTD Proxy:  Make MTD device accessible via a character driver proxy
    like block devices  From Xiang Xiao.
  - ProcFS:  Change output of the ProcFS 'env' file so that it looks more
    like output from the 'env' command.  From Gregory Nutt.
  - ProcFS:  Add support to provide MLD statistics at /proc/net/mld.  From
    Gregory Nutt.
  - ProcFS:  Remove MTD ProcFS and mtd_procfsoperations() since we can now
    get the same information from inode  From Xiang Xiao.
  - ProcFS:  Add /proc/version support to get version info  From iuhaitao.
  - ProcFS:  Add support for named MTD drivers in the pseudo file system.
    This will, eventually, allow us to mount file systems that need MTD
    drivers without having to fake an intervening block driver.
  - R/W Buffer:  Don't queue work to flush write buffer if
    CONFIG_DRVR_WRDELAY == 0  From Xiang Xiao.
  - R/W Buffer: Improve the rwb_read/write overlap performance  From
    zhuyanlin.
  - SIM HOSTFS:  Support S_IFSOCK, DT_LNK, O_DIRECT and O_SYNC From Xiang
    Xiao.
  - SPIFFS:  Brings in a NuttX port of version 0.3.7 of Peter Anderson's
    SPIFFS flash file system into NuttX.  From Gregory Nutt.

* Networking/Network Drivers:

  - Network Configuration  Add new configuration CONFIG_NET_MCASTGROUP.
    This option is selected automatically if either CONFIG_NET_IGMP or
    CONFIG_NET_MLD are selected.  Most conditional logic based on
    CONFIG_NET_IGMP replaced with conditioning on CONFIG_NET_MCASTGROUP.
    From Gregory Nutt.
  - Network Device:  Add notification logic for the case where the network
    goes down.  From Gregory Nutt.
  - Network Device:  Rename netdev_dev_lladdrsize() to netdev_lladdrsize()
    and move the prototype to include/nuttx/nex/netdev.h, giving is global
    scope within the OS.  From Xiang Xiao.
  - ARP:  Redesign ARP table aging to simplify the net initialization
    From Xiang Xiao.
  - ARP:  Check ifname match before sending packet.  From Xiang Xiao.
  - ARP and ICMPv6:  Double the delay time on each iteration for ARP/ICMP
    to fight work jitter better.  From Xiang Xiao.
  - ICMP/ICMPv6:  Add NET_ICMP[v6]_NO_STACK for usrsock case  From Xiang
    Xiao.
  - ICMPv6:  Encapsulate the link scope address generation into
    icmpv6_linkipaddr()  From Xiang Xiao.
  - ICMPv6:  Remove the coupling between ICMPv6 and Ethernet by moving all
    Ethernet stuff to neighbor_ethernet_out.c and make the mac address as
    first field.  From Xiang Xiao.
  - ICMPv6 MLD:  Implement Multicast Listener Discovery (MLD) protocol based
    on RFC 2710 and RFC 3810.  From Gregory Nutt.
  - ICMPv6 MLD:  Implement MLDv1 compatibility mode.  From Gregory Nutt.
  - ICMPv6 MLD:  Implement 'Other Querier Present Timer'.  This timer is
    used to revert to Querier mode if there is no other querier on the
    network.  From Gregory Nutt.
  - IGMP:  Backport some MLD design improvements/fixes.  From Gregory Nutt.
  - IPv4 setsockopt(): Add implementation for all IPv4 socket options that
    have implemented IOCTL command counterparts.  From Gregory Nutt.
  - IPv4/6 Socket Options:  Add framework to support IPv4 and IPv6
    protocol socket options (i.e., SOL_IP and SOL_IP6).  Handling of these
    socket options was a necessary step on the way to ICMPv6 MLD support.
    From Gregory Nutt.
  - ICMPv6 Autoconfiguration:  Don't take the network device down when
    reconfiguring only the IP address from within ICMPv6 logic. 
    Recommended by Xiang Xiao in order to avoid the long delays of
    bringing some networks back up.   Normally it is required that the
    network be in the "down" state when re-configuring the network
    interface.  This is thought not to be a necessary here because:  (1)
    The ICMPv6 logic here runs with the network locked so there can be no
    outgoing packets with bad source IP addresses from any asynchronous
    network activity using the device being reconfigured. And (2) incoming
    packets depend only upon the MAC filtering.  Network drivers do not
    use the IP address; they filter incoming packets using only the MAC
    address which is not being changed here.  From Gregory Nutt.
  - IPv6 Input:  Add logic to skip over the variable number of IPv6
    extension headers that may be present between the IPv6 header and the
    transport layer header.  The extension headers are simply ignored.
    This is necessary because with MLD, certain incoming messages may
    have, at a minimum, a Router Alert Hop-by-hop extension header.
    Additional changes to ICMPv6, TCP, and UDP input to handle the offset
    protocol headers.  From Gregory Nutt.
  - IPv6 Neighbor: Simplify the neighbor table aging process  From Xiang
    Xiao.
  - IPv6 Neighbor:  Simplify neighbor_dumpentry() implementation  From
    Xiang Xiao.
  - IPv6 Neighbor:  neighbor_lookup() checks if the target IP belongs to
    one of the local network devices.  From Xiang Xiao.
  - IPv6 Neighbor: Support neighbor_out() for multiple link layer at the
    same time  From Xiang Xiao.
  - IPv6 setsockopt():  Implement the IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
    socket options. From Gregory Nutt.
  - TCP:  Extend the TCP notification logic logic so that it will report
    loss of connection events.  From Gregory Nutt.
  - SLIP:  Add IPv6 support and fix minor issue  From Xiang Xiao.
  - TCP:  Add TCP poll() logic to receive notifications when IOBs are
    freed.  From Gregory Nutt.
  - TCP:  In TCP backlog, add SOMAXCONN definition and implementation per
    OpenGroup.org.  From zhangyuan7.
  - TCP/UDP:  Extend send()/sendto() logic it also requires that at least
    one IOB is also available to be able to send.  From Gregory Nutt.
  - TCP/UDP:  Add notification logic when TCP or UDP read-ahead data is
    buffered.  From Gregory Nutt.
  - TUN:  Call ipv[4|6]_input dynamically by checking packet header and
    remove the code duplication  From Xiang Xiao.

* Wireless/Wireless Drivers:

  - Broadcom IEEE 802.11:  Add capability for Broadcom chips to get
    firmware and CLM data from a mounted file system vs. in-memory data
    structures.  From Ramtin Amin.
  - XBee IEEE 802.15.4: Add support for setting/getting tx power.  From
    Anthony Merlino.

  * Other Common Device Drivers:

  - GPIO:  Support multiple registrations of GPIO signal events.  From
    Xiang Xiao.
  - INA226:  Add INA226 device driver.  From Daniel P. Carvalho.
  - MAX7219:  Support all digits presented in the MAX7219 datasheet.  From
    Alan Carvalho de Assis.
  - MLX90614:  Add support for the Infrared Thermometer MLX90614  From
    Alan Carvalho de Assis.
  - RTC Driver:  up_rtc_set_lowerhalf call clock_synchronize() for
    external RTC.  From Xiang Xiao.
  - SYSLOG:  Uncomment the g_syslog_channel->sc_flush call in
    syslog_flush().  From Xiang Xiao.
  - SYSLOG:  syslog_initialize initialize dev/syslog too and call syslog
    to add the prefix and timestamp.  From Xiang Xiao.
  - USB Composite and DFU drivers: Add support for Microsoft OS
    descriptors.  These Microsoft-only descriptors help in loading the
    correct driver on Windows.  They are especially helpful to give libusb
    access to a custom device without having to manually configure/install
    WinUSB driver. With this change DFU interface works automatically on
    Windows 10 with dfu-util 0.9 and libusb 1.0.22. On Windows 7 it still
    appears to need driver installation.  From Petteri Aimonen.
  - USB DFU Device: Add DFU Runtime driver for activating boot-loader
    through USB command.  From Petteri Aimonen.
  - USB RNDIS Device:  Account for CONFIG_NET_GUARDSIZE in allocation of
    packet buffer allocation:  Make USB device parameters configurable.
    From Sakari Kapanen.
  - USB RNDIS Composite Device:  Fix strid comparison. Add support for
    composite configuration.  From Petteri Aimonen.

* Microchip PIC32MX Boards;

- PCBLOGIC-PIC32MX:  Remove support for the PCB Logic PIC32MX board.  I do
  not find any references to PCB Logic on the web and I do not believe
  that this breakout board is available any longer.  From Gregory Nutt.

* NXP Freescale i.MX RT:

  - i.MXRT:  Added support for the i.MXRT 106x family.  From David Sidrane.

* NXP Freescale i.MX RT Drivers:

  - i.MXRT:  Add LPI2C driver.  From Ivan Ucherdzhiev.
  - i.MXRT LPSPI:  Add full support for the LPSPI in poll mode; includes a
    minor fix for LPI2C.
  - i.MXRT USDHC:  Initial commit of the i.MXRT SDHC driver working in PIO
    mode.  From Dave Marples.
  - i.MXRT USDHC:  Complete the interrupt driven USDHC1 functionality for
    the IMXRT EVKB.  Improve SD card handling in the DMA case.  From Dave
    Marples.

* NXP Freescale i.MX RT Boards:

  - IMXRT1060-EVK:  Add support for the IMXRT1060-EVK.  From David Sidrane.

* NXP LPC17xx Boards:

  - Olimex-LPC1766STK:  Add support to initialize a USB HID keyboard.  Add
    a configuration for testing the HID keyboard.  From Gregory Nutt.

* On Semi LPC23450 Drivers:

  - LC823450: MPU support for FLAT build  From Masayuki Ishikawa.

* STMicro STM32:

  - STM32:  Add support for STM32F303xD/E.  From Mateusz Szafoni.
  - STM32 L4:  Add initial support for STM32L412 and STM32L422 chips  From
    Juha Niskanen.

* STMicro STM32 Drivers:

  - STM32 ADC: Major refactor:  Use STM32 ADC IP core version and ADC
    available functions instead of chip family names in conditional
    compilation.  Replace family specific ADC headers with STM32 ADC IP
    core version headers.  Configurable sample time supported for all
    chips, not just L1.  Enable/disable interrupts supported for all
    chips, not just L1.  Add ADC resolution configuration.  From Mateusz
    Szafoni.
  - STM32 PWM: Improvements in STM32 PWM low level driver:  Support
    complementary outputs, dead-time configuration, output polarity and
    IDLE state configuration.  From Mateusz Szafoni.
  - STM32 PWM:  Break and lock configuration and some cosmetics  From
    Mateusz Szafoni.
  - STM32 SPI.  Enable separate DMA per SPI configuration  From Daniel Agar.
  - STM32 F7 FLASH:  Allow programming OTP blocks through progmem
    interface  From Jussi Kivilinna.
  - STM32 H7 I2C:  Add I2C support for STM32H7.  From raiden00pl.
  - STM32 H7 RCC:  Update RCC definitions, add SPI clock configuration and
    some fixes in RCC.  From raiden00pl.
  - STM32 H7 SPI:  Add basic SPI support for H7.  Enable SYSCFG clock in
    RCC.  From Mateusz Szafoni.

* STMicro STM32 Boards:

  - Nucleo-F302R8:  Add support for Nucleo-F302R8 board  From raiden00pl.
  - Nucleo-F302R8:  Add PWM support.  From Mateusz Szafoni.
  - Nucleo-F303ZE:  Add basic support for nucleo-f303ze.  From Mateusz
    Szafoni.
  - Nucleo-F303ZE:  Support for ADC and ADC example.  From Mateusz Szafoni.
  - Nucleo-L432KC:  Added support for AT45DB Serial Flash  From Daniel P.
    Carvalho.
  - Nucleo-L432KC:  Add support for the INA226.  From Daniel P. Carvalho.
  - Nucleo-H743ZI:  Add NRF24L01 support.  From Mateusz Szafoni.
  - Olimex-STM32-P407:  Add a HID keyboard configuration.  From Gregory
    Nutt.
  - STM32F4-Discovery:  Add MLX90614 support for the STM32F4-Discovery
    board  From Alan Carvalho de Assis.
  - STM32F429I-DISCO:  Add PWM support.  From Mateusz Szafoni.
  - STM32F429I-DISCO:  Support for ADC and ADC example.  From Mateusz
    Szafoni.

* MIPS32:

- MIPS32 Toolchain.defs:  Add toolchain flags for the pinguino toolchain
  under Linux.  From Ouss4.

* RISC-V:

  - RISC-V GAP:  This commit brings in support for the GAP8 architecture.
    The GAP8 is a 1+8-core DSP-like RISC-V MCU.  Also included is support
    for the Gapuino GAP8 evaluation board.  From hhuysqt.

* Other Tools:

  - tools/tesbuild.sh:  No longer installs and builds the NxWidgets
    libraries.  They are now a port of apps/.  From Gregory Nutt.

* Libraries/Header Files:

  - include/net and include/sys:  Align the constant values with values in
    the Linux kernel which makes targeting the usrsock server to Linux
    kernel easier.  From Xiang Xiao.
  - include/netdb.h  Add NO_ADDRESS definition  From zhangyuan7.
  - include/netinet/in.h:  Adds definitions for IPPROTO_IPV6 socket
    options to netinet/in.h.  Adds missing fields to sockaddr_in6.  Adds
    struct ipv6-mreq.  These changes all follow the opengroup standard for
    netinet/in.h  From Anthony Merlino.
  - include/netinet/in.h:  Add IPv4 SOL_IP socket options for symmetry
    with IPv6 definitions added in a previous commit.  Remove some
    duplicate types from sys/sockio.h.  From Gregory Nutt.
  - include/netinet/in.h:  Add other definitions required by
    OpenGroup.org.  From Gregory Nutt.
  - include/netinet/in.h:  Add Linux IP_PKTINFO and IPV6_PKTINFO
    definitions.
  - include/nuttx/net/ipv6ext.h:  Create header file with all of the
    definitions of IPv6 extension headers that I could find.  From Gregory
    Nutt.
  - include/nuttx/net/mld.h:  Add MLD header file based on RFC2710 and
    RFC3810.  From Gregory Nutt.
  - include/sys/socket.h:  With increased size of struct sockaddr_in6, the
    size of struct sockaddr_storage in include/sys/socket.h must also be
    increase so that it can contain the new, larger sockaddr_in6.  From
    Gregory Nutt.

  - libs/libc/misc:  Add implementation of CRC8-CCITT.  From Alan Carvalho
    de Assis.
  - libs/libc/modlib:  Add per-module library symbol table support.  From
    nchao.
  - libs/libc/net:  Add basic implementation for recvmsg() and sendmsg()
    per OpenGroup.org specification.  From ligd.
  - libs/libc/netdb:  A few improvements to getaddrinfo:  (1)  Use the
    protocol and socktype hints in returned address, (2) Ignore AI_PASSIVE
    argument if hostname is not NULL  From Anthony Merlino.
  - libs/libc/netdb:  Make DNS receive timeout configurable.  From ligd.
  - libs/libc/stdio:  Eliminate recursive in conversion functions of
    lib_vsprintf().  From Xiang Xiao.
  - libs/libc/string:  Add some new functions defined in POSIX.1-2017:
    stpncpy(), strsignal(), psignal(), psiginfo().  From Gregory Nutt.
  - libs/libc/string:  Add memrchr() function  From Xiang Xiao.
  - libs/libc/string:  Make strerror() return the string "Success" for
    error = 0.  From Petteri Aimonen.

* Build System:

  - Makefile.unix/win:  Remove deletion of Eclipse project files from make
    distclean target.  From Gregory Nutt.
  - apps/Application.mk:  Fix some build issues.  (1) Unable to found
    target 'context' when CONFIG_NSH_BUILTIN_APPS disabled. (2) Unable to
    generate multiple programs.  From Chao An.
  - apps/Directory.mk:  Fix distclean targets.  Makefiles were not
    removing generated Kconfig files.  There was then no way to remove
    this Kconfig files without manually deleting them one at a time.  From
    Gregory Nutt.

* NSH: apps/nshlib:

  - apps/nshlib/, apps/examples/:  Update to show newer file system object types returned by stat().  From Gregory Nutt.
  - apps/nshlib:  Add support for the 'env' command.  From Gregory Nutt.
  - apps/nshlib:  Add support for NSH local variables if CONFIG_NSH_VARS are set.  These are like environment variables but are local to NSH.  The importance of this is that these variables are *not* inherited when NSH creates a new task.  The new command 'export' was added.  In this case, the NSH variable will be promoted to an environment variable and will then be inherited by any tasks executed by NSH.  From Gregory Nutt.
  - apps/nshlib:  If CONFIG_NSH_VARS=y, the NSH 'set' command with no argument will list all of the local NSH variables.  From Gregory Nutt.

* Examples/Tests: apps/examples:

  - apps/examples/gpio:  Align with GPIO driver update  From wangyanjiong.
  - apps/examples/ina226:  Added INA226 example  From Daniel P. Carvalho.
  - apps/examples/mld:  Add a test of MLD.  Provides a mechanism for some
    low-level bring-up of MLD.  From Gregory Nutt.
  - apps/examples/mlx90614:  Add mlx90614 test example  From Alan Carvalho
    de Assis.
  - apps/examples/mlx90614/:  Include support to change device address on
    mlx90614  From Alan Carvalho de Assis.
  - apps/examples/fstest: Adapt the existing fstest example for SPIFFS: 
    For SPIFFS, add garbage collection and file system integrity IOCTL
    calls. Call statfs() and show state of file system on each loop.  Add
    logic to dump logic content of SPIFFS.  Ignore EINTR errors while
    reading or writing.  Add configuration option to customize stack
    size.  Detect when the media is full and stop writing files.  Report
    total file size.  From Gregory Nutt.
  - apps/examples/tcpblaster:  Add an option to use poll() to pace input
    or output.  From Gregory Nutt.
  - apps/examples/tcpblaster:  Select CONFIG_LIBC_FLOATINGPOINT
    automatically.  Units in output are wrong:  Not Kbps bus Kb/Sec.  From
    Gregory Nutt.
  - apps/examples/udpblaster:  Add option to use poll() on output (only). 
    From Gregory Nutt.

* System Utilities: apps/system

  - apps/system/ping and apps/system/ping6:  Set optind to zero in the
    error case/.  Move all ping preparation work into icmp_ping.  Support
    -W <timeout> and -s <size> option.  Decouple the output from ping
    logic.  From Xiang Xiao.
  - apps/system/ping and pings and apps/netutils/ping:  Extract icmp ping
    and icmpv6 ping6 logic from system/ to C-callable library in
    netutils/.  From ligd.
  - apps/system/progmem:  Remove this utility.  It makes illegal direct
    calls into the OS.  From Gregory Nutt.

* Network Utilities: apps/netutils:

  - apps/netutils/netlib and apps/examples/igmp:  Adapt to use the
    corrected, semi-standard version of struct ip_msfilter.  From Gregory
    Nutt.
  - apps/netutils/chat and apps/examples/chat:  'constify' chat variables
    and parameters  From Xiang Xiao.

* Wireless Utilities: apps/wireless:

  - apps/wireless/ieee802154/i8sak: Properly shuts down event thread.
    From Anthony Merlino.
  - apps/wireless/ieee802154/i8sak:  Fixes i8sak name. Accidentally renamed
    to i8ask in recent changes  From Anthony Merlino.
  - apps/wireless/ieee802154/i8sak:  Adds support for getting/setting
    transmit power.  From Anthony Merlino.

* Graphic Utilities:  apps/graphics:

  - apps/graphics/NxWidgets:  Move the NxWidgets repository into the apps/
    repository.  Remove old apps/NxWidgets directory.  Move NxWidgets
    files into apps/graphics/NxWidgets. Integrate configuration/build
    system.  Fix file paths in file headers.  Remove some duplicate
    tools.  Add new NxWidgets Unit Test configuration and build logic.
    From Gregory Nutt.
  - apps/graphics/NxWidgets:  Add CNxString string + operator and
    ::format() function.  Add CNumericEdit option to include unit name
    after the value.  Make CNxWidget useWidgetStyle() public.  From
    Petteri Aimonen.
  - apps/graphics/NxWidgets:  Add CLabelGrid control for displaying text
    in grid format.  From Petteri Aimonen.

Bugfixes. Only the most critical bugfixes are listed here (see the ChangeLog for the complete list of bugfixes and for additional, more detailed bugfix information):

* Core OS:

  - Clock:  Remove g_monotonic_basetime and g_clock_monotonic_time since
    we don't need ensure monotonic time start from zero as state here:
    http://pubs.opengroup.org/onlinepubs/009696899/functions/clock_getres.html
    From Xiang Xiao.
  - Clock:  Don't call up_timer_gettime in clock_gettime() and
    clock_systimer() to ensure the return value from them consistent with
    clock_systimespec  From Xiang Xiao.
  - Clock Initialization:  clock_inittime() needs to be done with
    CONFIG_SCHED_TICKLESS and clock_initialize should skip
    clock_inittime() for external RTC case since the RTC isn't ready yet.
    From Xiang Xiao.
  - IOBs:  Work around some issues with the IOB throttle semaphore.  It
    has some odd behaviors that can cause assertions in sem_post().  Also,
    it seems to get outside of its range occasionally.  Need to REVISIT
    this.  From Gregory Nutt.
  - IOBs:  iob_navail() was returning the number of free IOB chain queue
    entries, not the number of free IOBs.  Completely misnamed.  From
    Gregory Nutt.
  - PM:  Use the start time of state btime to calculate thrcnt; remove the
    loop whose count may be very big after the long idle  From ligd.
  - PM Uninitialization:  Fix pm_domain_s.stime un-intialize caused time
    error.  From ligd.
  - sched_kfree() and sched_ufree():  This patch prevent heap corruption
    in a corner case where memory is freed while switching contexts.  This
    change forces all de-allocations via sched_kfree() and sched_ufree()
    to be delayed.  Eliminating the immediate de-allocation prevents the
    problem with the the re-entrant semaphore because the deallocation
    always occurs on the worker thread, never on the suspended task.  From
    EunBong Song.
  - sigsuspend():  sigsuspend() shouldn't eat the pending signal but
    dispatch all instead  From Xiang Xiao.
  - task_restart():  Was restarting tasks with all signals set in the
    sigprocmask set.  Should have restarted with the sigprocmask cleared.
    Noted by Jeongchan Kim  From Gregory Nutt.
  - unsetenv():  Fix and error in unsetenv() when un-setting the last of
    the environment variables.  From Gregory Nutt.
  - waitpid():  Remove a bad error check.  From Gregory Nutt.

* File System/Block and MTD Drivers:

  - FAT: Fix file data corruption in fat_truncate().  From Petteri Aimonen.
  - Partitions:  Try MTDIOC_GEOMETRY IOCTL before bops's geometry.
    From Xiang Xiao.
  - MTD Progmem:  Change up_progmem_npages() to up_progmem_neraseblocks().
    page is a unit for read/write operation.  eraseblock is a unit for
    erase operation.  up_progmem_npages() is a little bit confusing
    because it returns number of erase blocks in flash memory.  This patch
    changes up_progmem_npages to up_progmem_neraseblocks. 
    up_progmem_eraseblock erase a block. so it's better to return the
    erase block size than page size.  From EunBong Song.
  - R/W Buffer:  Fix a lock issue  From Xiang Xiao.
  - SmartFS:  Current sector should have a space for next entry size.  If
    not, we should move to next sector.  From EunBong Song.

* Networking/Network Drivers:

  - 6LoWPAN: Fixes bug in uncompress_addr handling of odd postfix.  This
    affected multicast compress/uncompress since it's the only logic that
    used an odd postfix. The odd byte needs to be handled first, not
    last.  From Anthony Merlino.
  - ARP and ICMPv6:  Don't call d_txavail directly since it may point to
    NULL  From Xiang Xiao.
  - ICMPv6:  icmpv6_neighbor() shouldn't use the out of scope
    variable(dripaddr)  From Xiang Xiao.
  - IPv6 input:  Fixes logic in ipv6_input to handle more than ff02::/16
    multicast addresses. Don't forward mcast packets if scope is not
    appropriate  From Anthony Merlino.
  - IPv6 Input:  Fix a logic error when the received IPv6 srcaddr is a
    multicast address.  Exiting logic only supported UDP multicast.  But
    MLD and certain other ICMPv6 packets also require acceptance of
    multicast packets.  From Gregory Nutt.
  - TCP:  In TPC recv window calculations, in order to receive data we
    must not only have IOBs available, but we must also have at least one
    IOB chain qentry available.  Otherwise, we will advertise that we an
    buffer a lot of data when, in fact, we cannot.  This is an
    experimental fix to a performance problem noted by Masayuki Ishikawa.
    From Gregory Nutt.
  - TCP:  Fix compiler error and warning when CONFIG_NET_SENDFILE=y  From
    Xiang Xiao.
  - TCP Input:  Fix recovery when ackseq > unackseq.  The comment near
    this line says "reset the number of outstanding, unacknowledged
    bytes".  However, the code actually resets the whole TCP connection.
    It was changed to the current form in commit f034d84ea1f with no
    explanation of the intent. Recover the line to what it was before that
    commit.  From Sakari Kapanen.
  - TCP Write Buffering:  Fix buffer release handling on failed buffer
    allocation.  Attempt to release write buffer on failed TCP write I/O
    buffer alloc and tryalloc failed to wrb->wb_iob assertion.  From Harri
    Luhtala
  - TCP/UDP:  In the POLLOUT poll logic, request an immediate Tx poll from
    the network device bound to the socket.  From Gregory Nutt.
  - UDP:  On a failure to find the destination device, fallback to
    netdev_default device if the device is not found, rather than
    arbitrary using the device at the head of the list of devices.  From
    Xiang Xiao.
  - USRSOCK:  Revert previous commit to re-allow combination of usrsock
    and NuttX TCP/IP stack.  For example, in case device has Ethernet and
    mobile connectivity and NuttX TCP/IP stack is used when configured to
    use Ethernet connection and usrsock when configured to use modem
    (modem TCP/IP stack through usrsock).  From Jussi Kivilinna.
  - USRSOCK accept():  Mark newconn ready before issue accept request to
    avoid the case that the request is discarded due to the socket being
    in the invalid state  From Xiang Xiao.

* Wireless/Wireless Drivers:

  - Broadcom 802.11 Driver:  There were two functions that have a address
    issue.  In bcmf_read_sbreg() and bcmf_write_sbreg(): 
    SBSDIO_SB_OFT_ADDR_MASK should be used before map address space.
    Noted by Shao Li in Bitbucket issue #126.  From Gregory Nutt.
  - Broadcom 802.11 Driver:  Remove incorrect OR condition.  Always true.
    Noted by Shao Li in Issue 127.  From Gregory Nutt.
  - NRF24L01:  Fix compilation errors.  From Mateusz Szafoni.

* Common Drivers:

  - ALARM Upper Half: Fix alarm ISR error when no CONFIG_SCHED_TICKLESS
    drivers/timers/arch_alarm.c: Use uint64_t to avoid alarm 32-bit
    overflow.  From ligd.
  - MAX11802: Fix compilation errors and allow setting PULL and SAMPLE
    registers.  From Petteri Aimonen.
  - S25FL1:  During a MTDIOC_GEOMETRY ioctl call, the driver was
    incorrectly reporting the blocksize to be the same as the erasesize.
    The blocksize should be 256 (the page size).  This patch fixes that,
    and now the SmartFS configration is working.  From Ken Pettit.
  - SYSLOG:  nx_syslog's return value should include the timestamp length 
    From Xiang Xiao.
  - SYSLOG:  syslog_putc() calls sc_force in idle task even if interrupt
    buffer enabled.  The following cases may hang randomly in the bring up
    phase: (1) boot up process and (2) suspend/resume process.  Either
    case runs in the idle task context, so it's difficult to debug the
    hang issue if these output go through the interrupt buffer.  From
    Xiang Xiao.
  - SYSLOG:  Ensure interrupt log doesn't interlace in normal log.  Don't
    call syslog_putc in syslog_default_write because syslog_putc will try
    to empty the interrupt buffer every time.  From Xiang Xiao.
  - UART 16550:  Fix UART flow control issue.  UART_MCR_RTS need be high
    even UART_MCR_AFCE is enabled  From zhangyuan7.
  - USB RNDIS Device:  Fix buffer overrun check in rndis.c.  The rndis
    driver has been working since 13 Nov 2017.  However, I finally found
    that it depends on network and buffer configurations.  If a receiving
    TCP packet is divided into smaller ones based on USB max packet size,
    this condition check works correctly.  From Masayuki Ishikawa.

* ARMv7-A:

  - ARMv7-A:  Replicate the same fix was previously committed for the
    ARMv7-R.  From Gregory Nutt.

* ARMv7-R:

  - ARMv7-R:  Fix error in cp15_flash_dcache.  Change mcrne to mcr for
    unconditional dcache.  From EunBong Song.

* ARMv7-M:

  - ARMv7-M Interrupts:  Correct all ARMv7-M architectures.  Interrupts
    were not be disabled correctly on power up.  Writing zero to the NVIC
    SET-ENABLE registers has no effect.  In order to disable interrupts,
    it is necessary to write all ones to the NVIC CLEAR-ENABLE register.
    Noted by David Sidrane.  From Gregory Nutt.

* Broadcom BCM2708 Drivers:

  - BCM2708 Serial:  Juha Niskanen's fix related to STM32
    CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in BCM2708.
    From Gregory Nutt.

* Intel x86:

  - Qemu i486:  Correct .bss, IDLE stack, heap organization.  From Gregory
    Nutt.

* NXP/Freescale LPC43xx Drivers:

  - LPC43 Ethernet:  Fix Ethernet TX_EN pin definitions.  TX_EN on LPC43xx
    can be routed via P0.1 and PC.4 in both MII and RMII mode.  Before,
    P0.1 was hard-coded for MII and PC.4 was hard-coded for RMII.  Also,
    the definitions used inconsistent naming (TXEN vs. TX_EN).  From Jakob
    Haufe.
  - LPC43 Serial:  Fix copy-paste error: g_usart1port->g_uart1port.  From
    Dave Marples.
  - LPC43 SDMMC:  Fix the LPC43 family SDMMC card access: Clocks were
    wrongly configured, way too fast because there is no primary divider
    on LPC4330, the LPC43_SDMMC_DELAY register was not being set, the
    LPC43_SDMMC_BLKSIZ and LPC43_SDMMC_BYTECNT registers had the wrong
    values.  From Dave Marples.
  - LPC43 SDMMC:  Corrected a problem in lpc43_dmasendsetup().  There was
    no linked DMA descriptor code on the send side.  The end result was
    stalls while sending multiple sectors.  This commit adds that in and
    the send code is working much better.  From Dave Marples.
  - LPC43 SDMMC:   With these changes the SDMMC card for LPC43 is now
    working properly:  Timing was dependent on CPU speed rather than
    absolute time, end of transfer handling was a bit mixed up.  It is
    possible for data to still be in the FIFO (i.e. not have reached the
    card) when a next write is requested, so we need to wait for that to
    complete.  Interrupt Status could be carried over from one transfer
    episode to the next, corrupting progress.  Multi-descriptor DMA
    writing simply wasn't implemented.  From Dave Marples.

* NXP/Freescale LPC43xx Boards:

  - Bambino-200E:  Correct calculation of SDMMC clock configuration.  The
    LPC43 has no SDMMC source clock divider.  Error noted by Dave
    Marples.  From Gregory Nutt.

* NXP/Freescale Kinetis:

  - Kinetis:  Remove all attempts to reprioritize interrupts. From Gregory
    Nutt.

* NXP/Freescale Kinetis Drivers:

  - Kinetis I2C:  I2C On failed reset re-initialization I2C and clocking.
    If a reset fails, we still must reinitializes the I2C block so that
    subsequent transfers will not cause a hard-fault due to the clock
    being off.  If that transfer fails it can try to reset again.  From
    David Sidrane.
  - Kinetis Serial:  Juha Niskanen's fix related to STM32
    CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in Kinetis.
    From Gregory Nutt.

* NXP i.MXRT Drivers:

  - i.MXRT Ethernet: The board would not come up if I ran NuttX from cold.
    I dumped the PHY registers to see what the differences were and the
    PHY was coming up in NANDTree mode. This is a mode for testing
    connectivity between the PHY and the MAC.  Switching this mode off in
    the PHY registers has fixed the problem.  From Dave Marples.
  - i.MXRT Ethernet:  Fix a race condition in setting up the Ethernet Tx
    transfer.  From Dave Marples.
  - i.MXRT Ethernet:  Corrections for the i.MXRT Ethernet: (1) Now the
    Ethernet is completely re-initialized when an error occurs by means of
    taking the interface down and back up but the PHY is _not_
    renegotiated for that case because that is very time consuming and an
    error in the Ethernet is no reflection on the state of the PHY
    anyway.  (2) Explicitly sets the expected PHY address to zero (this
    could be moved into the config rather than searching for it which
    takes ages, and it's zero anyway for this board (that's the broadcast
    address, and anything that cannot respond on that has multiple PHYs,
    so that would be a new board).  (3) Allows for the renegotiation of
    the PHY to be optional when a reset is needed. If a non-renegotiated
    reset doesn't result in good comms to the PHY then it'll automatically
    be escalated to a renegotiated one.  (4) Only performs a reset for
    errors that need it (the CRITICAL_ERROR define).  The list of errors
    that need reset are somewhat arbitrarily chosen based on my prejudices
    and might need to be revisited, but certainly the jabber errors don't
    need reset, the partial packet is thrown away by the layer above
    anyway.  (5) Re-loads the multicast table on reset.  (6) Adds a bit
    more logging into the imxrt Ethernet module.  From Dave Marples.
  - i.MXRT LPI2C:  Fixes 2 bugs in the for IMXRT1050: (1) I2C time out and
    did not send STOP condition when sending single byte, (2) I2C could
    not receive bytes after repeated start.  From Ivan Ucherdzhiev.
  - i.MXRT LPSRTC:  SVNC LPCR register bits 0 & 1 are NOT reserved and
    are, in fact, needed to enabled the SRTC.  Now the SRTC is working.
    From Ivan Ucherdzhiev.
  - LPC54 SDMMC:  Add support for and SDMMC errata.  It appears that now I
    can read the SD card successfully, but I get CRC errors when writing
    to the card.  From Gregory Nutt.
  - LPC54 SDMMC:  Ported Dave Marples fixes LPC43 SDMMC to the LPC54.
    From Gregory Nutt.
  - i.MXRT WDOG:  Typos in bit definitions, wdog registers are 16 bits,
    wdog update has to be within 255 clocks of unlock, define board
    clocking based on divisor and muxes.  From David Sidrane.

* NXP i.MXRT:

  - i.MXRT:  clockconfig bug fix:  Fixed logic that was not clearing bits
    as ~ was  missing in &= mask operations.  Use values from the board.h
    file so set the Mux that selects the clock sources.   Use board
    defined PODF values to select clock.  Only configure USDHC2 clocks
    when board defines clocks.  From David Sidrane.

* NXP i.MXRT Boards:

  - IMXRT1050-EVK:  Previous committed implemented SPI-based MMC/SD card
    support conditioned on CONFIG_MMCSD.  This interferes with the
    implementation of MMC/SD card support using the SDIO-based
    peripheral.  This commit renames that atypical support to *mmcsd_spi*
    and conditions using the SPI-based support on CONFIG_MMCSD_SPI which
    will then not interfere with the MMC/SD support that can be
    conditioned on CONFIG_MMCSD_SDIO.  From Gregory Nutt.

* On Semi LC823450 Boards:

  - LC823450:  Fix up_allocate_heap() in lc823450_allocateheap2.c.  For
    lc823450, heap area in flat build mode must start just after 
    _eronly.  Because bss/data area is allocated in lower address than
    text area in SRAM. See ld.scripts for details. Also, this change
    removes unused up_allocateheap.c  From Masayuki Ishikawa.

* Silicon Labs EFM32 Drivers:

  - EFM32 Serial:  Juha Niskanen's fix related to STM32
    CONFIG_SERIAL_OFLOWCONTROL also applies to cloned logic in EFM32. 
    From Gregory Nutt.
  - EFM32 USB Device:  The epin_configure() function used the same eptype
    as the TxFIFO number for all endpoints.  This should probably be the
    physical EP number, not the EP type.  Suggested by Key Two.  From
    Gregory Nutt.
 
* STMicro STM32 Drivers:

  - STM32* SPI:  Don't rely on SPI_CR1_SPE to determine if peripheral has
    been initialized.  This change is needed specifically for the case
    where a boot loader sets the SPE bit before starting NuttX.  In that
    case, the test in the SPI driver is wrong.  This change fixes that by
    assuring that NuttX has booted and initialized at least once (whether
    or not SPE is set) before the driver starts refusing to initialize.
    From Anthony Merlino.
  - STM32 F0, F7, H7, L4 Serial:  Fix use of CONFIG_SERIAL_IFLOWCONTROL
    where CONFIG_SERIAL_OFLOWCONTROL was intended.  From Juha Niskanen.
  - STM32 TIM:  Don't use hard-coded UIF interrupt in some functions.
    From raiden00pl.
  - STM32 (FS/HS), STM32F7, and STM32L4 OTGFS/HS Device:  The
    epin_configure() function used the same eptype as the TxFIFO number
    for all endpoints.  This should probably be the physical EP number,
    not the EP type.  Suggested by Key Two.  From Gregory Nutt.
  - STM32 F2:  Fixes Kconfig options to include all STM32F20XX processors,
    not just STM32F207.  Also removes redundant STM32_STM32F429 depends
    from Kconfig. STM32F4XXX already does this.  From Anthony Merlino.
  - STM32 F4 DAC:  STM32F407VG has only one DAC.  NDAC=2 causes
    compilation error when trying to use e.g. STM32_DAC1_CR macro.  From
    Petteri Aimonen.
  - STM32 F7 Serial:  Force invalidation of data cache after DMA re-enable
    when returning from low-power mode  From Juha Niskanen.

* STMicro STM32 Boards:

  - B-L475E-IOT01A:  Correct timer source clock frequencies.  From Freemans
    Goden.
  - Nucleo-L432KC:  Fix SPI pin definitions in board.h.  From Daniel P.
    Carvalho.

* MIPS32:

  - CP0 Definitions:  Fix some copy-paste errors that cause malformed
    comments and syntax errors when certain CP0 CONFIG1 bits are
    referenced.  Note in Issue 123 by Anonymous.  From Gregory Nutt.
  - microMIPS:  Reported by Anonymous in Bitbucket Issue #129:   When MIPS
    port is built for microMIPS and then loaded as an application, the
    __start entry point is entered in microMIPS mode, but the CPU core
    initialization code there misses to set the config3ISAOnExc bit to 1.
    Subsequently, exceptions are entered in MIPS32 mode, but the code base
    was built for microMIPS.

 * Microchip PIC32MZ:

  - PIC32MZ Startup:  In pic32mz-head.S, initialize the global pointer in
    all shadow sets.  From Ouss4.

 * Microchip PIC32MZ Drivers:

  - PIC32MZ Serial:  Fix a typo in assignment of TTYS0 to UART6  From Ouss4.

* Simulation:

 - SIM Network Driver:  Fix error 'invalid operands to binary &' From
   Xiang Xiao.

* C Library/Header Files:

  - Fix typographical error in endian.h and resource.h  From anchao.
  - include/net/if.h:  Adds extern "C" guard in include/net/if.h  From
    Anthony Merlino.
  - include/netinet/in.h:  Per OpenGroup.org, type of sin_port in struct
    sockaddr_in must be in_port_t vs uint16_t.  NOTE: in_port_t is
    typdef'ed as uint16_t anyway.  From Gregory Nutt.
  - include/nuttx:  Fix definitions used to access OS functions within the
    libraries.  In the FLAT build, we must always set the errno and/or
    create cancellation points because the same library functions are used
    within the OS as are used by applications.  This could cause issues
    for the OS but corrects some problems at the user interface.  Noted by
    Federico Braghiroli in Bitbucket issue 121.  From Gregory Nutt.
  - include/nuttx/clock.h:  Fix uptime wrong if DEBUG_FEATURES and
    SCHED_TICKLESS enabled.  From Xiang Xiao.
  - include/nuttx/fs/fs.h:  Fix some backward parameters in a new macro
    definition.  From Gregory Nutt.
  - include/nuttx/fs/fs.h:  Register_mtddriver should depend on CONFIG_MTD
    not CONFIG_MTD_PARTITION  From Xiang Xiao.
  - include/sys/socket.h:  Renumber the socket types.  They must begin at
    1, not zero. Socket type zero has a special meaning for some
    interfaces.  For example, getaddrinfo() uses a socket type of zero to
    many any type of socket.  The is no standard name for the
    any-type-socket, but macOS uses SOCK_UNSPEC.  NuttX will do the same.
    Issue noted by Anthony Merlino. From Gregory Nutt.

  - libs/libc:  Correct some errors in psignal() and stpncpy().  From
    Lokesh B V.
  - libs/libc/math:  Add variable convergence in log() and logf() to avoid
    hangs caused by failure to converge for very specific input values.
    Also includes a small change to log() and logf() that improves
    accuracy and convergence time.  From Rajan Gill.
  - libs/libc/stdio: Fix conversion for format specifiers in sscanf() that
    appear right after a floating point format specifier.   When
    performing a floating point conversion the parsing code could consume
    more than required characters from the input buffer. This made
    impossible to convert input of form "1.1K" using format "%f%c".  Fix
    the issue by advancing the input buffer with the actual characters
    converted as a float point number.  From Mihai Serban.
  - libs/libc/stdio:  Remove CONFIG_NOPRINTF_FIELDWIDTH.  That option
    does, indeed, make the printf family of functions much smaller.  But
    it also adds a lot of complexity and makes the functions
    non-standard.  Removing this might break some of the tinier platforms
    but it is the best thing to do for long term maintenance for for
    OpenGroup.org compliance.
  - libs/libc/stdio:  Update to vsprintf().  This resolves the integer
    field width problem if Issue 35 for the cases of integer, long and
    long long integer types.  The output now matches the output form
    glibc.  From Gregory Nutt.
  - libs/libc/string:  Correct the return pointer value from stpncpy() for
    the case where the NUL terminator is transferred.  From Gregory Nutt.
  - libs/libc/string:  Fix strrchr() so that it considers null terminator
    as part of string.  From Petteri Aimonen.
  - libs/libc/wqueue:  Eliminate a race condition noted by Xiang Xiao.
    Use sigprocmask() so that we do not lose a signal.  From Gregory Nutt.
  - libs/libnx/nxfonts: Fix kerning of 'I' in Sans17x22 font.  From
    Petteri Aimonen.
  - libs/libnx/nxfonts:  In nxfonts_getfont(), avoid unnecessary warnings
    for other whitespace chars also.  From Petteri Aimonen.
  - libs/libnx/mxmu:  NXMU now re-validates window pointer for mouse
    events.  NXMU caches the previous window pointer so that further mouse
    events can be sent to the same window. However, if the window is
    destroyed while mouse button is held down, the pointer may become
    invalid and cause a crash. This patch revalidates the pointer before
    using it.  From Petteri Aimonen.
  - libs/libnx/nxtk: nxtk_bitmapwindow: Fix warning message when bitmap is
    fully off-screen.  From Petteri Aimonen.

* Build System:

  - Fix issue with libcxx build.  This was changed multiple times, but
    should be fixed now.  From Anthony Merlino.
  - configs/Makefile and tools/Config.mk:  Move single file copy to the
    new function COPYFILE.  This fixes the Windows native build case when
    there is no cp or cp does not recognize Windows paths.  From Anatol
    Ivanov.
  - tools/Config.mk and tools/Makefile.win:  Force use 'cmd' for shell
    with windows native build  From Anatol Ivanov.
  - tools/Directories.mk:  Correct the path to the installed libcxx
    directory.  From Gregory Nutt.
  - tools/Makefile.win/unix:  Staging directory (and its libraries) should
    be removed on 'make clean' (issue noted by Dave Marples).  From
    Gregory Nutt.

  - apps/Directory.mk:  If the current directory contains a Kconfig file
    and MENUDESC is not defined, then Directory.mk must not trash the
    Kconfig in the current directory.  From Gregory Nutt.
  - apps/Makefile:  Fix Windows native build patch extension.  From Anatol
    Ivanov.

* Other Tools:

  - tools/Config.mk:  Fix an error in RWILDCARD implementation  From
    Anthony Merlino.
  - tools/configure.c: Add missing '\n' in printf statement
  - tools/configure.c:   Add missed -g option to getopt() string.  From
    Anatol Ivanov.
  - tools/configure.c and tools/configure.sh:  Fix Windows native
    pre-build kconfig-conf incompatibility.  From Anatol Ivanov.
  - tools/csvparser.h:  Extend MAX_PARMSIZE to 256.  Fixes this issue: 
    70: Parameter too long: ...  From Xiang Xiao.
  - tools/link.bat: Fix .fakelink creation.  From Anatol Ivanov.
  - tools/mkdeps.c:  Fix '\0' missing with MinGW.  From Anatol Ivanov.

* NSH Library: apps/nshlib:

  - apps/nshlib:  Correct maximum number of arguments that can be provided
    to the mksmartfs command.  From Eunbong Song.
  - apps/nshlib:  Add fflush to nsh_consolewrite().  This resolves this
    problem:  'cat /dev/ttyCP &' followed by 'echo ls >/dev/ttyCP'.  In
    that case we can't get the 'ls' result immediately, because 'cat' cmd
    uses nsh_consolewrite() and that uses fwrite with no fflush. We can
    get the 'ls' result after type '\n', because nsh will fflush output
    when get '\n'.  From ligd.
  - apps/nshlib:  nsh_catfile() should not append '\n' if the last char in
    file is already '\n'  From Xiang Xiao.
  - apps/nshlib:  Fix warning g_oldpwd defined but not used
  [-Wunused-const-variable] in nsh_envcmds.c.  From Xiang Xiao.

* Examples/Tests: apps/examples:

  - apps/examples/adc/Kconfig:  CONFIG_BOARDCTL_ADCTEST does not exist
    anymore and should removed as a dependency.  From Eunbong Song.
  - apps/examples/webserver/Kconfig:  The webserver "app" allows for DHCP
    client to be enabled. However, the Kconfig infrastructure does not
    contain EXAMPLES_WEBSERVER_DHCPC config.  Based on patch from
    "Anonymous" attached to Bitbucket Issue #130.  From Gregory Nutt.

* System Utilities: apps/system:

  - apps/system/hexed:  Fix memory leak  From zhuyanlin.
  - apps/system/i2c:  Fix i2c_msg freq initialization problem.  Typo
    prevented I2C frequency initialization in a struct i2c_msg.  From
    dongjiuzhu.
  - apps/system/system:  Fix warning when passing argument 6 of
    'task_spawn' from incompatible pointer type
    [-Wincompatible-pointer-types]  From Xiang Xiao.

* Network Utilities: apps/netutils:

  - Correct some network-related configuration variable names.  All *_MTU
    defines were changes to *_PKTSIZE gut that was not reflected in
    apps/  From Gregory Nutt.
  - apps/netutils/netlib/netlib_parsehttpurl.c:  Correct handling of long
    URLs as noted in Bitbucket issue #119 (in the nuttx/ repository, not
    the apps/ repository).  From Gregory Nutt.
  - apps/netutils/codecs:  "dst" overflow protection when base64 string
    ends with "="  From Aleksandr Vyhovanec.
  - apps/include/netutils/ipmsfilter.h:  Eliminate error generated by bad
    pre-processor logic.  From Gregory Nutt.

* GPS Utilities: apps/graphics:

  - apps/graphics/NxWidgets:  Fix garbage returned when
    CCycleButton::getValue() is called after removeAllOptions().
    CScrollingPanel should not draw outside the widget area.  From
    Petteri Aimonen.