Merge pull request #14609 from fjmolinas/pr_openwsn_bump

pkg/openwsn: bump version
This commit is contained in:
Kaspar Schleiser 2020-08-11 16:25:36 +02:00 committed by GitHub
commit 377d389ce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 635 additions and 389 deletions

View File

@ -10,7 +10,7 @@
# Not all logs for openvisualizer are piped to the terminal, more detailed logs # Not all logs for openvisualizer are piped to the terminal, more detailed logs
# are stored in $(BINDIR)/openv-server.log # are stored in $(BINDIR)/openv-server.log
# #
# More info at https://github.com/fjmolinas/openvisualizer/blob/develop_SW-318-RIOT/README.md # More info at https://github.com/fjmolinas/openvisualizer/blob/develop-RIOT/README.md
# #
# Supported: # Supported:
# * openv-term # * openv-term
@ -24,7 +24,7 @@
# ------------- # -------------
# #
# * Install openvisualizer: # * Install openvisualizer:
# * git clone -b develop_SW-318-RIOT https://github.com/fjmolinas/openvisualizer.git # * git clone -b develop-RIOT https://github.com/fjmolinas/openvisualizer.git
# * cd openvisualizer # * cd openvisualizer
# * pip2 install . # * pip2 install .
# #

View File

@ -1,6 +1,6 @@
PKG_NAME=openwsn PKG_NAME=openwsn
PKG_URL=https://github.com/openwsn-berkeley/openwsn-fw.git PKG_URL=https://github.com/openwsn-berkeley/openwsn-fw.git
PKG_VERSION=cbcf622bd9369fcfc8455a5fb9349de2ed3c3a46 PKG_VERSION=4e58c93dc76d8c5c5c4b8dfebdd955feaf605e74
PKG_LICENSE=BSD-3-Clause PKG_LICENSE=BSD-3-Clause
include $(RIOTBASE)/pkg/pkg.mk include $(RIOTBASE)/pkg/pkg.mk
@ -8,10 +8,14 @@ include $(RIOTBASE)/pkg/pkg.mk
# openwsn_% RIOT Modules or PSEUDOMODULES that don't have custom rules # openwsn_% RIOT Modules or PSEUDOMODULES that don't have custom rules
IGNORE_MODULES := openwsn_leds \ IGNORE_MODULES := openwsn_leds \
openwsn_debugpins \ openwsn_debugpins \
openwsn_6lo_frag \
openwsn_icmpv6_echo \
openwsn_iee802154e_security \
openwsn_radio \ openwsn_radio \
openwsn_serial \ openwsn_serial \
openwsn_sctimer% \ openwsn_sctimer \
openwsn_cryptoengine \ openwsn_sctimer_rtt \
openwsn_sctimer_ztimer \
# #
OPENWSN_MODULES := $(filter-out $(IGNORE_MODULES),$(filter openwsn_%,$(USEMODULE))) OPENWSN_MODULES := $(filter-out $(IGNORE_MODULES),$(filter openwsn_%,$(USEMODULE)))
@ -34,10 +38,12 @@ CFLAGS += -DLOG_LEVEL=$(OPENWSN_LOG_LEVEL)
OPENWSN_PATH_openstack = openstack OPENWSN_PATH_openstack = openstack
OPENWSN_PATH_openapps = openapps OPENWSN_PATH_openapps = openapps
OPENWSN_PATH_openweb = openweb
OPENWSN_PATH_drivers = drivers/common OPENWSN_PATH_drivers = drivers/common
OPENWSN_PATH_crypto = drivers/common/crypto
OPENWSN_PATH_scheduler = kernel/openos OPENWSN_PATH_scheduler = kernel/openos
OPENWSN_PATH_cjoin = openapps/cjoin OPENWSN_PATH_cjoin = openapps/cjoin
OPENWSN_PATH_opencoap = openapps/opencoap OPENWSN_PATH_opencoap = openweb/opencoap
OPENWSN_PATH_mac_low = openstack/02a-MAClow OPENWSN_PATH_mac_low = openstack/02a-MAClow
OPENWSN_PATH_mac_high = openstack/02b-MAChigh OPENWSN_PATH_mac_high = openstack/02b-MAChigh
OPENWSN_PATH_iphc = openstack/03a-IPHC OPENWSN_PATH_iphc = openstack/03a-IPHC

View File

@ -1,5 +1,4 @@
ifneq (,$(filter openwsn_openstack,$(USEMODULE))) ifneq (,$(filter openwsn_openstack,$(USEMODULE)))
USEMODULE += openwsn_cjoin
USEMODULE += openwsn_iphc USEMODULE += openwsn_iphc
USEMODULE += openwsn_ipv6 USEMODULE += openwsn_ipv6
USEMODULE += openwsn_mac_low USEMODULE += openwsn_mac_low
@ -11,24 +10,29 @@ ifneq (,$(filter openwsn_openstack,$(USEMODULE)))
USEMODULE += openwsn_sctimer USEMODULE += openwsn_sctimer
USEMODULE += openwsn_radio USEMODULE += openwsn_radio
USEMODULE += openwsn_openweb
USEMODULE += openwsn_openapps
DEFAULT_MODULE += auto_init_openwsn DEFAULT_MODULE += auto_init_openwsn
USEMODULE += luid USEMODULE += luid
USEMODULE += netdev_default USEMODULE += netdev_default
endif endif
ifneq (,$(filter openwsn_ipv6,$(USEMODULE)))
DEFAULT_MODULE += openwsn_icmpv6_echo
endif
ifneq (,$(filter openwsn_scheduler,$(USEMODULE))) ifneq (,$(filter openwsn_scheduler,$(USEMODULE)))
USEMODULE += core_thread_flags USEMODULE += core_thread_flags
endif endif
ifneq (,$(filter openwsn_cjoin,$(USEMODULE))) ifneq (,$(filter openwsn_cjoin,$(USEMODULE)))
USEMODULE += openwsn_openapps
USEMODULE += openwsn_opencoap USEMODULE += openwsn_opencoap
USEMODULE += openwsn_crypto
USEMODULE += openwsn_cryptoengine
endif endif
ifneq (,$(filter openwsn_cryptoengine,$(USEMODULE))) ifneq (,$(filter openwsn_crypto,$(USEMODULE)))
USEMODULE += crypto_3des USEMODULE += crypto_3des
USEMODULE += cipher_modes USEMODULE += cipher_modes
endif endif

View File

