From f99f206beaa527a6fd0be861a33a6ad853a7e95a Mon Sep 17 00:00:00 2001 From: canisLupus1313 <85344032+canisLupus1313@users.noreply.github.com> Date: Thu, 12 Aug 2021 19:51:21 +0200 Subject: [PATCH] [csl] allow to configure the CSL auto synchronization (#6913) This commit allows configuration of auto synchronisation of CSL, with data poll mechanism. --- etc/cmake/options.cmake | 7 +++++++ examples/common-switches.mk | 6 ++++++ src/core/config/mac.h | 10 ++++++++++ src/core/mac/data_poll_sender.cpp | 2 +- 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/etc/cmake/options.cmake b/etc/cmake/options.cmake index e8f2c91c8..d9dcb0843 100644 --- a/etc/cmake/options.cmake +++ b/etc/cmake/options.cmake @@ -137,6 +137,13 @@ if(OT_CSL_RECEIVER) target_compile_definitions(ot-config INTERFACE "OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE=1") endif() +option(OT_CSL_AUTO_SYNC "enable data polling based on csl config" ${OT_CSL_RECEIVER}) +if(OT_CSL_AUTO_SYNC) + target_compile_definitions(ot-config INTERFACE "OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE=1") +else() + target_compile_definitions(ot-config INTERFACE "OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE=0") +endif() + option(OT_CSL_DEBUG "enable csl debug") if(OT_CSL_DEBUG) target_compile_definitions(ot-config INTERFACE "OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE=1") diff --git a/examples/common-switches.mk b/examples/common-switches.mk index 42daeae6c..2040530c1 100644 --- a/examples/common-switches.mk +++ b/examples/common-switches.mk @@ -149,6 +149,12 @@ ifeq ($(CSL_RECEIVER),1) COMMONCFLAGS += -DOPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE=1 endif +ifeq ($(CSL_AUTO_SYNC),1) +COMMONCFLAGS += -DOPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE=1 +else ifeq ($(CSL_AUTO_SYNC),0) +COMMONCFLAGS += -DOPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE=0 +endif + ifeq ($(CSL_DEBUG),1) COMMONCFLAGS += -DOPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE=1 endif diff --git a/src/core/config/mac.h b/src/core/config/mac.h index 86598ebd5..e24442589 100644 --- a/src/core/config/mac.h +++ b/src/core/config/mac.h @@ -355,6 +355,16 @@ #define OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE 0 #endif +/** + * @def OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE + * + * This setting configures CSL auto synchronization based on data poll mechanism in Thread 1.2. + * + */ +#ifndef OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE +#define OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE +#endif + /** * @def OPENTHREAD_CONFIG_MAC_CSL_MIN_PERIOD * diff --git a/src/core/mac/data_poll_sender.cpp b/src/core/mac/data_poll_sender.cpp index 674f2a13c..512d50a58 100644 --- a/src/core/mac/data_poll_sender.cpp +++ b/src/core/mac/data_poll_sender.cpp @@ -539,7 +539,7 @@ uint32_t DataPollSender::GetDefaultPollPeriod(void) const uint32_t period = Time::SecToMsec(Get().GetTimeout()); uint32_t pollAhead = static_cast(kRetxPollPeriod) * kMaxPollRetxAttempts; -#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_MAC_CSL_AUTO_SYNC_ENABLE if (Get().IsCslEnabled()) { period = OT_MIN(period, Time::SecToMsec(Get().GetCslTimeout()));