NuttX-7.30 ---------- The 130th release of NuttX, Version 7.30, was made on May 19, 2019, and is available for download from the Bitbucket.org website. Note that release consists of two tarballs: nuttx-7.30.tar.gz and apps-7.30.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: - pthreads: Added non-standard pthread_get_stackaddr_np() and pthread_get_stacksize_np(). From Joao Matos. - boardctl(): Add a command to start the VNC server. From Gregory Nutt. - Signals: Remove references to CONFIG_DISABLE_SIGNALS in many files. Signals can no longer be disabled. From Gregory Nutt. * Wireless/Wireless Drivers: - NRF24L01: Add support for "multicast" TX mode - no waiting for ACK (needs to be enabled with fcntl SETTXPAYLOADNOACK) From Leif Jakob. * Graphics/Display Drivers: - NX Graphics: Add new server->client callback to notify the window client of server events. Remove the old 'blocked' callback and just make it one case of an 'event' callback. From Gregory Nutt. - NX Graphics: Implement new interfaces nx_synch() and nxtk_synch(). This are used to synchronize the NX server with the window client. Currently most of the logic is equivalent to nx_block() and nxtk_block(), but with slightly different semantics. They are separate now because they are likely to diverge in the future. From Gregory Nutt. - NX Graphics: Add support for modal windows. From Gregory Nutt. - NX Graphics: Implement a software cursor. The cursor behaves like a "sprite", always at the top of the display with a transparent background. Includes new NX interfaces to show/hide the cursor, set the cursor image, and to move the cursor position. From Gregory Nutt. - NX Graphics: Added support for hiding windows. This features is needed by Twm4Nx: When a window is iconified, the icon should appear on the background and the window should disappear (i.e., be hidden). The windows needs to remain healthy and to be updated in all ways, but it cannot affect the display content. Conversely, when the icon is clicked, the icon needs to be hidden on the background and the window needs to be restored in its current state (which may be different than the state of the window at the time it was iconified. From Gregory Nutt. - NX Graphics: Windows can now be created in the hidden state. This can be used to clean up initial window presentation which may involve several steps. This makes those steps all invisible until nx[tk]_setvisibility() is called to make the windows visible. From Gregory Nutt. - NX Graphics: Add new NX interfaces to query if a window is hidden or not. From Gregory Nutt. - NxTerm IOCTLs: Replace specific interfaces between boardctl and nxterm with a generalized IOCTL interface. From Gregory Nutt. - NxTerm: Add a new IOCTL that can be used to inform NxTerm that the size of a window has changed. From Gregory Nutt. * Other Common Device Drivers: - CAN Upper Half: Support multiple readers of the same port From Valmantas Paliksa. - MAX7456: Adds a read-only (for now) /dev/osd0/CM interface for obtaining the chip's onboard NVM character map data. Use seek() to position the cursor over a desired subset of bytes, or request a large read to obtain the entire EEPROM memory contents. Values are returned in binary form. Use hexdump, etc. to format them for viewing. From Bill Gatliff. - Serial Upper Half: The upper half serial driver configuration CONFIG_SERIAL_DMA used to enable DMA on both RX and TX streams. This was replaced with CONFIG_SERIAL_RXDMA and CONFIG_SERIAKL_TXDMA which will permit supporting DMA on only one or both streams. From Gregory Nutt. - FUSB303: Add FUSB303 driver From Juha Niskanen. * Microchip PIC32MZ Drivers: - PIC32MZ GPIO: Adds support for edge detect mode. Slew Rate was also added for completeness. From Abdelatif Guettouche. * Microchip/Atmel SAMv7 Boards - SAME70-xplained: Add a configuration for test Twm4Nx using VNC. From Gregory Nutt. * Microchip LPCxx Drivers: - LPC17xx Ethernet: Added support for KSZ8081RNA PHY to LPC17xx Ethernet driver. From jjlange. - LPC17xx Ethernet: Added support for Ethernet PHY ioctl() on LPC17xx. From jjlange. * NXP i.MX RT: - .i.MXRT1020: Gets imx1020 family support started. It is pretty similar, but subtly different, to 1050/60 (less PLLs, less GPIO banks, differently numbered ports etc. etc.). Moved each of the imxrt family-specific files into its own subdirectory to tidy things up a bit, and remove the vast majority of ifdefs from the mainline code. From Dave Marples. * NXP LPC54xx Drivers - LPC54xx USB FS Host: Bring in the USB FS OHCI driver from LPC17. This is a quick'n'dirty port from LPC17 that I hope finish sometime later. Currently, it is missing hardware clocking setup and is not even hooked into the build system yet. From Gregory Nutt. * NXP LPC54xx Boards - LPCXpresso-LPC54628: Add a Twm4Nx configuration. From Gregory Nutt. * Sony CXD56xx - CXD56xx: Add initial CXD56xx chip driver sources. From Nobuto Kobayashi. * Sony CXD56xx Spresense Board - Spresense: Add Spresense board support. This is not the full Spresense BSP from Sony, only the barebones logic to present an NSH console. From Nobuto Kobayashi. * STMicro STM32: - STM32F7 Clocking: Add support for using the HSE in bypass mode, configured by board.h From Anthony Merlino. - STM32F7 Clocking: Added support for TICKLESS mode. From Valmantas Paliksa. - STM32H7 Backup Domain: Add backup domain control registers. From Jukka Laitinen. - STM32H7 Clocking: Set the STM32H7 default HSI pre-divider to 4. The I2C driver currently assumes HSI clock to be 16MHz. From Jukka Laitinen. - STM32H7 Memorymap.: Add the STM32H7 SYSTEM_UID and DEBUGMCU_BASE register definitions. From Jukka Laitinen. - STM32L071x: Add support for STM32L071x. From Mateusz Szafoni. * STMicro STM32 Drivers: - STM32 OTGHS Host: Allow VBUS monitoring for the OTG_HS host driver. From Jason Harris. - STM32F0/L0 ADC: Initial ADC support for the STM32 M0 From Mateusz Szafoni. - STM32F0/LO I2C: Port STM32F7 I2C to STM32F0/L0, From Mateusz Szafoni. - STM32F1 FLASH: As noted by Matias N, the FLASH base address used was incorrect. It was using the address of the FLASH data, not the address of the FLASH registers. From Gregory Nutt. - STM32F3 I2C: Port STM32F7 I2C to STM32F3. From Mateusz Szafoni. - STM32F7 Ethernet.c: Auto-generate Ethernet MAC address from device unique ID. From Valmantas Paliksa. - STM32F7 FLASH: Add flash block mapping support for progmem. From Valmantas Paliksa. - STM32F7 FMC: Updated stm32_fmc.h with more FMC definitions. From Joao Matos. - STM32F7 GPIO: Adds additional pin alternate function for SPI2. From Anthony Merlino. - STM32F7 PWM: Ported the PWM from F4 to F7. From Eduard Niesner. - STM32F7 SDMMC: Support bypassing the input clock divider on the SDMMC interface. This enables using the full clock speed provided to the SDMMC interface with no dividing. From Anthony Merlino. - STM32F7 SPI: Add SPI DMA threshold configuration. From Valmantas Paliksa. - STM32F7 UID: Add UID access. From Valmantas Paliksa. - STM32F7 USB: USB High speed for STM32F7 series From Ramtin Amin. - STM32H7 Ethernet: Add stm32h7 Ethernet driver. This is the initial push for the Ethernet driver. The driver has been tested to be working on a nucleo board. This is still WIP, it doesn't for example do MAC filtering on HW level, but just receives all Ethernet packets. From Jukka Laitinen. - STM32H7 GPIO: Add the GPIO_ETH_RMII_RXD1 pinmap definition for STM32H7. From Jukka Laitinen. - STM32H7 SDMMC: Add STM32H7 SDMMC driver. It is mostly copied from STM32F7, with modified register addresses and bits, and IDMA dded. This is still WIP; it only works with IDMA. From Jukka Laitinen. - STM32H7 Timers: Add timer devices driver for STM32H7. This i mostly a forklift from stm32f7 with some h7 specific modifications. From Jukka Laitinen. - STM32L0 AES: Add support for AES for L0. From Mateusz Szafoni. - STM32L0 RND: Add support for RND. From Mateusz Szafoni. - STM32L0 HSI48: Add support for HS148 for L0. Move HSI48 enable from stm32_usbdev.c to stm32xx_rcc.c From Mateusz Szafoni. - STM32L4 USB FS Device: Add USB FS device support. From Juha Niskanen. - STM32L4 HSI48: Port HSI48 from STM32F0/L0 From Juha Niskanen. - STM32L4 CRS: Port CRS from STM32F0/L0 From Juha Niskanen. * STMicro STM32 Boards: - B-L072Z-LRWAN1: Add ADC example. From Mateusz Szafoni. - B-L072Z-LRWAN1: Add nxlines_oled example (ssd1306). Add support for the I2C tool From Mateusz Szafoni. - Nucleo-144: Added STM32_RCC_DCKCFGR2_DSISRC definition to board.h. From Joao Matos. - Nucleo-144: Mount sysfs for ifconfig for f767-netnsh/defconfig. Even if ifconfig is working to set IP, it will not work to display NICs (without args) From Phil Coval. - Nucleo-144: Add basic PWM support to nucleo-144 board. More PWMs and multi channels support may be investigated and added later. Tested on Nucleo-F767ZI. From Phil Coval. - Nucleo-F303ZE: Add nxlines_oled example (ssd1306) From Mateusz Szafoni. - Nucleo-H743ZI: Enable the FPU. From Jason Harris. - Nucleo-H743ZI: Add support for I2C devices: ssd1306, pca9635, i2ctools From Mateusz Szafoni. - Nucleo-H743ZI: Add default clock configuration for SDMMC for Nucleo-H743ZI's board.h. From Jukka Laitinen. - Nucleo-H743ZI: Add the input clock frequency definitions in board.h for all the drivers. Assumes internal clock source for all the timers. From Jukka Laitinen. - STM32F4 Discovery: Keep c++ global constructor symbols From Masayuki Ishikawa. - Nucleo-L073RZ: Add MFRC522 support From Mateusz Szafoni. - OmnibusF4: Add boardctl() reset logic. From Bill Gatliff. - OmnibusF4: Add board_ioctl() which is needed only if CONFIG_BOARDCTL_IOCTL=y is selected; Update NSH configuration to enable board IOCTLs and DFU mode reset. From Bill Gatliff. - STM32L Discovery: Add support for board_late_initialize(), Move common initialization logic out of board_app_initialize() into new file stm32_bringup.c From Gregory Nutt. - STM32F103-Minimum: Add PROCFS automount support From Alan Carvalho de Assis. * Libraries/Header Files: - include/alloca.h: Add alloca.h. Included limited implementation of alloc() that is only available for GCC versions 3 and above. From Joao Matos. - include/cxx/cstdlib: Add std::random() From Gregory Nutt. * apps/ General: - Many locations: Remove references to CONFIG_DISABLE_SIGNALS. Signals can no longer be disabled. From Gregory Nutt. * Examples/Tests: apps/examples: - apps/examples/fb: Add some awareness of overlays to apps/examples/fb From Matthew Koch. - apps/examples/lvgldemo. Update to Littlevgl 5.3. From Matthew Koch. - apps/examples/pwfb: Extend example to verify software cursors. From Gregory Nutt. - apps/examples/pwfb: Add options to reduce the number of windows. This is helpful during debug to reduce the complexity. From Gregory Nutt. * Network Utilities: apps/netutils: - apps/netutils/cjson: Support for the current version of cJSON. From Mateusz Szafoni. - apps/netutils/libcurl4nx: This is an initial commit libcurl4nx. It is not complete yet, but I still wish to commit the unfinished bits to describe the roadmap, and because it is already usable. It will be updated and fixed in the future weeks and months, certainly including POST support and later, SSL. From Sebastien Lorquet. - apps/netutils/netinit. This commit removes the private network initialization logic from NSH and puts in a common location at apps/netutils/netinit. Now that netork initialization logic can be used by applications that do not include NSH. From Gregory Nutt. - apps/netutils/netlib: Add a more flexible version of netlib_parsehttpurl(). This one can parse any URL, and is extensible so future improvements keep the same API. From Sebastien Lorquet. * System Utilities: apps/system - apps/system/spi: I needed a small test tool for spi in the style of the I2C tool, but I didn't see one so I've hacked one out of the I2C tool source. From Dave Marples. * Graphics: apps/graphics: - apps/graphics/twm4nx. This release introduces Twm4Nx. Twm4Nx is a "port" of TWM, Tab Window Manager (or Tom's Window Manager) version 1.0.10 to NuttX NX windows server. No, a port is not the right word. It is are-design of TWM from the inside out to work with the NuttX NX server and NXWidgets. The name Twm4Nx reflects this legacy. But Twm4Nx is more a homage to TWM than a port of TWM. The original TWM was based on X11 which provides a rich set of features. TWM provided titlebars, shaped windows, several forms of icon management, user-defined macro functions, click-to-type and pointer-driven keyboard focus, graphic contexts, and user-specified key and pointer button bindings, etc. Twm4Nx, on the other hand is based on the NuttX NX server which provides comparatively minimal support. Additional drawing support comes from the NuttX NxWidgets library (which necessitated a conversion to C++). Twm4Nx is greatly stripped down and targeted on small embedded systems with minimal resources. For example, no assumption is made about the availability of a file system; no .twmrc file is used. The state of the "port" is available in apps/graphics/twm4mx/README.txt. To summarize: The port is fully functional but probably only at an alpha release level. The only missing critical feature is built-in touchscreen calibration. - apps/graphics/littlevgl. Update to Littlevgl 5.3. From Matthew Koch. - apps/graphics/nxglyphs: Put all NxWidgets and NxWM glyphs into a common directory where they can eventually be shared. Decouple from nxwidgets and nxwm so that they can be used elsewhere. Creates include/graphics/nxglyphs.h From Gregory Nutt. - apps/graphics/nxglyphs: Add some new cursor bitmap images. From Gregory Nutt. - apps/graphics/nxglyphs: Add mkcursor.c. Will auto-generate cursor image header file from Gimp C output. From Gregory Nutt. - apps/graphics/nxglyphs: Add 16x16 cursor images. 30x30 are kind of large on small displays. From Gregory Nutt. - apps/graphics/nxglyphs: Add a new resize cursor image. From Gregory Nutt. - apps/graphics/nxwm: Separate NxWidgets and NxWM into separate directories. Remove old, common NxWidgets directory. From Gregory Nutt. - apps/graphics/nxwm: Move the NxWM unit test main() to apps/nxwm. It is no longer a unit test, but the main startup entry point for NxWM. From Gregory Nutt. - apps/graphics/nxwidgets: Update NX window clients so that they use the new 'event' callback (vs. the obsoleted 'blocked' callback). From Gregory Nutt. - apps/graphics/nxwidgets: Add a synchronize method to every window. This is a wrapper arounc nx[tk]_sync and permits C++ applications to synchronize with the NX server. From Gregory Nutt. - apps/graphics/nxwidgets: Add support for modal windows. From Gregory Nutt. - apps/graphics/nxwidgets: Add cursor control methods to the CNxServer class. From Gregory Nutt. - apps/graphics/nxwidgets: Add a method to CButtonArray that will allow us to dynamically resize the array (at the cost of losing all button labels). From Gregory Nutt. - apps/graphics/nxwidgets: Fix a possible deadlock condition when waiting for window geometry data that will never come. Fixed by re-requesting geometry data if we don't already have it. From Gregory Nutt. - apps/graphics/nxwidgets: Add handshake to CWidgetControl::getWindowHandle() to avoid returning a NULL handle. From Gregory Nutt. - apps/graphics/nxwidgets: CNxTkWindow, CNxWindow, CNxServer: Add support to create RAM backed windows. From Gregory Nutt. - apps/graphics/nxwidgets: Add methods to all windows to query if a window is visible or hidden. From Gregory Nutt. 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 Initialization: A recent change broke Tickless mode for all architectures. The original change was intended to handle the case where up_timer_gettime may not start from zero case. The side effect is that this changed to order of initialization of clocking, breaking Tickless mode:: After this change the tickless timer structures are used before they are initialized in clock_inittime(). The commit has been reverted. - pthread Stack Attribute: Fixed pthread_attr_get/setstacksize param type to size_t. From Joao Matos. - Signals: The abnormal termination signal handler was just calling exit() conditionally when, for example, Ctrl-C is sent to a task. The abnormal termination handler must obey the rules of cancellation points: If cancellation is disabled, then the abnormal termination logic must wait for cancellation to be re-enabled; If cancellation is deferred then the abnormal termination logic may have to wait for the victim task to enter or exit a cancellation point. From Gregory Nutt. - Syscall: Added support for munmap() syscall. From Joao Matos. - Syscall: Fix a warning due to inconsistencies in return type in syscall.csv. From Gregory Nutt. - Syscall: Correct an error syscall.csv. Error occurred when creating the munmap() proxy if CONFIG_FS_RAMMAP is not defined. From Gregory Nutt. * File System/Block and MTD Drivers: - fs/littlefs/lfs.c: Fix lfs_format bug. In superblock disk root- block assignment, the second must be root[1]. From YanLin Zhu. * Networking/Network Drivers: - getsockname(): Fix addrlen check in socket debug features. Getsockname() checked erroneously a pointer against 0, where the intention was to dereference the pointer and to check the length. This causes also a compilation failure if the code is compiled with CONFIG_DEBUG_FEATURES and with -Werror flag set. From Jukka Laitinen. - Network Locking: net_lock() and net_restorelock() now return a value. That values is the standard zero on success; negated errn value on failure. This return value is only needed for -ECANCELED. That cancellation indication needs to ripple all the way back to the highest levels where the cancellation can be acted on. This commit only adds the return value; it does not add checking for the return values of net_lock() and net_restorelock() at higher levels. That is required too. From Gregory Nutt. - PHY Notification Driver: Change sprintf to strncpy in phy_notify. On some platforms, the sprintf doesn't accept a const char* as a format argument. From Jukka Laitinen. - 6LoWPAN HC06: Correct an endian-ness problem in HC06 decompression. From Ivan Ucherdzhiev. * Wireless/Wireless Drivers: - NRF24L01: Don't block in read if file descriptor is O_NONBLOCK. From Leif Jakob. * Graphics/Display Drivers: - NX Graphics: Fix an error in coordinate system usage. Expected rectangle in device coordinate frame, but was passing the rectangle in window-relative coordinate frame. From Gregory Nutt. - NX Graphics: Fix an oversight in the implementation of per-window framebuffers. It is true that redraw callbacks can be suppressed for all cases ... EXCEPT ONE: When the window is resized to a larger size, then the newly exposed territory must be drawn for the first time. From Gregory Nutt. - NxTK: Fix an error in handling mouse events for framed windows. When drawing, NX may report mouse positions outside of the Window. The is only for NX windows, but the outside-the-side positions were being discarded by nxtk_events(). From Gregory Nutt. - NxTK: Refuse to open a toolbar of height zero or less. From Gregory Nutt. - Nxglib: Correct bogus logic in nxgl_interesting(). From Gregory Nutt. - VNC Server: Fix an error in color conversion. From Gregory Nutt. * Common Drivers: - APDS9960: Initial state of allocated structure was not being set. Noted by Leif Jacob. From Gregory Nutt. - MFRC522: In mfrc522_read uid.sak must be different from 0x04 not as before from 0x00. SAK == 0x00 is a valid PICC type. Add interface to read MIFARE Ultralight data From Mateusz Szafoni. - Power: Fix build for battery gauge From Tom Kopriva. - Syslog: In syslog buffered mode, avoid IOB alloc lock-up with heavy network activity. This change alters the buffered syslog logic to use 'iob_tryalloc' instead of blocking 'iob_alloc' to avoid syslog printing from getting stuck when all IOBs are depleted by network activity. An issue was seen when large incoming TCP transfer uses free IOB buffers and processing threads try to use syslog which then block at iob_alloc. From Jussi Kivilinna. - USB CDC/ACM Device: This fixes a problem where the host sent a "get descriptor" message of type "standard" with a recipient of type "interface". Since the composite driver would only pass messages to the child interfaces when a message was not "standard", this message was not handled. I changed the condition so that the composite driver checks not only if this is a "standard" message but if it is also directed to the device. Otherwise, the handling is delegated to the children of the composite device. From Matias N. - USB HID: The usbhid_descriptor_s struct defined in hid.h included some optional fields that should not be hard-defined as part of that structure. An arbitrary number of optional entries could be included in the descriptor, but that is not properly represented. No code on NuttX currently depends on the structure definition with an optional descriptor so it is safe to remove. From Matias N. - USB MSC Device: Correct typo "const const" to "const". arch/arm/src/stm32/stm32_i2s.c: In debug assertions, it on a sample rate of 0, but based on other code comments this value implies disabling the i2s master clock. From Jason Harris. - Zerocross Driver: Fix some errors when debug assertions are enabled. From Matous Pokorny. - User Leds: Fix ledset validity check in ULEDIOC_SETALL ioctl. From Jussi Kivilinna. * Architecture Common: - All board interfaces (those starting with board_) must be defined in board-specific logic. Otherwise, they cannot be customized for specialized usage by different boards. The board_reset() interface was defined in architecture-specific logic that only called up_systemreset(). That is useless! This change removes the board_reset() implementation from the architecture-specific code and re-implements it in the src/ directory of each board that has CONFIG_BOARDCTL_RESET enabled. That is the correct functional partitioning. From Gregory Nutt. - Start-up: Remove dependency on CONFIG_ARCH_FPU for inclusion of nvic.h in all other *_start.c files. From Gregory Nutt. - Architecture initialization: up_initialize() needs to know about ramlog_consoleinit() From Jason Harris. * Microchip PIC32MZ Drivers: - PIC32MZ GPIO: Corrects the gpioirq when mismatch mode is selected. From Abdelatif Guettouche. * ARMv7-A: - ARMv7-A Build: Fix 'cc1: warning: switch -mcpu=cortex-a7 conflicts with -march=armv7-a switch' From Xiang Xiao. * Nordic NRFxx - NRF52: Fix compiler error in nrf52832_errdata.c when following C89. From Erik Englund. * STMicro STM32: - STM32 Configuration: It seems one option in the timer configuration was lost at some point. From Matias N. - STM32 start-up: Inclusion of nvic.h should not be conditioned on CONFIG_ARCH_FPU. From Mateusz Szafoni. - STM32H7 Clocking: Fixes for STM32H7 RCC definitions. From Jukka Laitinen. * STMicro STM32 Drivers: - STM32F0/L USART: A few fixes for USART. From Mateusz Szafoni. - STM32F1/F30 FLASH: RCC register access should not be offset by FLASH register base. From Matias N. - STM32F7 CAN: CAN fixes. From Valmantas Paliksa. - STM32F7 I2C: I2C Interrupt storm fix. I2C track bad state. Now we track bad state and so the SW reset only when it occurs. From David Sidrane. - STM32F7 OTG: Fixes some macros related to OTGFS/OTGHS preventing OTGHS from working. From Anthony Merlino. - STM32F7 OTG Device: Correct hard-coded FIFO size that is wrong for OTG FS. From Ramtin Amin. - STM32F7 QSPI: Fix QuadSPI interrupts. This commit essentially replaces wrongly named configuration variable STM32F7_QSPI_INTERRUPTS into CONFIG_STM32F7_QSPI_INTERRUPTS. Also fixes some getreg/ putreg where register addresses were used instead of register offsets From Pierre-Olivier Vauboin. - STM32H7 I2C: Fix I2C4 compilation for STM32H7. From Jukka Laitinen. - STM32H7 UART: Fix compilation for UART7, UART8 and I2C4s. From Jukka Laitinen. - STM32L4 USB Device: Add missing PWR USBV enable, correct two USB register bits From Juha Niskanen. * STMicro STM32 Boards: - STM32F103-Minimum: USB reset was not working appropriately since the pin connected to D+ was incorrectly defined and the pullup/down logic was reversed. From Matias N. - Nucleo-l476RG: Fix some errors in GPIO logic when debug assertions are enabled. From Matous Pokorny. - Nucleo-L476RG: Add missing files of BMP180 example for Nucleo-L476RG. From Fabian Justi. - STM32F103-Minimum GPIO: Fix some errors when debug assertions are enabled. From Matous Pokorny. - STM32L4 PWM: Fix register addr, en_bit and resetbit for pwm timers. From Fabian Justi. - STM32F746G-DISCO: I2C1 config on stm32f746g-disco. Typo in stm32f7/stm32_i2c.c From Matthew Koch. * C Library/Header Files: - include/limits.h: Remove the duplicate TMP_MAX definitions. The standard requires that TMP_MAX defines be in stdio.h. From Xiang Xiao. - include/sys/select.h: Fix compiler error when CONFIG_NSOCKET_DESCRIPTORS is undefined. From Xiang Xiao. - include/signal.h: Add commented out definition of the si_addr field. From Joao Matos. - include/unistd.h: Fixed R_OK/X_OK definitions to match POSIX. From Joao Matos. - libs/libc/locale: Improved error handling in setlocale(). From Joao Matos. - libs/libc: Fixed return code in uname(). From Joao Matos. - libs/libc/stdio: Restore support for printing NULL string as "(null)". Legacy printf supported printing "(null)" in place for NULL string: printf("null: %s\n", NULL); => null: (null). This commit restores this functionality for new printf library. From Jussi Kivilinna. * Examples: apps/examples: - apps/examples/pca9635/pca9635_main.c: fix compilation error. From Mateusz Szafoni. * Graphics Utilities: apps/graphics: - Various graphics apps (and apps/examples): If CONFIG_VNCSERVER=y, don't call vnc_default_fbinitialize() directly. That is a violation of the portable POSIX interface. Instead, call boardctl(BOARDIOC_VNC_START);. From Gregory Nutt. - apps/graphics/nxwidgets: CWidgetControl::handleLeftClick now returns a value to indicate if the click was actually processed or not. CWidgetControl::pollMouseEvents: Correct return value. From Gregory Nutt. - apps/graphics/nxwidgets/: NXWidgets::CNxWidgets: Fix some issues with returned values. On setting the widget size or position, it was returning false if there was no change in size or position. Many places in the code were treating the false return value as an error. From Gregory Nutt. * System Utilities: apps/system: - apps/system/nxplayer: Fix some logical errors from recent commits. They broke the build of the nxplayer as a library vs. a task.