From 0924abe78a8d87ecc3ab9a51510cafb218e82d93 Mon Sep 17 00:00:00 2001 From: Mason Tran Date: Fri, 2 Feb 2024 17:00:00 -0500 Subject: [PATCH] [ncp] add handler for `SPINEL_PROP_LOG_CRASH_DUMP` and Set the spinel prop during RCP init if capable --- src/lib/spinel/radio_spinel.cpp | 5 +++++ src/ncp/ncp_base.cpp | 4 ++++ src/ncp/ncp_base_dispatcher.cpp | 8 ++++++++ src/ncp/ncp_base_radio.cpp | 12 ++++++++++++ 4 files changed, 29 insertions(+) diff --git a/src/lib/spinel/radio_spinel.cpp b/src/lib/spinel/radio_spinel.cpp index 849d9961430..638c017e393 100644 --- a/src/lib/spinel/radio_spinel.cpp +++ b/src/lib/spinel/radio_spinel.cpp @@ -149,6 +149,11 @@ void RadioSpinel::Init(SpinelInterface &aSpinelInterface, SuccessOrExit(error = Get(SPINEL_PROP_HWADDR, SPINEL_DATATYPE_EUI64_S, sIeeeEui64.m8)); InitializeCaps(supportsRcpApiVersion, supportsRcpMinHostApiVersion); + if (sSupportsLogCrashDump) + { + SuccessOrDie(Set(SPINEL_PROP_RCP_LOG_CRASH_DUMP, nullptr)); + } + if (!aSkipRcpCompatibilityCheck) { SuccessOrDie(CheckRcpApiVersion(supportsRcpApiVersion, supportsRcpMinHostApiVersion)); diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index 96e362575b4..6b99b4d4a71 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -1947,6 +1947,10 @@ template <> otError NcpBase::HandlePropertyGet(void) SuccessOrExit(error = mEncoder.WriteUintPacked(SPINEL_CAP_RCP_RESET_TO_BOOTLOADER)); #endif +#if OPENTHREAD_CONFIG_PLATFORM_LOG_CRASH_DUMP_ENABLE + SuccessOrExit(error = mEncoder.WriteUintPacked(SPINEL_CAP_RCP_LOG_CRASH_DUMP)); +#endif + #if OPENTHREAD_PLATFORM_POSIX SuccessOrExit(error = mEncoder.WriteUintPacked(SPINEL_CAP_POSIX)); #endif diff --git a/src/ncp/ncp_base_dispatcher.cpp b/src/ncp/ncp_base_dispatcher.cpp index 48bd97e82a7..4522f87949c 100644 --- a/src/ncp/ncp_base_dispatcher.cpp +++ b/src/ncp/ncp_base_dispatcher.cpp @@ -479,6 +479,13 @@ NcpBase::PropertyHandler NcpBase::FindSetPropertyHandler(spinel_prop_key_t aKey) #if OPENTHREAD_CONFIG_TMF_NETDATA_SERVICE_ENABLE OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_SERVER_ALLOW_LOCAL_DATA_CHANGE), #endif +#endif // OPENTHREAD_MTD || OPENTHREAD_FTD + +#if OPENTHREAD_CONFIG_PLATFORM_LOG_CRASH_DUMP_ENABLE + OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_RCP_LOG_CRASH_DUMP), +#endif + +#if OPENTHREAD_MTD || OPENTHREAD_FTD OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_RESET), OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_ALL_MAC_COUNTERS), OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MLE_COUNTERS), @@ -487,6 +494,7 @@ NcpBase::PropertyHandler NcpBase::FindSetPropertyHandler(spinel_prop_key_t aKey) OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_CNTR_MAC_RETRY_HISTOGRAM), #endif #endif // OPENTHREAD_MTD || OPENTHREAD_FTD + #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_RCP_MAC_KEY), OT_NCP_SET_HANDLER_ENTRY(SPINEL_PROP_RCP_MAC_FRAME_COUNTER), diff --git a/src/ncp/ncp_base_radio.cpp b/src/ncp/ncp_base_radio.cpp index cad3ef52ddc..a38ed2b9678 100644 --- a/src/ncp/ncp_base_radio.cpp +++ b/src/ncp/ncp_base_radio.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -614,6 +615,17 @@ template <> otError NcpBase::HandlePropertySet( } #endif +#if OPENTHREAD_CONFIG_PLATFORM_LOG_CRASH_DUMP_ENABLE +template <> otError NcpBase::HandlePropertySet(void) +{ + otError error = OT_ERROR_NONE; + + error = otPlatLogCrashDump(); + + return error; +} +#endif + } // namespace Ncp } // namespace ot