@ -2,6 +2,7 @@ INCLUDES += -I$(PKGDIRBASE)/openwsn \
-I$(PKGDIRBASE)/openwsn/kernel \ -I$(PKGDIRBASE)/openwsn/kernel \
-I$(PKGDIRBASE)/openwsn/inc \ -I$(PKGDIRBASE)/openwsn/inc \
-I$(PKGDIRBASE)/openwsn/drivers/common \ -I$(PKGDIRBASE)/openwsn/drivers/common \
-I$(PKGDIRBASE)/openwsn/drivers/common/crypto \
-I$(PKGDIRBASE)/openwsn/bsp/boards/ \ -I$(PKGDIRBASE)/openwsn/bsp/boards/ \
-I$(PKGDIRBASE)/openwsn/openstack/ \ -I$(PKGDIRBASE)/openwsn/openstack/ \
-I$(PKGDIRBASE)/openwsn/openstack/02a-MAClow \ -I$(PKGDIRBASE)/openwsn/openstack/02a-MAClow \
@ -12,17 +13,54 @@ INCLUDES += -I$(PKGDIRBASE)/openwsn \
-I$(PKGDIRBASE)/openwsn/openstack/cross-layers \ -I$(PKGDIRBASE)/openwsn/openstack/cross-layers \
-I$(PKGDIRBASE)/openwsn/openapps \ -I$(PKGDIRBASE)/openwsn/openapps \
-I$(PKGDIRBASE)/openwsn/openapps/cjoin \ -I$(PKGDIRBASE)/openwsn/openapps/cjoin \
-I$(PKGDIRBASE)/openwsn/openapps/opencoap \ -I$(PKGDIRBASE)/openwsn/openweb \
-I$(PKGDIRBASE)/openwsn/openweb/opencoap \
-I$(RIOTBASE)/pkg/openwsn/include \ -I$(RIOTBASE)/pkg/openwsn/include \
DIRS += $(RIOTBASE)/pkg/openwsn/contrib DIRS += $(RIOTBASE)/pkg/openwsn/contrib
PSEUDOMODULES += openwsn_serial PSEUDOMODULES += openwsn_serial \
PSEUDOMODULES += openwsn_debugpins openwsn_debugpins \
PSEUDOMODULES += openwsn_leds openwsn_6lo_frag \
PSEUDOMODULES += openwsn_sctimer% openwsn_icmpv6_echo \
PSEUDOMODULES += openwsn_cryptoengine openwsn_iee802154e_security \
PSEUDOMODULES += openwsn_radio openwsn_leds \
openwsn_sctimer \
openwsn_sctimer_rtt \
openwsn_sctimer_ztimer \
openwsn_radio \
#
# Set OpenWSN configurations flags, see $(PKG_SOURCE_DIR)/openwsn-fw/inc/config.h
ifneq (,$(filter openwsn_cjoin,$(USEMODULE)))
CFLAGS += -DOPENWSN_CJOIN_C
CFLAGS += -DBOARD_CRYPTOENGINE_ENABLED
endif
ifneq (,$(filter openwsn_transport,$(USEMODULE)))
CFLAGS += -DOPENWSN_UDP_C
endif
ifneq (,$(filter openwsn_opencoap,$(USEMODULE)))
CFLAGS += -DOPENWSN_COAP_C
endif
ifneq (,$(filter openwsn_6lo_frag,$(USEMODULE)))
CFLAGS += -DOPENWSN_6LO_FRAGMENTATION_C
endif
ifneq (,$(filter openwsn_icmpv6_echo,$(USEMODULE)))
CFLAGS += -DOPENWSN_ICMPV6ECHO_C
endif
ifneq (,$(filter openwsn_iee802154e_security,$(USEMODULE)))
CFLAGS += -DOPENWSN_IEEE802154E_SECURITY_C
endif
ifneq (,$(filter openwsn_adaptive_msf,$(USEMODULE)))
CFLAGS += -DOPENWSN_ADAPTIVE_MSF
endif
# In OpenWSN the ISR stack is shared with the network stack. OpenWSN stack is # In OpenWSN the ISR stack is shared with the network stack. OpenWSN stack is
# 2Kb, this means that the ISR stack in OpenWSN might have up to 2Kb available. # 2Kb, this means that the ISR stack in OpenWSN might have up to 2Kb available.
@ -36,5 +74,5 @@ ifneq (,$(filter at86rf2xx,$(USEMODULE)))
CFLAGS += -DAT86RF2XX_BASIC_MODE CFLAGS += -DAT86RF2XX_BASIC_MODE
endif endif
# LLVM ARM shows issues with missing definitions fot stdatomic # LLVM ARM shows issues with missing definitions for stdatomic
TOOLCHAINS_BLACKLIST += llvm TOOLCHAINS_BLACKLIST += llvm

View File

@ -37,7 +37,8 @@
[constrained join protocol](https://datatracker.ietf.org/doc/draft-ietf-6tisch-minimal-security/) [constrained join protocol](https://datatracker.ietf.org/doc/draft-ietf-6tisch-minimal-security/)
an the stack itself only handles Join Requests. The JRC (join registrar/coordinator, an the stack itself only handles Join Requests. The JRC (join registrar/coordinator,
a central entity) is not running on the root node, but alongside it, in the a central entity) is not running on the root node, but alongside it, in the
`OpenVisualizer` external tool. `OpenVisualizer` external tool. This functionality is now optional but can be
included through the `openwsn_cjoin` module.
Once joined the device has the required keys to start listening to DIS (DODAG Once joined the device has the required keys to start listening to DIS (DODAG
Information Solicitation) messages and to send DIO (DODAG Information Object) Information Solicitation) messages and to send DIO (DODAG Information Object)
@ -246,6 +247,9 @@
and `SLOTFRAME_LENGTH` are not configurable by default so need to be overridden and `SLOTFRAME_LENGTH` are not configurable by default so need to be overridden
with `CFLAGS`. with `CFLAGS`.
See [Tune parameters in OpenWSN](https://openwsn.atlassian.net/wiki/spaces/OW/pages/132055073/Tune+parameters+in+OpenWSN)
for more details.
### Timing ### Timing
Timing is essential for OpenWSN to work properly. For optimal results most Timing is essential for OpenWSN to work properly. For optimal results most
@ -278,6 +282,17 @@
The default configuration maps to OpenWSN reference hardware `openmote-b`. The default configuration maps to OpenWSN reference hardware `openmote-b`.
## Optional Modules and Features
The following modules are optional and can be disabled if not needed, or to
lower the stack footprint.
- `openwsn_cjoin`: this enabled the use of Constrained Join Protocol (CoJP)
- `openwsn_6lo_frag`: this enable 6LoWPAN fragmentation
- `openwsn_iee802154e_security`: enable link layer security
- `openwsn_adaptive_msf`: allow the MSF algorithm to dynamically remove and
allocate slots
## Testing and debugging ## Testing and debugging
List of some items which are helpful to explore the functionality of OpenWSN: List of some items which are helpful to explore the functionality of OpenWSN:
@ -405,13 +420,9 @@ critical sections. This can cause bytes sent over stdio to be missed.
## Future Steps ## Future Steps
The OpenWSN community is working on refactoring their code base. As It would be desirable to achieve an extraction of the MAC layer.
one of the outputs of this modules like `cjoin`, `udp`, `coap` will become
optional. Once this is upstream the support for this pkg should be adapted.
With above mentioned re-works the extraction of the MAC layer might be favored. Immediate future steps:
As more immediate future steps:
- Follow up PR to add OpenWSN sock - Follow up PR to add OpenWSN sock
- Complete support of OpenWSN default HW (`openmote-b`) - Complete support of OpenWSN default HW (`openmote-b`)

View File

@ -0,0 +1,97 @@
/*
* Copyright (C) 2015 Kaspar Schleiser <kaspar@schleiser.de>
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup pkg_openwsn
* @{
*
* @file
* @brief System logging header OpenWSN definitions
*
* This header implements the same functionality as log.h but avoiding
* macro redefinitions with OpenWSN LOG_% functions.
*
* @author Kaspar Schleiser <kaspar@schleiser.de>
*/
#ifndef OPENWSN_LOG_H
#define OPENWSN_LOG_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief defined log levels
*
* These are the logging levels a user can choose.
* The idea is to set LOG_LEVEL to one of these values in the application's Makefile.
* That will restrict output of log statements to those with equal or lower log level.
*
* The default log level is LOG_INFO, which will print every message.
*
* The log function calls of filtered messages will be optimized out at compile
* time, so a lower log level might result in smaller code size.
*/
enum {
LOG_NONE, /**< Lowest log level, will output nothing */
LOG_ERROR, /**< Error log level, will print only critical,
non-recoverable errors like hardware initialization
failures */
LOG_WARNING, /**< Warning log level, will print warning messages for
temporary errors */
LOG_INFO, /**< Informational log level, will print purely
informational messages like successful system bootup,
network link state, ...*/
LOG_DEBUG, /**< Debug log level, printing developer stuff considered
too verbose for production use */
LOG_ALL /**< print everything */
};
#ifndef LOG_LEVEL
/**
* @brief Default log level define
*/
#define LOG_LEVEL LOG_INFO
#endif
/**
* @brief Log message if level <= LOG_LEVEL
*/
#ifdef __clang__ /* following pragmas required for clang 3.8.0 */
#define LOG(level, ...) do { \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wtautological-compare\"") \
if ((level) <= LOG_LEVEL) log_write((level), __VA_ARGS__); } while (0U) \
_Pragma("clang diagnostic pop")
#else
#define LOG(level, ...) do { \
if ((level) <= LOG_LEVEL) log_write((level), __VA_ARGS__); } while (0U)
#endif /* __clang__ */
/**
* @name Logging convenience defines
* @{
*/
#define LOG_RIOT_ERROR(...) LOG(LOG_ERROR, __VA_ARGS__)
#define LOG_RIOT_WARNING(...) LOG(LOG_WARNING, __VA_ARGS__)
#define LOG_RIOT_INFO(...) LOG(LOG_INFO, __VA_ARGS__)
#define LOG_RIOT_DEBUG(...) LOG(LOG_DEBUG, __VA_ARGS__)
/** @} */
/**
* @brief Default log_write function, just maps to printf
*/
#define log_write(level, ...) printf(__VA_ARGS__)
#ifdef __cplusplus
}
#endif
#endif /* OPENWSN_LOG_H */
/** @} */

