aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaveLacerte <36926543+DaveLacerte@users.noreply.github.com>2024-04-05 14:19:39 -0400
committerGitHub <noreply@github.com>2024-04-05 11:19:39 -0700
commita5c17b77635bb43d02d4dec96fbf4b7eeb43be06 (patch)
treebbef72f474bca02f5f615a6d386dade8d760f2ee
parentb146766e3a485ffc860968673fe818c23a8bed93 (diff)
downloadopenthread-a5c17b77635bb43d02d4dec96fbf4b7eeb43be06.tar.gz
[mle] MTD to handle udp time sync message (#9978)
This commit add the possibility to handle a udp time sync message when configured as MTD.
-rw-r--r--src/core/thread/mle.cpp57
-rw-r--r--src/core/thread/mle.hpp10
-rw-r--r--src/core/thread/mle_router.cpp14
-rw-r--r--src/core/thread/mle_router.hpp3
4 files changed, 46 insertions, 38 deletions
diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp
index 7ba5d8705..99e6809f8 100644
--- a/src/core/thread/mle.cpp
+++ b/src/core/thread/mle.cpp
@@ -2652,13 +2652,13 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
case kCommandChildIdRequest:
Get<MleRouter>().HandleChildIdRequest(rxInfo);
break;
+#endif // OPENTHREAD_FTD
#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
case kCommandTimeSync:
- Get<MleRouter>().HandleTimeSync(rxInfo);
+ HandleTimeSync(rxInfo);
break;
#endif
-#endif // OPENTHREAD_FTD
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
case kCommandLinkMetricsManagementRequest:
@@ -3791,6 +3791,22 @@ exit:
}
#endif
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+void Mle::HandleTimeSync(RxInfo &aRxInfo)
+{
+ Log(kMessageReceive, kTypeTimeSync, aRxInfo.mMessageInfo.GetPeerAddr());
+
+ VerifyOrExit(aRxInfo.IsNeighborStateValid());
+
+ aRxInfo.mClass = RxInfo::kPeerMessage;
+
+ Get<TimeSync>().HandleTimeSyncMessage(aRxInfo.mMessage);
+
+exit:
+ return;
+}
+#endif
+
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE
void Mle::HandleLinkMetricsManagementResponse(RxInfo &aRxInfo)
{
@@ -4110,14 +4126,14 @@ const char *Mle::MessageTypeToString(MessageType aType)
"Link Reject", // (25) kTypeLinkReject
"Link Request", // (26) kTypeLinkRequest
"Parent Request", // (27) kTypeParentRequest
-#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
- "Time Sync", // (28) kTypeTimeSync
-#endif
#endif
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
- "Link Metrics Management Request", // (29) kTypeLinkMetricsManagementRequest
- "Link Metrics Management Response", // (30) kTypeLinkMetricsManagementResponse
- "Link Probe", // (31) kTypeLinkProbe
+ "Link Metrics Management Request", // (28) kTypeLinkMetricsManagementRequest
+ "Link Metrics Management Response", // (29) kTypeLinkMetricsManagementResponse
+ "Link Probe", // (30) kTypeLinkProbe
+#endif
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ "Time Sync", // (31) kTypeTimeSync
#endif
};
@@ -4150,25 +4166,30 @@ const char *Mle::MessageTypeToString(MessageType aType)
static_assert(kTypeLinkReject == 25, "kTypeLinkReject value is incorrect");
static_assert(kTypeLinkRequest == 26, "kTypeLinkRequest value is incorrect");
static_assert(kTypeParentRequest == 27, "kTypeParentRequest value is incorrect");
-#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
- static_assert(kTypeTimeSync == 28, "kTypeTimeSync value is incorrect");
-#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
- static_assert(kTypeLinkMetricsManagementRequest == 29, "kTypeLinkMetricsManagementRequest value is incorrect)");
- static_assert(kTypeLinkMetricsManagementResponse == 30, "kTypeLinkMetricsManagementResponse value is incorrect)");
- static_assert(kTypeLinkProbe == 31, "kTypeLinkProbe value is incorrect)");
-#endif
-#else // OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
static_assert(kTypeLinkMetricsManagementRequest == 28, "kTypeLinkMetricsManagementRequest value is incorrect)");
static_assert(kTypeLinkMetricsManagementResponse == 29, "kTypeLinkMetricsManagementResponse value is incorrect)");
static_assert(kTypeLinkProbe == 30, "kTypeLinkProbe value is incorrect)");
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ static_assert(kTypeTimeSync == 31, "kTypeTimeSync value is incorrect");
#endif
-#endif // OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
-#else // OPENTHREAD_FTD
+#else
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ static_assert(kTypeTimeSync == 28, "kTypeTimeSync value is incorrect");
+#endif
+#endif
+#else // OPENTHREAD_FTD
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
static_assert(kTypeLinkMetricsManagementRequest == 16, "kTypeLinkMetricsManagementRequest value is incorrect)");
static_assert(kTypeLinkMetricsManagementResponse == 17, "kTypeLinkMetricsManagementResponse value is incorrect)");
static_assert(kTypeLinkProbe == 18, "kTypeLinkProbe value is incorrect)");
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ static_assert(kTypeTimeSync == 19, "kTypeTimeSync value is incorrect");
+#endif
+#else
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ static_assert(kTypeTimeSync == 16, "kTypeTimeSync value is incorrect");
+#endif
#endif
#endif // OPENTHREAD_FTD
diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp
index 208922bcd..873e33835 100644
--- a/src/core/thread/mle.hpp
+++ b/src/core/thread/mle.hpp
@@ -973,15 +973,15 @@ private:
kTypeLinkReject,
kTypeLinkRequest,
kTypeParentRequest,
-#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
- kTypeTimeSync,
-#endif
#endif
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_INITIATOR_ENABLE || OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
kTypeLinkMetricsManagementRequest,
kTypeLinkMetricsManagementResponse,
kTypeLinkProbe,
#endif
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ kTypeTimeSync,
+#endif
};
//------------------------------------------------------------------------------------------------------------------
@@ -1313,6 +1313,10 @@ private:
void UpdateServiceAlocs(void);
#endif
+#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
+ void HandleTimeSync(RxInfo &aRxInfo);
+#endif
+
#if OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE
void HandleLinkMetricsManagementRequest(RxInfo &aRxInfo);
void HandleLinkProbe(RxInfo &aRxInfo);
diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp
index b7489e651..b55341f9b 100644
--- a/src/core/thread/mle_router.cpp
+++ b/src/core/thread/mle_router.cpp
@@ -3891,20 +3891,6 @@ exit:
}
#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
-void MleRouter::HandleTimeSync(RxInfo &aRxInfo)
-{
- Log(kMessageReceive, kTypeTimeSync, aRxInfo.mMessageInfo.GetPeerAddr());
-
- VerifyOrExit(aRxInfo.IsNeighborStateValid());
-
- aRxInfo.mClass = RxInfo::kPeerMessage;
-
- Get<TimeSync>().HandleTimeSyncMessage(aRxInfo.mMessage);
-
-exit:
- return;
-}
-
Error MleRouter::SendTimeSync(void)
{
Error error = kErrorNone;
diff --git a/src/core/thread/mle_router.hpp b/src/core/thread/mle_router.hpp
index 3deda33dc..955674c42 100644
--- a/src/core/thread/mle_router.hpp
+++ b/src/core/thread/mle_router.hpp
@@ -649,9 +649,6 @@ private:
void HandleDataRequest(RxInfo &aRxInfo);
void HandleNetworkDataUpdateRouter(void);
void HandleDiscoveryRequest(RxInfo &aRxInfo);
-#if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE
- void HandleTimeSync(RxInfo &aRxInfo);
-#endif
Error ProcessRouteTlv(const RouteTlv &aRouteTlv, RxInfo &aRxInfo);
Error ReadAndProcessRouteTlvOnFed(RxInfo &aRxInfo, uint8_t aParentId);