From 5dec993626d3653643b998f55bc0ff9f18c20924 Mon Sep 17 00:00:00 2001 From: Marcin K Szczodrak Date: Fri, 16 Dec 2016 12:56:20 -0800 Subject: [PATCH] fix error logging; add otThreadErrorToString (#1085) --- include/openthread.h | 10 +++ src/core/common/logging.cpp | 147 ++++++++++++++++++++++++++++++++++++ src/core/common/logging.hpp | 4 +- 3 files changed, 159 insertions(+), 2 deletions(-) diff --git a/include/openthread.h b/include/openthread.h index fb9726a7c..836d3b293 100644 --- a/include/openthread.h +++ b/include/openthread.h @@ -2007,6 +2007,16 @@ OTAPI ThreadError OTCALL otIp6AddressFromString(const char *aString, otIp6Addres */ OTAPI uint8_t OTCALL otIp6PrefixMatch(const otIp6Address *aFirst, const otIp6Address *aSecond); +/** + * This function converts a ThreadError enum into a string. + * + * @param[in] aError A ThreadError enum. + * + * @returns A string representation of a ThreadError. + * + */ +OTAPI const char *OTCALL otThreadErrorToString(ThreadError aError); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/core/common/logging.cpp b/src/core/common/logging.cpp index 825c216e6..7351d9c5f 100644 --- a/src/core/common/logging.cpp +++ b/src/core/common/logging.cpp @@ -39,6 +39,7 @@ #include #endif +#include #include #ifndef WINDOWS_LOGGING @@ -248,6 +249,152 @@ const char *otLogRegionToString(otLogRegion aRegion) } #endif // OPENTHREAD_CONFIG_LOG_PREPEND_REGION +const char *otThreadErrorToString(ThreadError aError) +{ + const char *retval; + + switch (aError) + { + case kThreadError_None: + retval = "None"; + break; + + case kThreadError_Failed: + retval = "Failed"; + break; + + case kThreadError_Drop: + retval = "Drop"; + break; + + case kThreadError_NoBufs: + retval = "NoBufs"; + break; + + case kThreadError_NoRoute: + retval = "NoRoute"; + break; + + case kThreadError_Busy: + retval = "Busy"; + break; + + case kThreadError_Parse: + retval = "Parse"; + break; + + case kThreadError_InvalidArgs: + retval = "InvalidArgs"; + break; + + case kThreadError_Security: + retval = "Security"; + break; + + case kThreadError_AddressQuery: + retval = "AddressQuery"; + break; + + case kThreadError_NoAddress: + retval = "NoAddress"; + break; + + case kThreadError_NotReceiving: + retval = "NotReceiving"; + break; + + case kThreadError_Abort: + retval = "Abort"; + break; + + case kThreadError_NotImplemented: + retval = "NotImplemented"; + break; + + case kThreadError_InvalidState: + retval = "InvalidState"; + break; + + case kThreadError_NoTasklets: + retval = "NoTasklets"; + break; + + case kThreadError_NoAck: + retval = "NoAck"; + break; + + case kThreadError_ChannelAccessFailure: + retval = "ChannelAccessFailure"; + break; + + case kThreadError_Detached: + retval = "Detached"; + break; + + case kThreadError_FcsErr: + retval = "FcsErr"; + break; + + case kThreadError_NoFrameReceived: + retval = "NoFrameReceived"; + break; + + case kThreadError_UnknownNeighbor: + retval = "UnknownNeighbor"; + break; + + case kThreadError_InvalidSourceAddress: + retval = "InvalidSourceAddress"; + break; + + case kThreadError_WhitelistFiltered: + retval = "WhitelistFiltered"; + break; + + case kThreadError_DestinationAddressFiltered: + retval = "DestinationAddressFiltered"; + break; + + case kThreadError_NotFound: + retval = "NotFound"; + break; + + case kThreadError_Already: + retval = "Already"; + break; + + case kThreadError_BlacklistFiltered: + retval = "BlacklistFiltered"; + break; + + case kThreadError_Ipv6AddressCreationFailure: + retval = "Ipv6AddressCreationFailure"; + break; + + case kThreadError_NotCapable: + retval = "NotCapable"; + break; + + case kThreadError_ResponseTimeout: + retval = "ResponseTimeout"; + break; + + case kThreadError_Duplicated: + retval = "Duplicated"; + break; + + case kThreadError_Error: + retval = "GenericError"; + break; + + default: + retval = "UnknownErrorType"; + break; + } + + return retval; +} + #ifdef __cplusplus }; #endif diff --git a/src/core/common/logging.hpp b/src/core/common/logging.hpp index 6537d4868..13e33e6f8 100644 --- a/src/core/common/logging.hpp +++ b/src/core/common/logging.hpp @@ -278,7 +278,7 @@ extern "C" { #ifdef OPENTHREAD_CONFIG_LOG_MLE #define otLogCritMle(aFormat, ...) otLogCrit(kLogRegionMle, aFormat, ## __VA_ARGS__) #define otLogWarnMle(aFormat, ...) otLogWarn(kLogRegionMle, aFormat, ## __VA_ARGS__) -#define otLogWarnMleErr(aError, aFormat, ...) otLogWarn(kLogRegionMle, aFormat ", 0x%x", ## __VA_ARGS__) +#define otLogWarnMleErr(aError, aFormat, ...) otLogWarn(kLogRegionMac, "Error %s: " aFormat, otThreadErrorToString(aError), ## __VA_ARGS__) #define otLogInfoMle(aFormat, ...) otLogInfo(kLogRegionMle, aFormat, ## __VA_ARGS__) #define otLogDebgMle(aFormat, ...) otLogDebg(kLogRegionMle, aFormat, ## __VA_ARGS__) #else @@ -537,7 +537,7 @@ extern "C" { #define otLogWarnMac(aFormat, ...) otLogWarn(kLogRegionMac, aFormat, ## __VA_ARGS__) #define otLogInfoMac(aFormat, ...) otLogInfo(kLogRegionMac, aFormat, ## __VA_ARGS__) #define otLogDebgMac(aFormat, ...) otLogDebg(kLogRegionMac, aFormat, ## __VA_ARGS__) -#define otLogDebgMacErr(aError, aFormat, ...) otLogWarn(kLogRegionMac, aFormat ", 0x%x", ## __VA_ARGS__) +#define otLogDebgMacErr(aError, aFormat, ...) otLogWarn(kLogRegionMac, "Error %s: " aFormat, otThreadErrorToString(aError), ## __VA_ARGS__) #else #define otLogCritMac(aFormat, ...) #define otLogWarnMac(aFormat, ...)