View File

@ -1,7 +1,7 @@
From 6f845cd8b8ea316307fd9ef6ab58127a26772f72 Mon Sep 17 00:00:00 2001 From f519ad22f9564aee46e860c50875a0d66adbb193 Mon Sep 17 00:00:00 2001
From: PeterKietzmann <peter.kietzmann@haw-hamburg.de> From: PeterKietzmann <peter.kietzmann@haw-hamburg.de>
Date: Thu, 8 Feb 2018 10:23:00 +0100 Date: Thu, 8 Feb 2018 10:23:00 +0100
Subject: [PATCH 01/11] bsp-kernel: include RIOT-OpenWSN board definitions Subject: [PATCH 01/10] bsp-kernel: include RIOT-OpenWSN board definitions
--- ---
bsp/boards/radio.h | 2 +- bsp/boards/radio.h | 2 +-

View File

@ -1,7 +1,7 @@
From 6fff6e0e31dbed9a603e4e1eab434c45e8b43861 Mon Sep 17 00:00:00 2001 From 4522c2b7cc03b96b23278953292a9b3c9bb0ee60 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl> From: Francisco Molina <femolina@uc.cl>
Date: Mon, 10 Feb 2020 15:05:07 +0100 Date: Mon, 10 Feb 2020 15:05:07 +0100
Subject: [PATCH 02/11] drivers/common/openserial: rename include for Subject: [PATCH 02/10] drivers/common/openserial: rename include for
RIOT-OpenWSN uart RIOT-OpenWSN uart
--- ---
@ -9,7 +9,7 @@ Subject: [PATCH 02/11] drivers/common/openserial: rename include for
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/common/openserial.c b/drivers/common/openserial.c diff --git a/drivers/common/openserial.c b/drivers/common/openserial.c
index d39634c1..5c3c0003 100644 index 27a30d24..2e417071 100644
--- a/drivers/common/openserial.c --- a/drivers/common/openserial.c
+++ b/drivers/common/openserial.c +++ b/drivers/common/openserial.c
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@

View File

