From 1583800b37412f8761f8eb42cb35554c9e43deed Mon Sep 17 00:00:00 2001 From: step0035 Date: Tue, 11 Apr 2023 17:35:09 +0800 Subject: [PATCH] [errormap] add error mapping functions --- src/platform/Ameba/AmebaUtils.cpp | 48 +++++++++++++++++++++++++++++++ src/platform/Ameba/AmebaUtils.h | 15 ++++++++++ 2 files changed, 63 insertions(+) diff --git a/src/platform/Ameba/AmebaUtils.cpp b/src/platform/Ameba/AmebaUtils.cpp index 578ffab2cd5816..9f898203d4c272 100644 --- a/src/platform/Ameba/AmebaUtils.cpp +++ b/src/platform/Ameba/AmebaUtils.cpp @@ -197,3 +197,51 @@ CHIP_ERROR AmebaUtils::SetCurrentProvisionedNetwork() exit: return err; } + +CHIP_ERROR MapError(int32_t error, AmebaErrorType type) +{ + if (type == AmebaErrorType::kDctError) + { + return AmebaDctMapError(error); + } + if (type == AmebaErrorType::kFlashError) + { + return AmebaFlashMapError(error); + } + if (type == AmebaErrorType::kWiFiError) + { + return AmebaWiFiMapError(error); + } +} + +CHIP_ERROR AmebaDctMapError(int32_t error) +{ + if (error == DCT_SUCCESS) + return CHIP_NO_ERROR; + if (error == DCT_ERR_NO_MEMORY) + return CHIP_ERROR_NO_MEMORY; + if (error == DCT_ERR_NOT_FIND) + return CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND; + if (error == DCT_ERR_SIZE_OVER) + return CHIP_ERROR_INVALID_ARGUMENT; + if (error == DCT_ERR_MODULE_BUSY) + return CHIP_ERROR_BUSY; + + return CHIP_ERROR_INTERNAL; +} + +CHIP_ERROR AmebaFlashMapError(int32_t error) +{ + if (error == 1) + return CHIP_NO_ERROR; + + return CHIP_ERROR_INTERNAL; +} + +CHIP_ERROR AmebaWiFiMapError(int32_t error) +{ + if (error == RTW_SUCCESS) + return CHIP_NO_ERROR; + + return CHIP_ERROR_INTERNAL; +} diff --git a/src/platform/Ameba/AmebaUtils.h b/src/platform/Ameba/AmebaUtils.h index 5fcc5c9c2ef487..932e8715ee1cf6 100644 --- a/src/platform/Ameba/AmebaUtils.h +++ b/src/platform/Ameba/AmebaUtils.h @@ -24,6 +24,13 @@ namespace chip { namespace DeviceLayer { namespace Internal { +enum class AmebaErrorType +{ + kDctError, + kFlashError, + kWiFiError, +}; + class AmebaUtils { public: @@ -39,6 +46,14 @@ class AmebaUtils static CHIP_ERROR WiFiConnectProvisionedNetwork(void); static CHIP_ERROR WiFiConnect(const char * ssid, const char * password); static CHIP_ERROR SetCurrentProvisionedNetwork(void); + static CHIP_ERROR WiFiConnect(void); + + static CHIP_ERROR MapError(int32_t error, AmebaErrorType type); + +private: + static CHIP_ERROR AmebaDctMapError(int32_t error); + static CHIP_ERROR AmebaFlashMapError(int32_t error); + static CHIP_ERROR AmebaWiFiMapError(int32_t error); }; } // namespace Internal