tag:github.com,2008:https://github.com/gustavosinbandera1/RIOT/releasesRelease notes from RIOT2020-01-22T13:14:25Ztag:github.com,2008:Repository/235600603/2020.01-RC22020-01-22T13:14:25Z2020.01-RC2<p>Merge pull request <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="553508612" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/13183" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/13183/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/13183">RIOT-OS#13183</a> from fjmolinas/backport/2020.01/fix_xtimer_…</p>fjmolinastag:github.com,2008:Repository/235600603/2020.04-devel2020-01-15T22:09:38Z2020.04-devel<p>Development branch towards 2020.04 release</p>fjmolinastag:github.com,2008:Repository/235600603/2020.01-RC12020-01-15T21:43:40Z2020.01-RC1: Merge pull request #13085 from miri64/boards/feat/feather-nrf52840<p>boards: initial import of Adafruit Feather nRF52840 Express</p>fjmolinastag:github.com,2008:Repository/235600603/2019.102019-10-31T13:11:16ZRELEASE 2019.10<h1>RIOT-2019.10 - Release Notes</h1>
<p>RIOT is a multi-threading operating system which enables soft real-time<br>
capabilities and comes with support for a range of devices that are typically<br>
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as<br>
light-weight 32-bit processors.</p>
<p>RIOT is based on the following design principles: energy-efficiency, soft<br>
real-time capabilities, small memory footprint, modularity, and uniform API<br>
access, independent of the underlying hardware (with partial POSIX compliance).</p>
<p>RIOT is developed by an international open-source community which is<br>
independent of specific vendors (e.g. similarly to the Linux community) and is<br>
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect<br>
business models around the free open-source software platform provided by RIOT.</p>
<h1>About this release:</h1>
<p>The 2019.10 release includes:</p>
<ul>
<li>initial support for SUIT firmware updates</li>
<li>USB CDC-ACM serial communication</li>
<li>complete rewrite of TI CC110x radio driver</li>
<li>initial support for IPv6 fragmentation</li>
<li>DTLS support in the sock networking stack</li>
<li>complete blockwise messaging for gcoap and nanocoap</li>
<li>as always, bug fixes and documentation updates</li>
</ul>
<p>About 460 pull requests, composed of 950 commits, have been merged since the<br>
last release, and about 60 issues have been solved. 57 people contributed with<br>
code in 105 days. Approximately 2000 files have been touched with 129000<br>
insertions and 25000 deletions.</p>
<h1>Notations used below:</h1>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ means new feature/item
* means modified feature/item
- means removed feature/item"><pre class="notranslate"><code>+ means new feature/item
* means modified feature/item
- means removed feature/item
</code></pre></div>
<h1>New features and changes</h1>
<h2>System libraries</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ sys/arduino: Added millis()
* sys/arduino: make ADC feature optional
+ sys/fmt: Added submodule fmt_table for printing tables
+ sys/log: add module for colorized logging
+ sys/riotboot: add initial image digest verification
* riotboot: define if building the bootloader
+ sys/shell: add heap command
+ sys/shell: cancel current line on CTRL-C.
* shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
+ sys/suit: initial support for SUIT firmware updates
* sys: add schedstatistics module to remove dependency on xtimer
* can: use memarray for pkt and router allocation
+ sys: single interrupt handler thread for interrupts in modules with blocking
functions (but likely to be removed -- see Deprecations section below)"><pre class="notranslate"><code>+ sys/arduino: Added millis()
* sys/arduino: make ADC feature optional
+ sys/fmt: Added submodule fmt_table for printing tables
+ sys/log: add module for colorized logging
+ sys/riotboot: add initial image digest verification
* riotboot: define if building the bootloader
+ sys/shell: add heap command
+ sys/shell: cancel current line on CTRL-C.
* shell/sc_gnrc_ipv6_nib: list and edit authoritative border router (ABR) list
+ sys/suit: initial support for SUIT firmware updates
* sys: add schedstatistics module to remove dependency on xtimer
* can: use memarray for pkt and router allocation
+ sys: single interrupt handler thread for interrupts in modules with blocking
functions (but likely to be removed -- see Deprecations section below)
</code></pre></div>
<h2>Networking</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ sys: Add (CoAP) Link Format module
+ sys: add credman (D)TLS credential management module
+ sys: new sock submodule for DTLS
+ gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
+ gnrc_netif: allow for wait of minimum time between sends
* gnrc_netif: add netif setter (part of refactoring to a pointer-based
approach)
* gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
+ gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
+ gcoap: add Blockwise support
* nanocoap: complete Blockwise support
+ nanocoap: add coap_opt_get_next() to iterate over options
+ nanocoap: add coap_opt_get_opaque() to retrieve option bytes
* gnrc_tcp: several small improvements"><pre class="notranslate"><code>+ sys: Add (CoAP) Link Format module
+ sys: add credman (D)TLS credential management module
+ sys: new sock submodule for DTLS
+ gnrc_ipv6_ext_frag: Initial import of IPv6 fragmentation and reassembly
+ gnrc_netif: allow for wait of minimum time between sends
* gnrc_netif: add netif setter (part of refactoring to a pointer-based
approach)
* gnrc_sixlowpan_frag_vrb: add gnrc_sixlowpan_frag_vrb_from_route()
+ gnrc_sixlowpan_frag_rb: move reassembly buffer functions to their own module
+ gcoap: add Blockwise support
* nanocoap: complete Blockwise support
+ nanocoap: add coap_opt_get_next() to iterate over options
+ nanocoap: add coap_opt_get_opaque() to retrieve option bytes
* gnrc_tcp: several small improvements
</code></pre></div>
<h2>Packages</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* ccn-lite: version bump
* pkg/libcose: bump version and update crypto support
* nimble: adapt to nrf51 family
+ nimble: add IP-over-BLE support via netif/GNRC
* nimble: bump version to 1.2.0
* nimble/netif: set max conn explicitly
* semtech-loramac: add uplink_counter get/set functions
+ Cifra: add AES crypto library
* cayenne-lpp: bump version to 0.1.1
+ wolfSSL pkg addition with examples"><pre class="notranslate"><code>* ccn-lite: version bump
* pkg/libcose: bump version and update crypto support
* nimble: adapt to nrf51 family
+ nimble: add IP-over-BLE support via netif/GNRC
* nimble: bump version to 1.2.0
* nimble/netif: set max conn explicitly
* semtech-loramac: add uplink_counter get/set functions
+ Cifra: add AES crypto library
* cayenne-lpp: bump version to 0.1.1
+ wolfSSL pkg addition with examples
</code></pre></div>
<h2>Boards</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ board: add support for SAMR34-XPRO
+ boards/arduino-mkrwan1300: add initial support (without LoRa)
* boards: Split off 128KiB version of bl*pill
+ boards/doc: Add a guide to find physical board pins
+ boards: Initial support for board HiFive1B
- boards/mips-malta: remove board.
+ boards/nrf52: introduce shared dependencies in common/nrf52 and update
boards
* boards/nrf52832-mdk: enable I2C and use default configuration
* board/nucleo-l031k6: Add i2c to periph_conf
* board/nucleo-l432kc: Implementing I2C for board
* boards: move CPU/CPU_MODEL definition to Makefile.features
+ boards/p-l496g-cell02: add support
- boards: Remove support for the Jiminy-Mega256RFR2
* boards/sam0: refactor ADC_0 into plain ADC
* boards/slwstk6000b-*: split one board for each module
* boards/slwstk6000b: move CPU definition to Makefile.features
+ boards/stm32f723e-disco: add initial support
* boards/stm32: introduce common timer configurations and use them where
possible
+ boards/stm32l0538-disco: add initial support
* pic32-wifire: add support for flashing with pic32prog"><pre class="notranslate"><code>+ board: add support for SAMR34-XPRO
+ boards/arduino-mkrwan1300: add initial support (without LoRa)
* boards: Split off 128KiB version of bl*pill
+ boards/doc: Add a guide to find physical board pins
+ boards: Initial support for board HiFive1B
- boards/mips-malta: remove board.
+ boards/nrf52: introduce shared dependencies in common/nrf52 and update
boards
* boards/nrf52832-mdk: enable I2C and use default configuration
* board/nucleo-l031k6: Add i2c to periph_conf
* board/nucleo-l432kc: Implementing I2C for board
* boards: move CPU/CPU_MODEL definition to Makefile.features
+ boards/p-l496g-cell02: add support
- boards: Remove support for the Jiminy-Mega256RFR2
* boards/sam0: refactor ADC_0 into plain ADC
* boards/slwstk6000b-*: split one board for each module
* boards/slwstk6000b: move CPU definition to Makefile.features
+ boards/stm32f723e-disco: add initial support
* boards/stm32: introduce common timer configurations and use them where
possible
+ boards/stm32l0538-disco: add initial support
* pic32-wifire: add support for flashing with pic32prog
</code></pre></div>
<h2>CPU</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ cpu/esp32: lwIP netdev
* cpu/esp*: various improvements
* cpu/kinetis: enable HWRNG for k64f
- cpu/mips32r2_generic: remove cpu.
* cpu: Moved stdio_init() prior to periph_init() for ARM targets
* cpu/nrf5x: declare radio_nrfble feat for all nrfs
+ cpu/nrf5x: implement wdt peripheral driver
+ cpu/sam0_common: add hwrng driver
* cpu/sam0_common/gpio: don't hard-code number of ports
* cpu/sam0: update doc.txt with new MCU families
* cpu/saml21: Make Low-Power SRAM available to programs
+ cpu/stm32_common: add watchdog for stm32
* stm32-common/spi: allow custom pin modes on spi to minimize power
consumption
* cpu/stm32f(2|4|7): add riotboot requirements
* cpu/stm32l1: optimize power consumption
* stm32l1/vendor: update vendor files to v2.3.0
* sam0: allow flashing with JLinkExe
+ sam0: Implement watchdog driver
* cpu/samr30: update vendor files using ASF 3.35.1
+ cpu/efm32: provide periph_uart_mode"><pre class="notranslate"><code>+ cpu/esp32: lwIP netdev
* cpu/esp*: various improvements
* cpu/kinetis: enable HWRNG for k64f
- cpu/mips32r2_generic: remove cpu.
* cpu: Moved stdio_init() prior to periph_init() for ARM targets
* cpu/nrf5x: declare radio_nrfble feat for all nrfs
+ cpu/nrf5x: implement wdt peripheral driver
+ cpu/sam0_common: add hwrng driver
* cpu/sam0_common/gpio: don't hard-code number of ports
* cpu/sam0: update doc.txt with new MCU families
* cpu/saml21: Make Low-Power SRAM available to programs
+ cpu/stm32_common: add watchdog for stm32
* stm32-common/spi: allow custom pin modes on spi to minimize power
consumption
* cpu/stm32f(2|4|7): add riotboot requirements
* cpu/stm32l1: optimize power consumption
* stm32l1/vendor: update vendor files to v2.3.0
* sam0: allow flashing with JLinkExe
+ sam0: Implement watchdog driver
* cpu/samr30: update vendor files using ASF 3.35.1
+ cpu/efm32: provide periph_uart_mode
</code></pre></div>
<h2>Device Drivers</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ drivers: add mtd wrapper for periph_flashpage
+ drivers/cc110x: Complete rewrite from scratch, and detailed documentation
* drivers/include/periph/eeprom: Changed uint8_t* to void* in API
* drivers/periph/i2c: Updated i2c_release() to return void
+ drivers/ph_oem: support for Atlas Scientific pH OEM sensor
+ drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
+ usbus: Add CDC-ACM (Serial console) function
* periph/timer: Fix return codes of timer API
+ can: add ncv7356 SW transceiver driver
+ drivers/lis2dh12: add I2C mode
+ drivers/periph: add doc on power management aspects
* drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E"><pre class="notranslate"><code>+ drivers: add mtd wrapper for periph_flashpage
+ drivers/cc110x: Complete rewrite from scratch, and detailed documentation
* drivers/include/periph/eeprom: Changed uint8_t* to void* in API
* drivers/periph/i2c: Updated i2c_release() to return void
+ drivers/ph_oem: support for Atlas Scientific pH OEM sensor
+ drivers: support for NXP PCA9685 I2C 16-channel, 12-bit PWM controller
+ usbus: Add CDC-ACM (Serial console) function
* periph/timer: Fix return codes of timer API
+ can: add ncv7356 SW transceiver driver
+ drivers/lis2dh12: add I2C mode
+ drivers/periph: add doc on power management aspects
* drivers/mrf24j40: add pseudomodules for MRF24J40MA/B/C/D/E
</code></pre></div>
<h2>Build System / Tooling</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* dist/tools/pyterm: drop loglevel from output
* make: docker: delegate bind mounts to the containers
* Makefile.base: implement relative path linking without 'realpath'
* Makefile.base: use thin static archives.
* Makefile.include: add flash-only as dependency of term
* Makefile.include: do not build HEXFILE by default anymore
* Makefile.include: require make version 4.
* makefiles: add support for sysfs gpio debug adapter
* Makefiles: add support to generate both `.hex` and `.bin` file and add
FLASHFILE variable
* makefiles/docker.inc.mk: various improvements
* makefiles/murdock.inc.mk: change policy to run tests by default
* make: introduce $(CLEAN)
+ murdock: introduce 'TEST_ON_CI_BLACKLIST'
* toolchain/cflags: enable dwarf compression (save 50% HDD)
* edbg: verify before flash
+ ci: add codespell check script for tracking typos
+ Makefile.include: add cleanterm target and use it for tests
* arduino/sketches: build sketches as a module
+ github: use stale-bot to mark and close PRs without activity"><pre class="notranslate"><code>* dist/tools/pyterm: drop loglevel from output
* make: docker: delegate bind mounts to the containers
* Makefile.base: implement relative path linking without 'realpath'
* Makefile.base: use thin static archives.
* Makefile.include: add flash-only as dependency of term
* Makefile.include: do not build HEXFILE by default anymore
* Makefile.include: require make version 4.
* makefiles: add support for sysfs gpio debug adapter
* Makefiles: add support to generate both `.hex` and `.bin` file and add
FLASHFILE variable
* makefiles/docker.inc.mk: various improvements
* makefiles/murdock.inc.mk: change policy to run tests by default
* make: introduce $(CLEAN)
+ murdock: introduce 'TEST_ON_CI_BLACKLIST'
* toolchain/cflags: enable dwarf compression (save 50% HDD)
* edbg: verify before flash
+ ci: add codespell check script for tracking typos
+ Makefile.include: add cleanterm target and use it for tests
* arduino/sketches: build sketches as a module
+ github: use stale-bot to mark and close PRs without activity
</code></pre></div>
<h2>Testing</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ tests: add distinct test app for nrfmin driver
+ tests: add Nordic SoftDevice test app
* tests/gnrc_ndp: enhance coverage
* tests/lua_loader: run the test in CI
* tests/mcuboot: handle building in docker
* tests/pkg_u8g2: run the test in CI
* tests: provide test case for malformed IEEE 802.15.4 packets
* tests/pthread_rwlock: run the test in CI
* tests: re-enable utf-8 tests on native
+ tests/riotboot: add automatic test
+ tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
* tests/test_tools: add a test for the testing tools environment
* tools/compile_and_test_for_board: allow setting the flash targets
* tests/gnrc_tcp: provide regression tests for fixed issues"><pre class="notranslate"><code>+ tests: add distinct test app for nrfmin driver
+ tests: add Nordic SoftDevice test app
* tests/gnrc_ndp: enhance coverage
* tests/lua_loader: run the test in CI
* tests/mcuboot: handle building in docker
* tests/pkg_u8g2: run the test in CI
* tests: provide test case for malformed IEEE 802.15.4 packets
* tests/pthread_rwlock: run the test in CI
* tests: re-enable utf-8 tests on native
+ tests/riotboot: add automatic test
+ tests/sys_crypto: add RFC3610 and NIST SP 800-38C tests
* tests/test_tools: add a test for the testing tools environment
* tools/compile_and_test_for_board: allow setting the flash targets
* tests/gnrc_tcp: provide regression tests for fixed issues
</code></pre></div>
<h1>API Changes</h1>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="/* no error handling possible, so no need to return a value */
- int i2c_release(i2c_t dev)
+ void i2c_release(i2c_t dev)
/* return 0 on success, rather than 1; so like timer_init() */
int timer_set(tim_t dev, int channel, unsigned int timeout)
int timer_set_absolute(tim_t dev, int channel, unsigned int value)
int timer_clear(tim_t dev, int channel)
/* implementations already cast the argument to uint8_t* internally, so not
a significant semantic change */
- size_t eeprom_read(uint32_t pos, uint8_t *data, size_t len)
+ size_t eeprom_read(uint32_t pos, void *data, size_t len)
- size_t eeprom_write(uint32_t pos, const uint8_t *data, size_t len)
+ size_t eeprom_write(uint32_t pos, const void *data, size_t len)
/* now returns CIPHER_ERR_INVALID_KEY_SIZE on invalid keySize */
int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)
/* add setter for netif of interface header */
+ void gnrc_netif_hdr_set_netif(gnrc_netif_hdr_t *hdr, const gnrc_netif_t *netif)
"><pre class="notranslate"><code>/* no error handling possible, so no need to return a value */
- int i2c_release(i2c_t dev)
+ void i2c_release(i2c_t dev)
/* return 0 on success, rather than 1; so like timer_init() */
int timer_set(tim_t dev, int channel, unsigned int timeout)
int timer_set_absolute(tim_t dev, int channel, unsigned int value)
int timer_clear(tim_t dev, int channel)
/* implementations already cast the argument to uint8_t* internally, so not
a significant semantic change */
- size_t eeprom_read(uint32_t pos, uint8_t *data, size_t len)
+ size_t eeprom_read(uint32_t pos, void *data, size_t len)
- size_t eeprom_write(uint32_t pos, const uint8_t *data, size_t len)
+ size_t eeprom_write(uint32_t pos, const void *data, size_t len)
/* now returns CIPHER_ERR_INVALID_KEY_SIZE on invalid keySize */
int aes_init(cipher_context_t *context, const uint8_t *key, uint8_t keySize)
/* add setter for netif of interface header */
+ void gnrc_netif_hdr_set_netif(gnrc_netif_hdr_t *hdr, const gnrc_netif_t *netif)
</code></pre></div>
<h1>Deprecations</h1>
<h2>Warnings</h2>
<p>net/emb6<br>
net/nhdp<br>
pkg/oonf_api</p>
<p>As the release was finalized, rough consensus was reached on a system event<br>
thread handler (<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="508028396" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/12474" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/12474/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/12474">RIOT-OS#12474</a>) that likely will remove the interrupt handler thread<br>
(<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="387940990" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/10555" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/10555/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/10555">RIOT-OS#10555</a>) just introduced with this release.</p>
<h2>Removals</h2>
<p>net/coap: remove deprecated COAP_CT_... defines</p>
<h1>Known issues</h1>
<h2>Networking related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" packet buffer
address
assertion or completely without error
configured prefix
chars
address"><pre class="notranslate"><code> packet buffer
address
assertion or completely without error
configured prefix
chars
address
</code></pre></div>
<h2>Timer related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" time.
_xtimer_now() and irq_disable()"><pre class="notranslate"><code> time.
_xtimer_now() and irq_disable()
</code></pre></div>
<h2>Drivers related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" MHz
clock cycles
supported"><pre class="notranslate"><code> MHz
clock cycles
supported
</code></pre></div>
<h2>Native related issues</h2>
<h2>Other platforms related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" on host
(not previous)
boards
CS
LTO"><pre class="notranslate"><code> on host
(not previous)
boards
CS
LTO
</code></pre></div>
<h2>Build system related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" flashfile
evaluation
image
value"><pre class="notranslate"><code> flashfile
evaluation
image
value
</code></pre></div>
<h2>Other issues</h2>
<p>-none- tests/pkg_fatfs: vol_idx print overflow on large negative value<br>
10<br>
static_asserts in the same scope<br>
everywhere</p>
<h1>Fixed Issues from the last release (2019.07)</h1>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" echo -n
causes Segmentation fault
optimization
in udp.c
log_printfnoformat
Makefile.include
R21
types"><pre class="notranslate"><code> echo -n
causes Segmentation fault
optimization
in udp.c
log_printfnoformat
Makefile.include
R21
types
</code></pre></div>
<h1>Acknowledgements</h1>
<p>We would like to thank all companies that provided us with hardware for porting<br>
and testing RIOT-OS. Further thanks go to companies and institutions that<br>
directly sponsored development time. And finally, big thanks to all of you<br>
contributing in so many different ways to make RIOT worthwhile!</p>
<h1>More information</h1>
<p><a href="http://www.riot-os.org" rel="nofollow">http://www.riot-os.org</a></p>
<h2>Mailing lists</h2>
<ul>
<li>RIOT OS kernel developers list<br>
<a href="mailto:devel@riot-os.org">devel@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/devel" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/devel</a>)</li>
<li>RIOT OS users list<br>
<a href="mailto:users@riot-os.org">users@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/users" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/users</a>)</li>
<li>RIOT commits<br>
<a href="mailto:commits@riot-os.org">commits@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/commits" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/commits</a>)</li>
<li>Github notifications<br>
<a href="mailto:notifications@riot-os.org">notifications@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/notifications" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/notifications</a>)</li>
</ul>
<h2>IRC</h2>
<ul>
<li>Join the RIOT IRC channel at: irc.freenode.net, #riot-os</li>
</ul>
<h1>License</h1>
<ul>
<li>The code developed by the RIOT community is licensed under the GNU Lesser<br>
General Public License (LGPL) version 2.1 as published by the Free Software<br>
Foundation.</li>
<li>Some external sources and packages are published under a separate license.</li>
</ul>
<p>All code files contain licensing information.</p>kb2matag:github.com,2008:Repository/235600603/2019.10-RC22019-10-21T10:59:22Z2019.10-RC2<p>Merge pull request <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="509788898" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/12521" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/12521/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/12521">RIOT-OS#12521</a> from miri64/backport/2019.10/gnrc_ipv6/fix/…</p>kb2matag:github.com,2008:Repository/235600603/2020.01-devel2019-10-10T21:18:25Z2020.01-devel<p>Development branch towards 2020.01 release</p>kb2matag:github.com,2008:Repository/235600603/2019.10-RC12019-10-10T17:57:54Z2019.10-RC1: Merge pull request #12375 from miri64/tests/enh/rs-i137<p>tests: prepare for <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="502769485" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/Release-Specs/issues/137" data-hovercard-type="issue" data-hovercard-url="/RIOT-OS/Release-Specs/issues/137/hovercard" href="https://github.com/RIOT-OS/Release-Specs/issues/137">RIOT-OS/Release-Specs#137</a></p>kb2matag:github.com,2008:Repository/235600603/2019.072019-07-25T09:36:24ZRELEASE 2019.07<h1>RIOT-2019.07 - Release Notes</h1>
<p>RIOT is a multi-threading operating system which enables soft real-time<br>
capabilities and comes with support for a range of devices that are typically<br>
found in the Internet of Things: 8-bit and 16-bit microcontrollers as well as<br>
light-weight 32-bit processors.</p>
<p>RIOT is based on the following design principles: energy-efficiency, soft<br>
real-time capabilities, small memory footprint, modularity, and uniform API<br>
access, independent of the underlying hardware (with partial POSIX compliance).</p>
<p>RIOT is developed by an international open-source community which is<br>
independent of specific vendors (e.g. similarly to the Linux community) and is<br>
licensed with a non-viral copyleft license (LGPLv2.1), which allows indirect<br>
business models around the free open-source software platform provided by RIOT.</p>
<h1>About this release:</h1>
<p>The 2019.07 release includes a number of new features including many new<br>
boards and cpu, riotboot added to many new and old boards, USB is now available,<br>
BLE improvements, Ethernet on stm32 platforms, as well as many bug fixes and<br>
documentation updates. Testing has also improved with both On-Target Testing<br>
increasing and now Hardware Assisted Automated Tests being run.</p>
<p>About 300 pull requests with about 659 commits have been merged since the last<br>
release and about 50 issues have been solved. 26 people contributed with code<br>
in 106 days. Approximately 1377 files have been touched with 181993 insertions<br>
and 19668 deletions.</p>
<h1>Notations used below:</h1>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ means new feature/item
* means modified feature/item
- means removed feature/item"><pre class="notranslate"><code>+ means new feature/item
* means modified feature/item
- means removed feature/item
</code></pre></div>
<h1>New features and changes</h1>
<h2>System libraries</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ Add OCB encryption mode
+ sys/shell: add loramac shell command
* Fletcher16: extend with multi-part functions
+ USBUS: Initial work towards an USB stack
+ usbus: Initial simple auto init structure
* sys: make uart_stdio RX optional
+ sys/event: add event_wait_until()
+ sys/bluetil: add bluetil_addr_from_str()
+ usbus: Add CDC-ECM (Ethernet Control Model) function
* usbus: simplify adding entry to list
* sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule"><pre class="notranslate"><code>+ Add OCB encryption mode
+ sys/shell: add loramac shell command
* Fletcher16: extend with multi-part functions
+ USBUS: Initial work towards an USB stack
+ usbus: Initial simple auto init structure
* sys: make uart_stdio RX optional
+ sys/event: add event_wait_until()
+ sys/bluetil: add bluetil_addr_from_str()
+ usbus: Add CDC-ECM (Ethernet Control Model) function
* usbus: simplify adding entry to list
* sys/stdio_ethos: replace USE_ETHOS_FOR_STDIO by stdio_ethos pseudomodule
</code></pre></div>
<h2>Networking</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* gnrc_ipv6_nib: add address from netif to address validation timer
+ netdev_ieee802154: add txpower and page
+ net/lorawan/hdr: add lorawan header helpers
+ ble/nimble: add support for build-in IPSS service
* pkg/semtech-loramac: rework interaction with the MAC
* pkg/semtech-loramac: provide basic persistence for MAC state
* RPL: API update suggestions
+ ipv6_ext: add fragmentation extension definitions
* net/sock_util: Accept NULL pointers in urlsplit
+ sys/net: add netopt options for lorawan
* gnrc_tftp: Fix out-of-bounds memory access when comparing modes
- gnrc_pktbuf: remove gnrc_pktbuf_duplicate_upto
- gnrc_ipv6: remove obsolete and harmful reception code
* gnrc_tftp: set port on server init
+ ble/softdevice: add ble_nordic_softdevice feature
* net/mqttsn: fix client ID length to comply to the standard
+ gnrc_tftp: Add minimum packet length check"><pre class="notranslate"><code>* gnrc_ipv6_nib: add address from netif to address validation timer
+ netdev_ieee802154: add txpower and page
+ net/lorawan/hdr: add lorawan header helpers
+ ble/nimble: add support for build-in IPSS service
* pkg/semtech-loramac: rework interaction with the MAC
* pkg/semtech-loramac: provide basic persistence for MAC state
* RPL: API update suggestions
+ ipv6_ext: add fragmentation extension definitions
* net/sock_util: Accept NULL pointers in urlsplit
+ sys/net: add netopt options for lorawan
* gnrc_tftp: Fix out-of-bounds memory access when comparing modes
- gnrc_pktbuf: remove gnrc_pktbuf_duplicate_upto
- gnrc_ipv6: remove obsolete and harmful reception code
* gnrc_tftp: set port on server init
+ ble/softdevice: add ble_nordic_softdevice feature
* net/mqttsn: fix client ID length to comply to the standard
+ gnrc_tftp: Add minimum packet length check
</code></pre></div>
<h2>Packages</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* pkg/monocypher: bump version to 2.0.5
* ble/nimble: bump version to 9d4bda2
* openthread: update to release 20180926
* minmea: bump version to current master
+ nanocbor: Initial support for the nanocbor package
* pkg/lua: Make the module searchers conform to the API"><pre class="notranslate"><code>* pkg/monocypher: bump version to 2.0.5
* ble/nimble: bump version to 9d4bda2
* openthread: update to release 20180926
* minmea: bump version to current master
+ nanocbor: Initial support for the nanocbor package
* pkg/lua: Make the module searchers conform to the API
</code></pre></div>
<h2>Boards</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ boards/stm32l0538-disco: add initial support
+ boards/nucleo-l4r5zi: initial basic support
+ boards/particle-{xenon,argon,boron}: add initial support
* boards/kw41z: add common configuration and use it with existing
kw41z boards
+ added SPI support for Nucleo-F767ZI
+ boards: Add support for the Arduino-Leonardo
* boards/nucleof7*: SPI and refactoring
+ boards/stm32: introduce and use new common rtt configuration header
+ boards/stm32l0/l4: add rtt feature
+ boards: add support for i-nucleo-lrwan1 (Arduino-like shield)
+ boards/nrf52840-mdk: added I2C config
+ boards/lsn50: add support for Dragino LSN50 LoRa Sensor Node
* boards/stm32l0: introduce common clock configuration and apply it to
related boards
* boards/b-l072z-lrwan1: use STM32 common i2C configuration
+ Add usbdev feature to Sodaq boards
+ boards/pba-d-01-kw2x: add riotboot support
+ sensebox: add usbdev feature
+ boards/stm32f429i-disc1: add i2c configuration
+ boards/nucleo-l476rg: add riotboot
+ boards/same54-xpro: add riotboot support
+ boards: Add FLASHFILE support
+ boards/nucleo-l476rg: Add DMA support
+ nrf52: Add suspend/resume detection to usbdev
+ nrf5x: Add UART modecfg feature implementation
+ boards/stm32f3: add support for riotboot feature
+ boards/lobaro-lorabox: add sx1272 radio driver dependency
to netdev_default
+ boards/stm32l4: add riotboot support
+ boards/microbit: add QEMU emulation
+ boards/frdm-kw41z-k64f: add riotboot
* boards/sltb001a: reset before flashing"><pre class="notranslate"><code>+ boards/stm32l0538-disco: add initial support
+ boards/nucleo-l4r5zi: initial basic support
+ boards/particle-{xenon,argon,boron}: add initial support
* boards/kw41z: add common configuration and use it with existing
kw41z boards
+ added SPI support for Nucleo-F767ZI
+ boards: Add support for the Arduino-Leonardo
* boards/nucleof7*: SPI and refactoring
+ boards/stm32: introduce and use new common rtt configuration header
+ boards/stm32l0/l4: add rtt feature
+ boards: add support for i-nucleo-lrwan1 (Arduino-like shield)
+ boards/nrf52840-mdk: added I2C config
+ boards/lsn50: add support for Dragino LSN50 LoRa Sensor Node
* boards/stm32l0: introduce common clock configuration and apply it to
related boards
* boards/b-l072z-lrwan1: use STM32 common i2C configuration
+ Add usbdev feature to Sodaq boards
+ boards/pba-d-01-kw2x: add riotboot support
+ sensebox: add usbdev feature
+ boards/stm32f429i-disc1: add i2c configuration
+ boards/nucleo-l476rg: add riotboot
+ boards/same54-xpro: add riotboot support
+ boards: Add FLASHFILE support
+ boards/nucleo-l476rg: Add DMA support
+ nrf52: Add suspend/resume detection to usbdev
+ nrf5x: Add UART modecfg feature implementation
+ boards/stm32f3: add support for riotboot feature
+ boards/lobaro-lorabox: add sx1272 radio driver dependency
to netdev_default
+ boards/stm32l4: add riotboot support
+ boards/microbit: add QEMU emulation
+ boards/frdm-kw41z-k64f: add riotboot
* boards/sltb001a: reset before flashing
</code></pre></div>
<h2>CPU</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* cpu/esp8266: added/changed helper functions
+ cpu/cc2538: Add periph_uart_mode implementation
* saml1x: enable pm_layered by default
+ cpu/cc26x0: implement uart_mode()
+ cpu/sam0: add support for SAMD5x/SAME5x
+ sam0_common: add uart modecfg support
+ cpu/stm32f3: add support for flashpage and flashpage_raw
* cpu/stm32l{1,4}: refactor flashpage numof macros
* cpu/stm32: optimize stop mode for stm32f*
* cpu/nrf5x_common: map hwrng to SoC library if SoftDevice is present"><pre class="notranslate"><code>* cpu/esp8266: added/changed helper functions
+ cpu/cc2538: Add periph_uart_mode implementation
* saml1x: enable pm_layered by default
+ cpu/cc26x0: implement uart_mode()
+ cpu/sam0: add support for SAMD5x/SAME5x
+ sam0_common: add uart modecfg support
+ cpu/stm32f3: add support for flashpage and flashpage_raw
* cpu/stm32l{1,4}: refactor flashpage numof macros
* cpu/stm32: optimize stop mode for stm32f*
* cpu/nrf5x_common: map hwrng to SoC library if SoftDevice is present
</code></pre></div>
<h2>Device Drivers</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="+ devfs: add /dev/urandom and /dev/hwrng
* drivers/mrf24j40 : support of NETOPT_LAST_ED_LEVEL
+ drivers/mrf24j40: add external PA/LNA control on MC/MD/ME devices
* drivers/at86rf2xx: enable NETOPT_RX_END_IRQ and fix RSSI values
* drivers/adt7310: Replace binary literal with hex literal
+ drivers/ds75lx: add basic driver for temperature sensor
+ drivers/include: add header definition for wdt
+ drivers/at: Add 'at_recv_bytes_until_string' function
+ sx127x: add several NETOPT for GNRC LoRaWAN
* drivers/sx127x: fix device reset
+ drivers: stm32 eth peripheral driver
+ drivers/periph/gpio_util: add gpio_util_shiftin()"><pre class="notranslate"><code>+ devfs: add /dev/urandom and /dev/hwrng
* drivers/mrf24j40 : support of NETOPT_LAST_ED_LEVEL
+ drivers/mrf24j40: add external PA/LNA control on MC/MD/ME devices
* drivers/at86rf2xx: enable NETOPT_RX_END_IRQ and fix RSSI values
* drivers/adt7310: Replace binary literal with hex literal
+ drivers/ds75lx: add basic driver for temperature sensor
+ drivers/include: add header definition for wdt
+ drivers/at: Add 'at_recv_bytes_until_string' function
+ sx127x: add several NETOPT for GNRC LoRaWAN
* drivers/sx127x: fix device reset
+ drivers: stm32 eth peripheral driver
+ drivers/periph/gpio_util: add gpio_util_shiftin()
</code></pre></div>
<h2>Build System / Tooling</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* makefiles/docker: export BOARDS
+ makefiles: add bootloaders to the list of applications
* Makefile.include: allow overwriting flash-recipe
* dist/tools/buildsystem_sanity_check: add an export variable check
* sys/Makefile.include: include riotboot headers when
FEATURES_REQUIRED=riotboot
+ make: add print-versions helper target
+ make: add LOG_LEVEL to overridable variables
* riotboot/Makefile.include: increase RIOTBOOT_HDR_LEN for ARMv7*-M
* dist/tools/build_system_sanity_check: BUG fix errors being ignored
* boards/common: use Makefile.features
+ make: add termdeps target
* periph_common: add as dependency to periph drivers
+ nrf52: Add USB peripheral driver
+ makefiles/boards.inc.mk: list boards variables
+ makefiles/app_dirs.inc.mk: target to list supported applications/boards
+ Makefile.features: add a common file for the features parsing
+ Makefile.features: add declarative FEATURES_ variables definition
+ makefiles/utils/variables: add functions to help managing variables
* Migrate all boards to define FLASHFILE
* tools/openocd.sh: try to probe the board for real flash address"><pre class="notranslate"><code>* makefiles/docker: export BOARDS
+ makefiles: add bootloaders to the list of applications
* Makefile.include: allow overwriting flash-recipe
* dist/tools/buildsystem_sanity_check: add an export variable check
* sys/Makefile.include: include riotboot headers when
FEATURES_REQUIRED=riotboot
+ make: add print-versions helper target
+ make: add LOG_LEVEL to overridable variables
* riotboot/Makefile.include: increase RIOTBOOT_HDR_LEN for ARMv7*-M
* dist/tools/build_system_sanity_check: BUG fix errors being ignored
* boards/common: use Makefile.features
+ make: add termdeps target
* periph_common: add as dependency to periph drivers
+ nrf52: Add USB peripheral driver
+ makefiles/boards.inc.mk: list boards variables
+ makefiles/app_dirs.inc.mk: target to list supported applications/boards
+ Makefile.features: add a common file for the features parsing
+ Makefile.features: add declarative FEATURES_ variables definition
+ makefiles/utils/variables: add functions to help managing variables
* Migrate all boards to define FLASHFILE
* tools/openocd.sh: try to probe the board for real flash address
</code></pre></div>
<h2>Testing</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="* tests/periph_flashpage: add RWWEE automatic test if hw supports it
* tests/pthread_tls: allow negative key values
* tests/gnrc_udp: include `gnrc_pktbuf_cmd` per default
+ tests/periph_hwrng: add automated python test
* tests/periph_timer: include kw41z boards in low-power timer boards
* tests/pkg_c25519: increase timeout for arduino-mega2560
+ tests/xtimer_usleep: fail with negative offsets
+ unittests: add tsrb tests
+ tests/stdin: add non regression test for stdin module
+ tests/xtimer_mutex_lock_timeout: add simple case test
+ Add NimBLE heart rate sensor example (GATT notifications)
* tests/driver_rn2xx3: fix invalid element index for txmode
* tests/pkg_semtech-loramac: don't init the mac from main
* tests/devfs: move tests-devfs out of unittests
+ examples/lorawan: fix semtech_loramac_send TX ret code
* tests/unittests: split remaining packages tests to different test
directory"><pre class="notranslate"><code>* tests/periph_flashpage: add RWWEE automatic test if hw supports it
* tests/pthread_tls: allow negative key values
* tests/gnrc_udp: include `gnrc_pktbuf_cmd` per default
+ tests/periph_hwrng: add automated python test
* tests/periph_timer: include kw41z boards in low-power timer boards
* tests/pkg_c25519: increase timeout for arduino-mega2560
+ tests/xtimer_usleep: fail with negative offsets
+ unittests: add tsrb tests
+ tests/stdin: add non regression test for stdin module
+ tests/xtimer_mutex_lock_timeout: add simple case test
+ Add NimBLE heart rate sensor example (GATT notifications)
* tests/driver_rn2xx3: fix invalid element index for txmode
* tests/pkg_semtech-loramac: don't init the mac from main
* tests/devfs: move tests-devfs out of unittests
+ examples/lorawan: fix semtech_loramac_send TX ret code
* tests/unittests: split remaining packages tests to different test
directory
</code></pre></div>
<h1>API Changes</h1>
<ul>
<li>uart_stdio RX is now optional</li>
<li>CPU_MODEL declared in boards/Makefile.features</li>
</ul>
<div class="highlight highlight-source-c notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="- void isrpipe_init(isrpipe_t *isrpipe, char *buf, size_t bufsize);
+ void isrpipe_init(isrpipe_t *isrpipe, uint8_t *buf, size_t bufsize);
- int isrpipe_write_one(isrpipe_t *isrpipe, char c);
+ int isrpipe_write_one(isrpipe_t *isrpipe, uint8_t c);
- int isrpipe_read(isrpipe_t *isrpipe, char *buf, size_t count);
+ int isrpipe_read(isrpipe_t *isrpipe, uint8_t *buf, size_t count);
- int isrpipe_read_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
int32_t timeout);
+ int isrpipe_read_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
uint32_t timeout);
- int isrpipe_read_all_timeout(isrpipe_t *isrpipe, char *buf, size_t count,\
uint32_t timeout);
+ int isrpipe_read_all_timeout(isrpipe_t *isrpipe, uint8_t *buf, size_t count,\
uint32_t timeout);
typedef struct tsrb {
...
- char *buf; /**< Buffer to operate on. */
+ uint8_t *buf; /**< Buffer to operate on. */
...
} tsrb_t
- int tsrb_get(tsrb_t *rb, char *dst, size_t n);
+ int tsrb_get(tsrb_t *rb, uint8_t *dst, size_t n);
- int tsrb_add_one(tsrb_t *rb, char c);
+ int tsrb_add_one(tsrb_t *rb, uint8_t c);
- int tsrb_add(tsrb_t *rb, const char *src, size_t n);
+ int tsrb_add(tsrb_t *rb, const uint8_t *src, size_t n);
typedef struct {
...
- uint16_t (*calc_rank)(gnrc_rpl_parent_t *parent, uint16_t base_rank);
- gnrc_rpl_parent_t *(*which_parent)(gnrc_rpl_parent_t *, gnrc_rpl_parent_t *);
+ uint16_t (*calc_rank)(gnrc_rpl_dodag_t *dodag, uint16_t base_rank);
- void (*reset)(gnrc_rpl_dodag_t *); /**< resets the OF */
+ void (*reset)(gnrc_rpl_dodag_t *dodag);
...
- void (*init)(void); /**< OF specific init function */
+ void (*init)(gnrc_rpl_dodag_t *dodag);
} gnrc_rpl_of_t;
- thread_state_t
+ thread_status_t
- void sched_set_status(thread_t *process, thread_state_t status);
+ void sched_set_status(thread_t *process, thread_status_t status);
struct _thread {
...
- thread_state_t status;
+ thread_status_t status;
...
}
- bool mrf24j40_cca(mrf24j40_t *dev);
+ bool mrf24j40_cca(mrf24j40_t *dev, int8_t *rssi);"><pre><span class="pl-c1">-</span> <span class="pl-s1">void</span> <span class="pl-en">isrpipe_init</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">bufsize</span>);
<span class="pl-c1">+</span> <span class="pl-s1">void</span> <span class="pl-en">isrpipe_init</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">bufsize</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_write_one</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">char</span> <span class="pl-s1">c</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_write_one</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">uint8_t</span> <span class="pl-s1">c</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read_timeout</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>,\
<span class="pl-s1">int32_t</span> <span class="pl-s1">timeout</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read_timeout</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>,\
<span class="pl-s1">uint32_t</span> <span class="pl-s1">timeout</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read_all_timeout</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>,\
<span class="pl-s1">uint32_t</span> <span class="pl-s1">timeout</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">isrpipe_read_all_timeout</span>(<span class="pl-s1">isrpipe_t</span> <span class="pl-c1">*</span><span class="pl-s1">isrpipe</span>, <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">buf</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">count</span>,\
<span class="pl-s1">uint32_t</span> <span class="pl-s1">timeout</span>);
<span class="pl-k">typedef</span> <span class="pl-k">struct</span> <span class="pl-smi">tsrb</span> {
...
<span class="pl-c1">-</span> <span class="pl-smi">char</span> <span class="pl-c1">*</span><span class="pl-c1">buf</span>; <span class="pl-c">/**< Buffer to operate on. */</span>
<span class="pl-c1">+</span> <span class="pl-smi">uint8_t</span> <span class="pl-c1">*</span><span class="pl-c1">buf</span>; <span class="pl-c">/**< Buffer to operate on. */</span>
...
} <span class="pl-smi">tsrb_t</span>
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_get</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">dst</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">n</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_get</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">dst</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">n</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_add_one</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">char</span> <span class="pl-s1">c</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_add_one</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">uint8_t</span> <span class="pl-s1">c</span>);
<span class="pl-c1">-</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_add</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">const</span> <span class="pl-s1">char</span> <span class="pl-c1">*</span><span class="pl-s1">src</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">n</span>);
<span class="pl-c1">+</span> <span class="pl-s1">int</span> <span class="pl-en">tsrb_add</span>(<span class="pl-s1">tsrb_t</span> <span class="pl-c1">*</span><span class="pl-s1">rb</span>, <span class="pl-s1">const</span> <span class="pl-s1">uint8_t</span> <span class="pl-c1">*</span><span class="pl-s1">src</span>, <span class="pl-s1">size_t</span> <span class="pl-s1">n</span>);
<span class="pl-k">typedef</span> <span class="pl-k">struct</span> {
...
<span class="pl-c1">-</span> <span class="pl-smi">uint16_t</span> (<span class="pl-c1">*</span><span class="pl-c1">calc_rank</span>)(<span class="pl-smi">gnrc_rpl_parent_t</span> <span class="pl-c1">*</span><span class="pl-s1">parent</span>, <span class="pl-smi">uint16_t</span> <span class="pl-s1">base_rank</span>);
<span class="pl-c1">-</span> <span class="pl-smi">gnrc_rpl_parent_t</span> <span class="pl-c1">*</span>(<span class="pl-c1">*</span><span class="pl-c1">which_parent</span>)(<span class="pl-smi">gnrc_rpl_parent_t</span> <span class="pl-c1">*</span>, <span class="pl-smi">gnrc_rpl_parent_t</span> <span class="pl-c1">*</span>);
<span class="pl-c1">+</span> <span class="pl-smi">uint16_t</span> (<span class="pl-c1">*</span><span class="pl-c1">calc_rank</span>)(<span class="pl-smi">gnrc_rpl_dodag_t</span> <span class="pl-c1">*</span><span class="pl-s1">dodag</span>, <span class="pl-smi">uint16_t</span> <span class="pl-s1">base_rank</span>);
<span class="pl-c1">-</span> <span class="pl-smi">void</span> (<span class="pl-c1">*</span><span class="pl-c1">reset</span>)(<span class="pl-smi">gnrc_rpl_dodag_t</span> <span class="pl-c1">*</span>); <span class="pl-c">/**< resets the OF */</span>
<span class="pl-c1">+</span> <span class="pl-smi">void</span> (<span class="pl-c1">*</span><span class="pl-c1">reset</span>)(<span class="pl-smi">gnrc_rpl_dodag_t</span> <span class="pl-c1">*</span><span class="pl-s1">dodag</span>);
...
<span class="pl-c1">-</span> <span class="pl-smi">void</span> (<span class="pl-c1">*</span><span class="pl-c1">init</span>)(<span class="pl-smi">void</span>); <span class="pl-c">/**< OF specific init function */</span>
<span class="pl-c1">+</span> <span class="pl-smi">void</span> (<span class="pl-c1">*</span><span class="pl-c1">init</span>)(<span class="pl-smi">gnrc_rpl_dodag_t</span> <span class="pl-c1">*</span><span class="pl-s1">dodag</span>);
} <span class="pl-smi">gnrc_rpl_of_t</span>;
<span class="pl-c1">-</span> <span class="pl-s1">thread_state_t</span>
<span class="pl-c1">+</span> <span class="pl-s1">thread_status_t</span>
<span class="pl-c1">-</span> <span class="pl-s1">void</span> <span class="pl-en">sched_set_status</span>(<span class="pl-s1">thread_t</span> <span class="pl-c1">*</span><span class="pl-s1">process</span>, <span class="pl-s1">thread_state_t</span> <span class="pl-s1">status</span>);
<span class="pl-c1">+</span> <span class="pl-s1">void</span> <span class="pl-en">sched_set_status</span>(<span class="pl-s1">thread_t</span> <span class="pl-c1">*</span><span class="pl-s1">process</span>, <span class="pl-s1">thread_status_t</span> <span class="pl-s1">status</span>)<span class="pl-c1"></span>;
<span class="pl-k">struct</span> <span class="pl-smi">_thread</span> {
...
<span class="pl-c1">-</span> <span class="pl-smi">thread_state_t</span> <span class="pl-c1">status</span>;
<span class="pl-c1">+</span> <span class="pl-smi">thread_status_t</span> <span class="pl-c1">status</span>;
...
}
<span class="pl-c1">-</span> <span class="pl-s1">bool</span> <span class="pl-en">mrf24j40_cca</span>(<span class="pl-smi">mrf24j40_t</span> <span class="pl-c1">*</span><span class="pl-s1">dev</span>);
<span class="pl-c1">+</span> <span class="pl-s1">bool</span> <span class="pl-en">mrf24j40_cca</span>(<span class="pl-s1">mrf24j40_t</span> <span class="pl-c1">*</span><span class="pl-s1">dev</span>, <span class="pl-s1">int8_t</span> <span class="pl-c1">*</span><span class="pl-s1">rssi</span>);</pre></div>
<h1>Deprecations</h1>
<h2>Warnings</h2>
<p><code>gnrc_tftp</code> module<br>
<code>ubjson</code> module</p>
<h2>Removals</h2>
<p><code>gcoap_req_send()</code> replaced with <code>gcoap_req_send2()->gcoap_req_send2()</code></p>
<h1>Known issues</h1>
<h2>Networking related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" address
assertion or completely without error
configured prefix
chars
address"><pre class="notranslate"><code> address
assertion or completely without error
configured prefix
chars
address
</code></pre></div>
<h2>Timer related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" time.
_xtimer_now() and irq_disable()"><pre class="notranslate"><code> time.
_xtimer_now() and irq_disable()
</code></pre></div>
<h2>Drivers related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" clock cycles
R21
supported"><pre class="notranslate"><code> clock cycles
R21
supported
</code></pre></div>
<h2>Native related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" log_printfnoformat"><pre class="notranslate"><code> log_printfnoformat
</code></pre></div>
<h2>Other platforms related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" (not previous)
boards
CS
LTO
types"><pre class="notranslate"><code> (not previous)
boards
CS
LTO
types
</code></pre></div>
<h2>Build system related issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" bionic`.
evaluation
image
Makefile.include
value"><pre class="notranslate"><code> bionic`.
evaluation
image
Makefile.include
value
</code></pre></div>
<ul>
<li>buildtest with BUILD_IN_DOCKER hides host toolchain errors</li>
</ul>
<h2>Other issues</h2>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" optimization
in udp.c
10
static_asserts in the same scope
everywhere"><pre class="notranslate"><code> optimization
in udp.c
10
static_asserts in the same scope
everywhere
</code></pre></div>
<h1>Fixed Issues from the last release (2019.04)</h1>
<div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content=" and no error"><pre class="notranslate"><code> and no error
</code></pre></div>
<h1>Acknowledgements</h1>
<p>We would like to thank all companies that provided us with hardware for porting<br>
and testing RIOT-OS. Further thanks go to companies and institutions that<br>
directly sponsored development time. And finally, big thanks to all of you<br>
contributing in so many different ways to make RIOT worthwhile!<br>
A special thanks to <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/fjmolinas/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/fjmolinas">@fjmolinas</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/leandrolanzieri/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/leandrolanzieri">@leandrolanzieri</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/cladmi/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/cladmi">@cladmi</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/jia200x/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/jia200x">@jia200x</a>, <a class="user-mention notranslate" data-hovercard-type="user" data-hovercard-url="/users/miri64/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="https://github.com/miri64">@miri64</a><br>
for helping run the release tests</p>
<h1>More information</h1>
<p><a href="http://www.riot-os.org" rel="nofollow">http://www.riot-os.org</a></p>
<h2>Mailing lists</h2>
<ul>
<li>RIOT OS kernel developers list<br>
<a href="mailto:devel@riot-os.org">devel@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/devel" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/devel</a>)</li>
<li>RIOT OS users list<br>
<a href="mailto:users@riot-os.org">users@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/users" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/users</a>)</li>
<li>RIOT commits<br>
<a href="mailto:commits@riot-os.org">commits@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/commits" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/commits</a>)</li>
<li>Github notifications<br>
<a href="mailto:notifications@riot-os.org">notifications@riot-os.org</a> (<a href="http://lists.riot-os.org/mailman/listinfo/notifications" rel="nofollow">http://lists.riot-os.org/mailman/listinfo/notifications</a>)</li>
</ul>
<h2>IRC</h2>
<ul>
<li>Join the RIOT IRC channel at: irc.freenode.net, #riot-os</li>
</ul>
<h1>License</h1>
<ul>
<li>The code developed by the RIOT community is licensed under the GNU Lesser<br>
General Public License (LGPL) version 2.1 as published by the Free Software<br>
Foundation.</li>
<li>Some external sources and packages are published under a separate license.</li>
</ul>
<p>All code files contain licensing information.</p>MrKevinWeisstag:github.com,2008:Repository/235600603/2019.07-RC32019-07-19T13:06:00Z2019.07-RC3<p>Merge pull request <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="470300372" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/11873" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/11873/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/11873">RIOT-OS#11873</a> from fjmolinas/backport/2019.07/pr_lorawan_…</p>leandrolanzieritag:github.com,2008:Repository/235600603/2019.07-RC22019-07-17T17:51:30Z2019.07-RC2<p>Merge pull request <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="469277685" data-permission-text="Title is private" data-url="https://github.com/RIOT-OS/RIOT/issues/11858" data-hovercard-type="pull_request" data-hovercard-url="/RIOT-OS/RIOT/pull/11858/hovercard" href="https://github.com/RIOT-OS/RIOT/pull/11858">RIOT-OS#11858</a> from cladmi/backport/2019.07/pr/tests/unitt…</p>miri64