@ -1,60 +0,0 @@
From 1b9c54459e882a2beb4cedbdbafbb299b95be9e8 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 27 Mar 2020 09:59:24 +0100
Subject: [PATCH 03/11] openapps: comment out unused COAP&UDP applications
includes
---
openapps/openapps.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/openapps/openapps.c b/openapps/openapps.c
index 3124d0c6..e30dcaec 100644
--- a/openapps/openapps.c
+++ b/openapps/openapps.c
@@ -8,18 +8,18 @@
// CoAP
#include "opencoap.h"
-#include "c6t.h"
-#include "cinfo.h"
-#include "cleds.h"
+// #include "c6t.h"
+// #include "cinfo.h"
+// #include "cleds.h"
#include "cjoin.h"
-#include "cwellknown.h"
-#include "rrt.h"
+// #include "cwellknown.h"
+// #include "rrt.h"
// UDP
-#include "uecho.h"
-#include "uinject.h"
-#include "userialbridge.h"
-#include "uexpiration.h"
-#include "uexpiration_monitor.h"
+// #include "uecho.h"
+// #include "uinject.h"
+// #include "userialbridge.h"
+// #include "uexpiration.h"
+// #include "uexpiration_monitor.h"
//=========================== variables =======================================
@@ -35,10 +35,10 @@ void openapps_init(void) {
// CoAP
//c6t_init();
- cinfo_init();
- cleds__init();
+ // cinfo_init();
+ // cleds__init();
cjoin_init();
- cwellknown_init();
+ // cwellknown_init();
//rrt_init();
// UDP
--
2.27.0

View File

@ -1,7 +1,7 @@
From a4a7bdb3504fe3e0f332170433e1e31f417f64fd Mon Sep 17 00:00:00 2001 From 462865cd89f6e970c7dbdd62cb66cee538be8f6c Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl> From: Francisco Molina <femolina@uc.cl>
Date: Fri, 27 Mar 2020 10:15:43 +0100 Date: Fri, 27 Mar 2020 10:15:43 +0100
Subject: [PATCH 04/11] openstack/02b-MAChigh/neighbors.c: expose Subject: [PATCH 03/10] openstack/02b-MAChigh/neighbors.c: expose
neighbors_vars neighbors_vars
--- ---
@ -9,7 +9,7 @@ Subject: [PATCH 04/11] openstack/02b-MAChigh/neighbors.c: expose
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openstack/02b-MAChigh/neighbors.c b/openstack/02b-MAChigh/neighbors.c diff --git a/openstack/02b-MAChigh/neighbors.c b/openstack/02b-MAChigh/neighbors.c
index a7de3394..4cfcf146 100644 index c947ab9e..eff3bb34 100644
--- a/openstack/02b-MAChigh/neighbors.c --- a/openstack/02b-MAChigh/neighbors.c
+++ b/openstack/02b-MAChigh/neighbors.c +++ b/openstack/02b-MAChigh/neighbors.c
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@

View File

@ -1,7 +1,7 @@
From 626dbbed27b4a66bcf02fe061d5af1bff2d1accd Mon Sep 17 00:00:00 2001 From 9854468048be9f3119ff76ec4545ba7bfb99f107 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl> From: Francisco Molina <femolina@uc.cl>
Date: Sun, 29 Mar 2020 12:11:53 +0200 Date: Sun, 29 Mar 2020 12:11:53 +0200
Subject: [PATCH 05/11] kernel/openos/scheduler: use thread flags, restore Subject: [PATCH 04/10] kernel/openos/scheduler: use thread flags, restore
irq_state irq_state
Use thread_flags_wait_any to pause the scheduler. Set flag in Use thread_flags_wait_any to pause the scheduler. Set flag in

View File

@ -1,7 +1,7 @@
From 251802a8050d6b619d2e70c33c6ada5b6e57d549 Mon Sep 17 00:00:00 2001 From e801ea1e88ea60d848c0ca9c1a2e7dab1a8a7d98 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl> From: Francisco Molina <femolina@uc.cl>
Date: Thu, 2 Apr 2020 16:04:29 +0200 Date: Thu, 2 Apr 2020 16:04:29 +0200
Subject: [PATCH 06/11] bsp/boards/toolchain_defs.h: comment out conflict ISR Subject: [PATCH 05/10] bsp/boards/toolchain_defs.h: comment out conflict ISR
definitions definitions
The ISR definition conflicts with AVR ISR definitions. The ISR definition conflicts with AVR ISR definitions.

View File

@ -0,0 +1,27 @@
From e8b844e1af690c1734602911c498ac15e0e1f9ed Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 15 May 2020 13:45:02 +0200
Subject: [PATCH 06/10] openstack/openstack: dont init idmanager
Dont initiate idmanager in OpenWSN but in RIOT to allow overriding
default short address.
---
openstack/openstack.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openstack/openstack.c b/openstack/openstack.c
index 8c074d30..a7972024 100644
--- a/openstack/openstack.c
+++ b/openstack/openstack.c
@@ -59,7 +59,7 @@ void openstack_init(void) {
//===== stack
//-- cross-layer
- idmanager_init(); // call first since initializes EUI64 and isDAGroot
+ // idmanager_init(); // call first since initializes EUI64 and isDAGroot
openqueue_init();
openrandom_init();
--
2.27.0

View File

@ -0,0 +1,178 @@
From c24730d5265dd487ae0f61612f67753ff89b3246 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 27 Mar 2020 10:18:16 +0100
Subject: [PATCH 07/10] openstack/openapps: add debugging
Debugging info that can be also be obtained through ifconfig in
tests/openwsn.
---
kernel/openos/scheduler.c | 4 +++-
openapps/cjoin/cjoin.c | 10 +++++++++-
openstack/02a-MAClow/IEEE802154E.c | 4 ++++
openstack/02b-MAChigh/neighbors.c | 5 ++++-
openstack/03b-IPv6/icmpv6rpl.c | 4 ++++
5 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/kernel/openos/scheduler.c b/kernel/openos/scheduler.c
index 28bfe5c2..b7c74814 100644
--- a/kernel/openos/scheduler.c
+++ b/kernel/openos/scheduler.c
@@ -13,6 +13,8 @@
#include "openwsn.h"
#include "thread.h"
+#include "openwsn_log.h"
+
#define OPENWSN_SCHEDULER_FLAG (1u << 8)
//=========================== variables =======================================
@@ -87,7 +89,7 @@ void scheduler_push_task(task_cbt cb, task_prio_t prio) {
}
if (taskContainer>&scheduler_vars.taskBuf[TASK_LIST_DEPTH-1]) {
// task list has overflown. This should never happpen!
-
+ LOG_RIOT_ERROR("[openos/scheduler]: critical, task list overflow\n");
// we can not print from within the kernel. Instead:
// blink the error LED
leds_error_blink();
diff --git a/openapps/cjoin/cjoin.c b/openapps/cjoin/cjoin.c
index e155717b..6527c5ee 100644
--- a/openapps/cjoin/cjoin.c
+++ b/openapps/cjoin/cjoin.c
@@ -22,6 +22,8 @@
#include "eui64.h"
#include "neighbors.h"
+#include "openwsn_log.h"
+
//=========================== defines =========================================
/// inter-packet period (in ms)
@@ -142,15 +144,19 @@ owerror_t cjoin_receive(OpenQueueEntry_t *msg,
owerror_t ret;
if (coap_header->Code != COAP_CODE_RESP_CHANGED) {
+ LOG_RIOT_DEBUG("[cjoin]:fail, replay protection\n");
return E_FAIL;
}
ret = cojp_cbor_decode_configuration_object(msg->payload, msg->length, &configuration);
- if (ret == E_FAIL) { return E_FAIL; }
+ if (ret == E_FAIL) {
+ LOG_RIOT_DEBUG("[cjoin]: decode fail\n");
+ return E_FAIL; }
if (configuration.keyset.num_keys == 1 &&
configuration.keyset.key[0].key_usage == COJP_KEY_USAGE_6TiSCH_K1K2_ENC_MIC32) {
// set the L2 keys as per the parsed value
+ LOG_RIOT_DEBUG("[cjoin]: success\n");
IEEE802154_security_setBeaconKey(configuration.keyset.key[0].key_index, configuration.keyset.key[0].key_value);
IEEE802154_security_setDataKey(configuration.keyset.key[0].key_index, configuration.keyset.key[0].key_value);
cjoin_setIsJoined(TRUE); // declare join is over
@@ -160,6 +166,7 @@ owerror_t cjoin_receive(OpenQueueEntry_t *msg,
// TODO not supported for now
}
+ LOG_RIOT_DEBUG("[cjoin]: failed\n");
return E_FAIL;
}
@@ -307,6 +314,7 @@ owerror_t cjoin_sendJoinRequest(open_addr_t *joinProxy) {
// send
LOG_INFO(COMPONENT_CJOIN, ERR_JOIN_REQUEST, (errorparameter_t) 0, (errorparameter_t) 0);
+ LOG_RIOT_DEBUG("[cjoin]: send join request\n");
outcome = coap_send(
pkt,
diff --git a/openstack/02a-MAClow/IEEE802154E.c b/openstack/02a-MAClow/IEEE802154E.c
index 70017ab7..09e0851d 100644
--- a/openstack/02a-MAClow/IEEE802154E.c
+++ b/openstack/02a-MAClow/IEEE802154E.c
@@ -19,6 +19,8 @@
#include "openrandom.h"
#include "msf.h"
+#include "openwsn_log.h"
+
//=========================== definition ======================================
//=========================== variables =======================================
@@ -843,6 +845,7 @@ port_INLINE void activity_synchronize_endOfFrame(PORT_TIMER_WIDTH capturedTime)
synchronizePacket(ieee154e_vars.syncCapturedTime);
// declare synchronized
+ LOG_RIOT_DEBUG("[IEE20154E]: synchronized\n");
changeIsSync(TRUE);
// log the info
LOG_SUCCESS(COMPONENT_IEEE802154E, ERR_SYNCHRONIZED,
@@ -924,6 +927,7 @@ port_INLINE void activity_ti1ORri1(void) {
ieee154e_vars.numOfSleepSlots = 1;
// declare myself desynchronized
+ LOG_RIOT_DEBUG("[IEE20154E]: desynchronized\n");
changeIsSync(FALSE);
// log the error
diff --git a/openstack/02b-MAChigh/neighbors.c b/openstack/02b-MAChigh/neighbors.c
index eff3bb34..c379538d 100644
--- a/openstack/02b-MAChigh/neighbors.c
+++ b/openstack/02b-MAChigh/neighbors.c
@@ -8,6 +8,8 @@
#include "openrandom.h"
#include "msf.h"
+#include "openwsn_log.h"
+
//=========================== variables =======================================
neighbors_vars_t neighbors_vars;
@@ -678,6 +680,7 @@ void registerNewNeighbor(open_addr_t *address,
i = 0;
while (i < MAXNUMNEIGHBORS) {
if (neighbors_vars.neighbors[i].used == FALSE) {
+ LOG_RIOT_DEBUG("[neighbors]: new neighbor rssi: %d\n", rssi);
if (rssi < GOODNEIGHBORMINRSSI) {
break;
}
@@ -728,7 +731,7 @@ bool isNeighbor(open_addr_t *neighbor) {
}
void removeNeighbor(uint8_t neighborIndex) {
-
+ LOG_RIOT_DEBUG("[neighbors]: remove beighbour %d\n", neighborIndex);
neighbors_vars.neighbors[neighborIndex].used = FALSE;
neighbors_vars.neighbors[neighborIndex].parentPreference = 0;
neighbors_vars.neighbors[neighborIndex].stableNeighbor = FALSE;
diff --git a/openstack/03b-IPv6/icmpv6rpl.c b/openstack/03b-IPv6/icmpv6rpl.c
index 21bc54ac..e7e911ba 100644
--- a/openstack/03b-IPv6/icmpv6rpl.c
+++ b/openstack/03b-IPv6/icmpv6rpl.c
@@ -14,6 +14,8 @@
#include "schedule.h"
#include "msf.h"
+#include "openwsn_log.h"
+
//=========================== definition ======================================
#define DIO_PORTION 10
@@ -453,6 +455,7 @@ void icmpv6rpl_updateMyDAGrankAndParentSelection(void) {
}
if (foundBetterParent) {
+ LOG_RIOT_DEBUG("[icmpv6rpl]: found better parent\n");
icmpv6rpl_vars.haveParent = TRUE;
if (!prevHadParent) {
// in case preParent is killed before calling this function, clear the preferredParent flag
@@ -628,6 +631,7 @@ void icmpv6rpl_indicateRxDIO(OpenQueueEntry_t *msg) {
}
void icmpv6rpl_killPreferredParent(void) {
+ LOG_RIOT_DEBUG("[icmpv6rpl]: kill preferred parent\n");
icmpv6rpl_vars.haveParent = FALSE;
if (idmanager_getIsDAGroot() == TRUE) {
icmpv6rpl_vars.myDAGrank = MINHOPRANKINCREASE;
--
2.27.0

View File

@ -1,27 +0,0 @@
From 6cf200f4f5fd73c065ac801328497bcfd073b382 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 15 May 2020 13:45:02 +0200
Subject: [PATCH 07/11] openstack/openstack: dont init idmanager
Dont initiate idmanager in OpenWSN but in RIOT to allow overriding
default short address.
---
openstack/openstack.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openstack/openstack.c b/openstack/openstack.c
index 3b10eddb..886e853f 100644
--- a/openstack/openstack.c
+++ b/openstack/openstack.c
@@ -57,7 +57,7 @@ void openstack_init(void) {
//===== stack
//-- cross-layer
- idmanager_init(); // call first since initializes EUI64 and isDAGroot
+ // idmanager_init(); // call first since initializes EUI64 and isDAGroot
openqueue_init();
openrandom_init();
--
2.27.0

View File

@ -1,7 +1,7 @@
From 04eae39ebd20de1fef5982f66f57cc8fb0fc44d4 Mon Sep 17 00:00:00 2001 From 555aa9d9b00ecfa8a0c3982de5520d8eb1b23076 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl> From: Francisco Molina <femolina@uc.cl>
Date: Thu, 4 Jun 2020 15:39:07 +0200 Date: Thu, 4 Jun 2020 15:39:07 +0200
Subject: [PATCH 09/11] drivers/common/openserial: add flag to echo badcrc Subject: [PATCH 08/10] drivers/common/openserial: add flag to echo badcrc
frames frames
--- ---
@ -9,10 +9,10 @@ Subject: [PATCH 09/11] drivers/common/openserial: add flag to echo badcrc
1 file changed, 5 insertions(+), 1 deletion(-) 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/common/openserial.c b/drivers/common/openserial.c diff --git a/drivers/common/openserial.c b/drivers/common/openserial.c
index 5c3c0003..c6cdddf0 100644 index 2e417071..4f13baf3 100644
--- a/drivers/common/openserial.c --- a/drivers/common/openserial.c
+++ b/drivers/common/openserial.c +++ b/drivers/common/openserial.c
@@ -981,9 +981,13 @@ port_INLINE void inputHdlcClose(void) { @@ -733,9 +733,13 @@ port_INLINE void inputHdlcClose(void) {
openserial_vars.inputBufFillLevel -= 2; openserial_vars.inputBufFillLevel -= 2;
} else { } else {
// the CRC is incorrect // the CRC is incorrect

View File

@ -1,175 +0,0 @@
From ae6271246adb6fb97a8d23f4b09f78223dbb04f6 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 27 Mar 2020 10:18:16 +0100
Subject: [PATCH 08/11] openstack/openapps: add debugging
Debugging info that can be also be obtained through ifconfig in
tests/openwsn.
---
kernel/openos/scheduler.c | 3 ++-
openapps/cjoin/cjoin.c | 10 +++++++++-
openstack/02a-MAClow/IEEE802154E.c | 4 ++++
openstack/02b-MAChigh/neighbors.c | 4 ++++
openstack/03b-IPv6/icmpv6rpl.c | 4 ++++
5 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/kernel/openos/scheduler.c b/kernel/openos/scheduler.c
index 28bfe5c2..175d6309 100644
--- a/kernel/openos/scheduler.c
+++ b/kernel/openos/scheduler.c
@@ -12,6 +12,7 @@
#include "openwsn.h"
#include "thread.h"
+#include "log.h"
#define OPENWSN_SCHEDULER_FLAG (1u << 8)
@@ -87,7 +88,7 @@ void scheduler_push_task(task_cbt cb, task_prio_t prio) {
}
if (taskContainer>&scheduler_vars.taskBuf[TASK_LIST_DEPTH-1]) {
// task list has overflown. This should never happpen!
-
+ LOG_ERROR("[openos/scheduler]: critical, task list overflow\n");
// we can not print from within the kernel. Instead:
// blink the error LED
leds_error_blink();
diff --git a/openapps/cjoin/cjoin.c b/openapps/cjoin/cjoin.c
index 2d87372f..74eca7b3 100644
--- a/openapps/cjoin/cjoin.c
+++ b/openapps/cjoin/cjoin.c
@@ -18,6 +18,8 @@
#include "eui64.h"
#include "neighbors.h"
+#include "log.h"
+
//=========================== defines =========================================
/// inter-packet period (in ms)
@@ -134,14 +136,18 @@ owerror_t cjoin_receive(OpenQueueEntry_t* msg,
owerror_t ret;
if (coap_header->Code != COAP_CODE_RESP_CHANGED) {
+ LOG_DEBUG("[cjoin]:fail, replay protection\n");
return E_FAIL;
}
ret = cojp_cbor_decode_configuration_object(msg->payload, msg->length, &configuration);
- if (ret == E_FAIL) { return E_FAIL; }
+ if (ret == E_FAIL) {
+ LOG_DEBUG("[cjoin]: decode fail\n");
+ return E_FAIL; }
if (configuration.keyset.num_keys == 1 &&
configuration.keyset.key[0].key_usage == COJP_KEY_USAGE_6TiSCH_K1K2_ENC_MIC32) {
+ LOG_DEBUG("[cjoin]: success\n");
// set the L2 keys as per the parsed value
IEEE802154_security_setBeaconKey(configuration.keyset.key[0].key_index, configuration.keyset.key[0].key_value);
IEEE802154_security_setDataKey(configuration.keyset.key[0].key_index, configuration.keyset.key[0].key_value);
@@ -152,6 +158,7 @@ owerror_t cjoin_receive(OpenQueueEntry_t* msg,
// TODO not supported for now
}
+ LOG_DEBUG("[cjoin]: failed\n");
return E_FAIL;
}
@@ -300,6 +307,7 @@ owerror_t cjoin_sendJoinRequest(open_addr_t* joinProxy) {
packetfunctions_reserveHeaderSize(pkt, payload_len);
memcpy(pkt->payload, tmp, payload_len);
// send
+ LOG_DEBUG("[cjoin]: send join request\n");
outcome = opencoap_send(
pkt,
COAP_TYPE_NON,
diff --git a/openstack/02a-MAClow/IEEE802154E.c b/openstack/02a-MAClow/IEEE802154E.c
index 07921ae3..c1b532af 100644
--- a/openstack/02a-MAClow/IEEE802154E.c
+++ b/openstack/02a-MAClow/IEEE802154E.c
@@ -18,6 +18,8 @@
#include "openrandom.h"
#include "msf.h"
+#include "log.h"
+
//=========================== definition ======================================
//=========================== variables =======================================
@@ -806,6 +808,7 @@ port_INLINE void activity_synchronize_endOfFrame(PORT_TIMER_WIDTH capturedTime)
synchronizePacket(ieee154e_vars.syncCapturedTime);
// declare synchronized
+ LOG_DEBUG("[IEE20154E]: synchronized\n");
changeIsSync(TRUE);
// log the info
openserial_printInfo(COMPONENT_IEEE802154E,ERR_SYNCHRONIZED,
@@ -890,6 +893,7 @@ port_INLINE void activity_ti1ORri1(void) {
ieee154e_vars.numOfSleepSlots = 1;
// declare myself desynchronized
+ LOG_DEBUG("[IEE20154E]: desynchronized\n");
changeIsSync(FALSE);
// log the error
diff --git a/openstack/02b-MAChigh/neighbors.c b/openstack/02b-MAChigh/neighbors.c
index 4cfcf146..b5f064e9 100644
--- a/openstack/02b-MAChigh/neighbors.c
+++ b/openstack/02b-MAChigh/neighbors.c
@@ -8,6 +8,8 @@
#include "openrandom.h"
#include "msf.h"
+#include "log.h"
+
//=========================== variables =======================================
neighbors_vars_t neighbors_vars;
@@ -687,6 +689,7 @@ void registerNewNeighbor(open_addr_t* address,
i=0;
while(i<MAXNUMNEIGHBORS) {
if (neighbors_vars.neighbors[i].used==FALSE) {
+ LOG_DEBUG("[neighbors]: new neighbor rssi: %d\n", rssi);
if (rssi < GOODNEIGHBORMINRSSI){
break;
}
@@ -738,6 +741,7 @@ bool isNeighbor(open_addr_t* neighbor) {
void removeNeighbor(uint8_t neighborIndex) {
+ LOG_DEBUG("[neighbors]: remove beighbour %d\n", neighborIndex);
neighbors_vars.neighbors[neighborIndex].used = FALSE;
neighbors_vars.neighbors[neighborIndex].parentPreference = 0;
neighbors_vars.neighbors[neighborIndex].stableNeighbor = FALSE;
diff --git a/openstack/03b-IPv6/icmpv6rpl.c b/openstack/03b-IPv6/icmpv6rpl.c
index 86e1c7d3..9d819394 100644
--- a/openstack/03b-IPv6/icmpv6rpl.c
+++ b/openstack/03b-IPv6/icmpv6rpl.c
@@ -14,6 +14,8 @@
#include "schedule.h"
#include "msf.h"
+#include "log.h"
+
//=========================== definition ======================================
#define DIO_PORTION 10
@@ -477,6 +479,7 @@ void icmpv6rpl_updateMyDAGrankAndParentSelection(void) {
}
if (foundBetterParent) {
+ LOG_DEBUG("[icmpv6rpl]: found better parent\n");
icmpv6rpl_vars.haveParent=TRUE;
if (!prevHadParent) {
// in case preParent is killed before calling this function, clear the preferredParent flag
@@ -645,6 +648,7 @@ void icmpv6rpl_indicateRxDIO(OpenQueueEntry_t* msg) {
}
void icmpv6rpl_killPreferredParent(void) {
+ LOG_DEBUG("[icmpv6rpl]: kill better parent\n");
icmpv6rpl_vars.haveParent=FALSE;
if (idmanager_getIsDAGroot()==TRUE) {
icmpv6rpl_vars.myDAGrank=MINHOPRANKINCREASE;
--
2.27.0

View File

@ -0,0 +1,25 @@
From 6224ae6d65cf505c03d64636afd596e896291497 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 24 Jul 2020 15:42:05 +0200
Subject: [PATCH 09/10] inc/check_config: skip checking board, unused in RIOT
---
inc/check_config.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/inc/check_config.h b/inc/check_config.h
index 6cbaaf9d..6ab4c78c 100644
--- a/inc/check_config.h
+++ b/inc/check_config.h
@@ -17,7 +17,7 @@
!defined(IOTLAB_A8_M3) && \
!defined(SAMR21_XPRO) && \
!defined(NRF52840)
-#error 'Board name must be specified to check for configuration errors'
+// #error 'Board name must be specified to check for configuration errors'
#endif
#if (defined(OPENMOTE_CC2538) || \
--
2.27.0

View File

@ -1,32 +0,0 @@
From 02420eb4baf4229c66df5f99254f867d816b5e58 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Thu, 25 Jun 2020 15:37:44 +0200
Subject: [PATCH 10/11] drivers/common/opentimers: enable ISR before return
---
drivers/common/opentimers.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/common/opentimers.c b/drivers/common/opentimers.c
index 718b39a3..0c7c6683 100644
--- a/drivers/common/opentimers.c
+++ b/drivers/common/opentimers.c
@@ -60,6 +60,7 @@ opentimers_id_t opentimers_create(uint8_t timer_id, uint8_t task_prio){
opentimers_vars.timersBuf[timer_id].isUsed = TRUE;
// the TSCH timer and inhibit timer won't push a task,
// hence task_prio is not used
+ ENABLE_INTERRUPTS();
return timer_id;
}
}
@@ -69,6 +70,7 @@ opentimers_id_t opentimers_create(uint8_t timer_id, uint8_t task_prio){
if (opentimers_vars.timersBuf[id].isUsed == FALSE){
opentimers_vars.timersBuf[id].isUsed = TRUE;
opentimers_vars.timersBuf[id].timer_task_prio = task_prio;
+ ENABLE_INTERRUPTS();
return id;
}
}
--
2.27.0

View File

@ -0,0 +1,181 @@
From 0e2e1e1b3898a77bc0a3474a4edc79c3c54a85d3 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Fri, 24 Jul 2020 16:48:22 +0200
Subject: [PATCH 10/10] openwsn-fw: add ifndef guards for configurable
parameters
---
inc/config.h | 18 ++++++++++++++----
openstack/02a-MAClow/IEEE802154E.h | 8 +++++++-
openstack/02b-MAChigh/neighbors.h | 8 ++++++++
openstack/02b-MAChigh/schedule.h | 12 +++++++++++-
openstack/02b-MAChigh/sixtop.h | 2 ++
5 files changed, 42 insertions(+), 6 deletions(-)
diff --git a/inc/config.h b/inc/config.h
index 974ceb76..4f27b98a 100644
--- a/inc/config.h
+++ b/inc/config.h
@@ -16,8 +16,9 @@
* - level 6: critical, error, success, warning, info, and verbose
*
*/
-
+#ifndef OPENWSN_DEBUG_LEVEL
#define OPENWSN_DEBUG_LEVEL 6
+#endif
// ========================== Applications ==========================
@@ -221,11 +222,16 @@
* - OPENWSN_MAX_NUM_BIGPKTS: defines how many static buffer space will be allocated for processing large packets.
*
*/
-
// #define OPENWSN_6LO_FRAGMENTATION_C
-// #define OPENWSN_MAX_PKTSIZE_SUPPORTED 1320
-// #define OPENWSN_MAX_NUM_BIGPKTS 2
+#ifdef OPENWSN_6LO_FRAGMENTATION_C
+#ifndef OPENWSN_MAX_PKTSIZE_SUPPORTED
+#define OPENWSN_MAX_PKTSIZE_SUPPORTED 1320
+#endif
+#ifndef OPENWSN_MAX_NUM_BIGPKTS
+#define OPENWSN_MAX_NUM_BIGPKTS 2
+#endif
+#endif
/**
* \def OPENWSN_ADAPTIVE_MSF
@@ -279,7 +285,9 @@
* When the channel is set to 0, frequency hopping is enabled, otherwise a single channel is used.
*
*/
+#ifndef IEEE802154E_SINGLE_CHANNEL
#define IEEE802154E_SINGLE_CHANNEL 11
+#endif
/**
* \def PACKETQUEUE_LENGTH
@@ -288,7 +296,9 @@
* increase RAM usage.
*
*/
+#ifndef PACKETQUEUE_LENGTH
#define PACKETQUEUE_LENGTH 20
+#endif
// ======================== Board configuration ========================
diff --git a/openstack/02a-MAClow/IEEE802154E.h b/openstack/02a-MAClow/IEEE802154E.h
index f3274979..472e4b85 100644
--- a/openstack/02a-MAClow/IEEE802154E.h
+++ b/openstack/02a-MAClow/IEEE802154E.h
@@ -42,9 +42,15 @@ static const uint8_t ebIEsBytestream[] = {
#define TXRETRIES 15 // number of MAC retries before declaring failed
#define TX_POWER 31 // 1=-25dBm, 31=0dBm (max value)
#define RESYNCHRONIZATIONGUARD 5 // in 32kHz ticks. min distance to the end of the slot to successfully synchronize
-#define EB_PORTION 10 // set EB on minimal cell for 1/EB_PORTION portion
+#ifndef EB_PORTION
+#define EB_PORTION 10 // set EB on minimal cell for 1/EB_PORTION portion
+#endif
+#ifndef MAXKAPERIOD
#define MAXKAPERIOD 1000 // in slots: 1500@20ms per slot -> ~30 seconds. Max value used by adaptive synchronization.
+#endif
+#ifndef DESYNCTIMEOUT
#define DESYNCTIMEOUT 1750 // in slots: 1750@20ms per slot -> ~35 seconds. A larger DESYNCTIMEOUT is needed if using a larger KATIMEOUT.
+#endif
#define LIMITLARGETIMECORRECTION 5 // threshold number of ticks to declare a timeCorrection "large"
#define LENGTH_IEEE154_MAX 128 // max length of a valid radio packet
#define DUTY_CYCLE_WINDOW_LIMIT (0xFFFFFFFF>>1) // limit of the dutycycle window
diff --git a/openstack/02b-MAChigh/neighbors.h b/openstack/02b-MAChigh/neighbors.h
index 894001e6..3ca55cdc 100644
--- a/openstack/02b-MAChigh/neighbors.h
+++ b/openstack/02b-MAChigh/neighbors.h
@@ -13,10 +13,18 @@
//=========================== define ==========================================
#define MAXPREFERENCE 2
+#ifndef BADNEIGHBORMAXRSSI
#define BADNEIGHBORMAXRSSI -70 //dBm
+#endif
+#ifndef GOODNEIGHBORMINRSSI
#define GOODNEIGHBORMINRSSI -80 //dBm
+#endif
+#ifndef SWITCHSTABILITYTHRESHOLD
#define SWITCHSTABILITYTHRESHOLD 3
+#endif
+#ifndef DEFAULTLINKCOST
#define DEFAULTLINKCOST 4
+#endif
#define MINIMAL_NUM_TX 16
#define MAXDAGRANK 0xffff
diff --git a/openstack/02b-MAChigh/schedule.h b/openstack/02b-MAChigh/schedule.h
index 6ba2657a..ae53a9ce 100644
--- a/openstack/02b-MAChigh/schedule.h
+++ b/openstack/02b-MAChigh/schedule.h
@@ -17,10 +17,15 @@
The superframe reappears over time and can be arbitrarily long.
*/
+
+#ifndef SLOTFRAME_LENGTH
#define SLOTFRAME_LENGTH 101 //should be 101
+#endif
//draft-ietf-6tisch-minimal-06
+#ifndef SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS
#define SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS 1
+#endif
#define SCHEDULE_MINIMAL_6TISCH_SLOTOFFSET 0
#define SCHEDULE_MINIMAL_6TISCH_CHANNELOFFSET 0
#define SCHEDULE_MINIMAL_6TISCH_DEFAULT_SLOTFRAME_HANDLE 0 //id of slotframe
@@ -37,7 +42,9 @@ The superframe reappears over time and can be arbitrarily long.
for serial port to transmit data to dagroot.
*/
+#ifndef NUMSLOTSOFF
#define NUMSLOTSOFF 20
+#endif
/**
\brief Maximum number of active slots in a superframe.
@@ -49,7 +56,9 @@ in that table; a slot is "active" when it is not of type CELLTYPE_OFF.
Set this number to the exact number of active slots you are planning on having
in your schedule, so not to waste RAM.
*/
+#ifndef MAXACTIVESLOTS
#define MAXACTIVESLOTS SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS+NUMSLOTSOFF
+#endif
/**
\brief Maximum number of alternative slots (more than one cells with same slotOffset)
@@ -59,8 +68,9 @@ Note that for each slot entry, it has a table of alternative slots. All
those slots's next pointer is pointing to the same entries.
*/
-
+#ifndef MAXBACKUPSLOTS
#define MAXBACKUPSLOTS 2
+#endif
/**
\brief Minimum backoff exponent.
diff --git a/openstack/02b-MAChigh/sixtop.h b/openstack/02b-MAChigh/sixtop.h
index 6cd98959..7028ca50 100644
--- a/openstack/02b-MAChigh/sixtop.h
+++ b/openstack/02b-MAChigh/sixtop.h
@@ -81,7 +81,9 @@ typedef enum {
// >2^4*3*(101/9)*15=8080 (2^MAXEB * maxretries * (slotframe / numberOfsharedCellsFor6p)*slotlength) (ms))
// on the receiver side of sixtop, it may has mutiple sixtop request in the queue to response (most of them will return with RC BUSY)
// increase the timeout longer than calculated value
+#ifndef SIX2SIX_TIMEOUT_MS
#define SIX2SIX_TIMEOUT_MS 65535
+#endif
typedef uint8_t (*sixtop_sf_getsfid_cbt)(void);
--
2.27.0

View File

@ -1,42 +0,0 @@
From d20020308e0728987dff1190273a7b7322926b64 Mon Sep 17 00:00:00 2001
From: Francisco Molina <femolina@uc.cl>
Date: Thu, 25 Jun 2020 17:50:24 +0200
Subject: [PATCH 11/11] openstack: allow to set EB_PORTION, SLOTFRAME_LENGTH
---
openstack/02a-MAClow/IEEE802154E.h | 2 ++
openstack/02b-MAChigh/schedule.h | 3 +++
2 files changed, 5 insertions(+)
diff --git a/openstack/02a-MAClow/IEEE802154E.h b/openstack/02a-MAClow/IEEE802154E.h
index 117aa7f3..11d7ec10 100644
--- a/openstack/02a-MAClow/IEEE802154E.h
+++ b/openstack/02a-MAClow/IEEE802154E.h
@@ -41,7 +41,9 @@ static const uint8_t ebIEsBytestream[] = {
#define TXRETRIES 15 // number of MAC retries before declaring failed
#define TX_POWER 31 // 1=-25dBm, 31=0dBm (max value)
#define RESYNCHRONIZATIONGUARD 5 // in 32kHz ticks. min distance to the end of the slot to successfully synchronize
+#ifndef EB_PORTION
#define EB_PORTION 10 // set EB on minimal cell for 1/EB_PORTION portion
+#endif
#define MAXKAPERIOD 1000 // in slots: 1500@20ms per slot -> ~30 seconds. Max value used by adaptive synchronization.
#define DESYNCTIMEOUT 1750 // in slots: 1750@20ms per slot -> ~35 seconds. A larger DESYNCTIMEOUT is needed if using a larger KATIMEOUT.
#define LIMITLARGETIMECORRECTION 5 // threshold number of ticks to declare a timeCorrection "large"
diff --git a/openstack/02b-MAChigh/schedule.h b/openstack/02b-MAChigh/schedule.h
index dc3b9f50..d64d6cf4 100644
--- a/openstack/02b-MAChigh/schedule.h
+++ b/openstack/02b-MAChigh/schedule.h
@@ -17,7 +17,10 @@
The superframe reappears over time and can be arbitrarily long.
*/
+
+#ifndef SLOTFRAME_LENGTH
#define SLOTFRAME_LENGTH 101 //should be 101
+#endif
//draft-ietf-6tisch-minimal-06
#define SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS 1
--
2.27.0

View File

@ -12,12 +12,21 @@ BOARD_WHITELIST = \
samr30-xpro \ samr30-xpro \
# #
## OpenWSN Modules # OpenWSN Modules
USEPKG += openwsn USEPKG += openwsn
USEMODULE += openwsn_openstack USEMODULE += openwsn_openstack
USEMODULE += openwsn_scheduler USEMODULE += openwsn_scheduler
# Optional OpenWSN Modules
## Enable Constrained Join Protocol (CoJP)
USEMODULE += openwsn_cjoin
## Enable 6lowpan fragmentation
USEMODULE += openwsn_6lo_frag
## Enable link layer security
# USEMODULE += openwsn_iee802154e_security
## Enable MSF dynamic slot allocation
# USEMODULE += openwsn_adaptive_msf
# Optional Module required for root nodes ## Optional Module, but required for root nodes
# USEMODULE += openwsn_serial # USEMODULE += openwsn_serial
# Optional Modules # Optional Modules

View File

@ -178,6 +178,8 @@ to see the ipv6 address:
NO RPL parent NO RPL parent
Note that the '6TiSCH joined' field will only show up if `openwsn_cjoin`
is used.
On the root node Openvisualizer is launched and the DAGroot is setup. On the root node Openvisualizer is launched and the DAGroot is setup.
@ -194,7 +196,7 @@ On the root node Openvisualizer is launched and the DAGroot is setup.
The root node will now start sending beacons and other nodes will synchronize, and The root node will now start sending beacons and other nodes will synchronize, and
join. If channel hopping is enabled this can take quite some time (see join. If channel hopping is enabled this can take quite some time (see
[Synchronization](../../pkg/openwsn/doc.txt#Synchronization). Once leaf nodes [Synchronization](../../pkg/openwsn/doc.txt#Synchronization). Once leaf nodes
have joined the network when issuing `ifconfing` you should see: have joined the network when issuing `ifconfig` you should see:
ifconfig ifconfig
Iface 3 HWaddr: 0F:F4 NID: CA:FE Iface 3 HWaddr: 0F:F4 NID: CA:FE

View File

@ -32,8 +32,10 @@
#include "02a-MAClow/IEEE802154E.h" #include "02a-MAClow/IEEE802154E.h"
#include "02b-MAChigh/neighbors.h" #include "02b-MAChigh/neighbors.h"
#include "03b-IPv6/icmpv6rpl.h" #include "03b-IPv6/icmpv6rpl.h"
#include "04-TRAN/openudp.h" #include "04-TRAN/udp.h"
#ifdef MODULE_OPENWSN_CJOIN
#include "cjoin.h" #include "cjoin.h"
#endif
#include "cross-layers/openqueue.h" #include "cross-layers/openqueue.h"
#include "cross-layers/idmanager.h" #include "cross-layers/idmanager.h"
#include "cross-layers/packetfunctions.h" #include "cross-layers/packetfunctions.h"
@ -114,7 +116,9 @@ static int ifconfig_cmd(int argc, char **argv)
printf("\t\tIEEE802154E sync: %i\n", ieee154e_isSynch()); printf("\t\tIEEE802154E sync: %i\n", ieee154e_isSynch());
#ifdef MODULE_OPENWSN_CJOIN
printf("\t\t6TiSCH joined: %i\n", cjoin_getIsJoined()); printf("\t\t6TiSCH joined: %i\n", cjoin_getIsJoined());
#endif
printf("\n"); printf("\n");
if (idmanager_vars.isDAGroot) { if (idmanager_vars.isDAGroot) {
@ -193,7 +197,7 @@ static const struct {
{ "udp", COMPONENT_OPENUDP }, { "udp", COMPONENT_OPENUDP },
{ "coap", COMPONENT_OPENCOAP }, { "coap", COMPONENT_OPENCOAP },
{ "cjoin", COMPONENT_CJOIN }, { "cjoin", COMPONENT_CJOIN },
{ "openoscoap", COMPONENT_OPENOSCOAP }, { "openoscoap", COMPONENT_OSCORE },
{ "c6t", COMPONENT_C6T }, { "c6t", COMPONENT_C6T },
{ "uinject", COMPONENT_UINJECT }, { "uinject", COMPONENT_UINJECT },
}; };

View File

@ -30,7 +30,7 @@
#include "scheduler.h" #include "scheduler.h"
#include "02a-MAClow/IEEE802154E.h" #include "02a-MAClow/IEEE802154E.h"
#include "03b-IPv6/icmpv6rpl.h" #include "03b-IPv6/icmpv6rpl.h"
#include "04-TRAN/openudp.h" #include "04-TRAN/udp.h"
#include "cross-layers/openqueue.h" #include "cross-layers/openqueue.h"
#include "cross-layers/idmanager.h" #include "cross-layers/idmanager.h"
#include "cross-layers/packetfunctions.h" #include "cross-layers/packetfunctions.h"
@ -105,15 +105,15 @@ static int udp_send(char *addr_str, char *port_str, char *data,
pkt->l3_destinationAdd.type = ADDR_128B; pkt->l3_destinationAdd.type = ADDR_128B;
memcpy(&pkt->l3_destinationAdd.addr_128b[0], (void *)&addr, 16); memcpy(&pkt->l3_destinationAdd.addr_128b[0], (void *)&addr, 16);
/* add payload */ /* add payload */
packetfunctions_reserveHeaderSize(pkt, data_len); packetfunctions_reserveHeader(&pkt, data_len);
memcpy(&pkt->payload[0], data, data_len); memcpy(&pkt->payload[0], data, data_len);
packetfunctions_reserveHeaderSize(pkt, sizeof(uint16_t)); packetfunctions_reserveHeader(&pkt, sizeof(uint16_t));
pkt->payload[1] = (uint8_t)((counter & 0xff00) >> 8); pkt->payload[1] = (uint8_t)((counter & 0xff00) >> 8);
pkt->payload[0] = (uint8_t)(counter & 0x00ff); pkt->payload[0] = (uint8_t)(counter & 0x00ff);
counter++; counter++;
packetfunctions_reserveHeaderSize(pkt, sizeof(asn_t)); packetfunctions_reserveHeader(&pkt, sizeof(asn_t));
ieee154e_getAsn(asnArray); ieee154e_getAsn(asnArray);
pkt->payload[0] = asnArray[0]; pkt->payload[0] = asnArray[0];
pkt->payload[1] = asnArray[1]; pkt->payload[1] = asnArray[1];