Matter SDK Coverage Report
Current view: top level - lib/core - CHIPError.h (source / functions) Coverage Total Hit
Test: SHA:b879ecb8e99e175eea0a293a888bda853da2b19c Lines: 97.4 % 38 37
Test Date: 2025-01-17 19:00:11 Functions: 95.7 % 23 22

            Line data    Source code
       1              : /*
       2              :  *
       3              :  *    Copyright (c) 2020-2022 Project CHIP Authors
       4              :  *    Copyright (c) 2013-2017 Nest Labs, Inc.
       5              :  *
       6              :  *    Licensed under the Apache License, Version 2.0 (the "License");
       7              :  *    you may not use this file except in compliance with the License.
       8              :  *    You may obtain a copy of the License at
       9              :  *
      10              :  *        http://www.apache.org/licenses/LICENSE-2.0
      11              :  *
      12              :  *    Unless required by applicable law or agreed to in writing, software
      13              :  *    distributed under the License is distributed on an "AS IS" BASIS,
      14              :  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      15              :  *    See the License for the specific language governing permissions and
      16              :  *    limitations under the License.
      17              :  */
      18              : 
      19              : /**
      20              :  *    @file
      21              :  *      This file defines error constants for the CHIP core
      22              :  *      subsystem.
      23              :  *
      24              :  *      Error types, ranges, and mappings overrides may be made by
      25              :  *      defining the appropriate CHIP_CONFIG_* or _CHIP_CONFIG_*
      26              :  *      macros.
      27              :  */
      28              : 
      29              : #pragma once
      30              : 
      31              : #include <lib/core/CHIPConfig.h>
      32              : #include <lib/support/TypeTraits.h>
      33              : 
      34              : #include <inttypes.h>
      35              : #include <limits>
      36              : #include <type_traits>
      37              : 
      38              : #if CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
      39              : #include <source_location>
      40              : #endif // CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
      41              : 
      42              : namespace chip {
      43              : 
      44              : /**
      45              :  * This class represents CHIP errors.
      46              :  *
      47              :  * At the top level, an error belongs to a Range and has an integral Value whose meaning depends on the Range.
      48              :  * One, Range::kSDK, is used for the CHIP SDK's own errors; others encapsulate error codes from external sources
      49              :  * (e.g. libraries, OS) into a CHIP_ERROR.
      50              :  *
      51              :  * CHIP SDK errors inside Range::kSDK consist of a component identifier given by SdkPart and an arbitrary small
      52              :  * integer Code.
      53              :  */
      54              : class ChipError
      55              : {
      56              : public:
      57              :     /// Internal representation of an error.
      58              :     using StorageType = uint32_t;
      59              : 
      60              :     /// Type for encapsulated error values.
      61              :     using ValueType = StorageType;
      62              : 
      63              :     /// Integer `printf` format for errors. This is a C macro in order to allow for string literal concatenation.
      64              : #define CHIP_ERROR_INTEGER_FORMAT PRIx32
      65              : 
      66              : #if CHIP_CONFIG_ERROR_FORMAT_AS_STRING
      67              : 
      68              :     /// Type returned by Format().
      69              :     using FormatType = const char *;
      70              :     /// `printf` format for Format(). This is a C macro in order to allow for string literal concatenation.
      71              : #define CHIP_ERROR_FORMAT "s"
      72              : 
      73              : #else // CHIP_CONFIG_ERROR_FORMAT_AS_STRING
      74              : 
      75              :     /// Type returned by Format().
      76              :     using FormatType = StorageType;
      77              :     /// `printf` format for Format(). This is a C macro in order to allow for string literal concatenation.
      78              : #define CHIP_ERROR_FORMAT CHIP_ERROR_INTEGER_FORMAT
      79              : 
      80              : #endif // CHIP_CONFIG_ERROR_FORMAT_AS_STRING
      81              : 
      82              :     /**
      83              :      * Top-level error classification.
      84              :      *
      85              :      * Every error belongs to a Range and has an integral Value whose meaning depends on the Range.
      86              :      * All native CHIP SDK errors belong to the kSDK range. Other ranges are used to encapsulate error
      87              :      * codes from other subsystems (e.g. platform or library) used by the CHIP SDK.
      88              :      */
      89              :     enum class Range : uint8_t
      90              :     {
      91              :         kSDK        = 0x0, ///< CHIP SDK errors.
      92              :         kOS         = 0x1, ///< Encapsulated OS errors, other than POSIX errno.
      93              :         kPOSIX      = 0x2, ///< Encapsulated POSIX errno values.
      94              :         kLwIP       = 0x3, ///< Encapsulated LwIP errors.
      95              :         kOpenThread = 0x4, ///< Encapsulated OpenThread errors.
      96              :         kPlatform   = 0x5, ///< Platform-defined encapsulation.
      97              :         kLastRange  = kPlatform,
      98              :     };
      99              : 
     100              :     /**
     101              :      * Secondary classification of CHIP SDK errors (Range::kSDK).
     102              :      */
     103              :     enum class SdkPart : uint8_t
     104              :     {
     105              :         kCore            = 0, ///< SDK core errors.
     106              :         kInet            = 1, ///< Inet layer errors; see <inet/InetError.h>.
     107              :         kDevice          = 2, ///< Device layer errors; see <platform/CHIPDeviceError.h>.
     108              :         kASN1            = 3, ///< ASN1 errors; see <asn1/ASN1Error.h>.
     109              :         kBLE             = 4, ///< BLE layer errors; see <ble/BleError.h>.
     110              :         kIMGlobalStatus  = 5, ///< Interaction Model global status code.
     111              :         kIMClusterStatus = 6, ///< Interaction Model cluster-specific status code.
     112              :         kApplication     = 7, ///< Application-defined errors; see CHIP_APPLICATION_ERROR
     113              :     };
     114              : 
     115              :     ChipError() = default;
     116              : 
     117              :     // Helper for declaring constructors without too much repetition.
     118              : #if CHIP_CONFIG_ERROR_SOURCE
     119              : #if __cplusplus >= 202002L
     120              : #define CHIP_INITIALIZE_ERROR_SOURCE(f, l, loc) , mFile((f)), mLine((l)), mSourceLocation((loc))
     121              : #else
     122              : #define CHIP_INITIALIZE_ERROR_SOURCE(f, l, loc) , mFile((f)), mLine((l))
     123              : #endif // __cplusplus >= 202002L
     124              : #else  // CHIP_CONFIG_ERROR_SOURCE
     125              : #define CHIP_INITIALIZE_ERROR_SOURCE(f, l, loc)
     126              : #endif // CHIP_CONFIG_ERROR_SOURCE
     127              : 
     128              :     /**
     129              :      * Construct a CHIP_ERROR encapsulating @a value inside the Range @a range.
     130              :      *
     131              :      * @note
     132              :      *  The result is valid only if CanEncapsulate() is true.
     133              :      */
     134            0 :     constexpr ChipError(Range range, ValueType value) : ChipError(range, value, /*file=*/nullptr, /*line=*/0) {}
     135              : #if CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     136              :     constexpr ChipError(Range range, ValueType value, const char * file, unsigned int line,
     137              :                         std::source_location location = std::source_location::current()) :
     138              :         mError(MakeInteger(range, (value & MakeMask(0, kValueLength)))) CHIP_INITIALIZE_ERROR_SOURCE(file, line, location)
     139              :     {}
     140              : #else
     141        14579 :     constexpr ChipError(Range range, ValueType value, const char * file, unsigned int line) :
     142        14579 :         mError(MakeInteger(range, (value & MakeMask(0, kValueLength)))) CHIP_INITIALIZE_ERROR_SOURCE(file, line, /*loc=*/nullptr)
     143        14579 :     {}
     144              : #endif // CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     145              : 
     146              :     /**
     147              :      * Construct a CHIP_ERROR for SdkPart @a part with @a code.
     148              :      *
     149              :      * @note
     150              :      *  The macro version CHIP_SDK_ERROR checks that the numeric value is constant and well-formed.
     151              :      */
     152          120 :     constexpr ChipError(SdkPart part, uint8_t code) : ChipError(part, code, /*file=*/nullptr, /*line=*/0) {}
     153              : #if CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     154              :     constexpr ChipError(SdkPart part, uint8_t code, const char * file, unsigned int line,
     155              :                         std::source_location location = std::source_location::current()) :
     156              :         mError(MakeInteger(part, code)) CHIP_INITIALIZE_ERROR_SOURCE(file, line, location)
     157              :     {}
     158              : #else
     159          138 :     constexpr ChipError(SdkPart part, uint8_t code, const char * file, unsigned int line) :
     160          138 :         mError(MakeInteger(part, code)) CHIP_INITIALIZE_ERROR_SOURCE(file, line, /*loc=*/nullptr)
     161          138 :     {}
     162              : #endif // CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     163              : 
     164              :     /**
     165              :      * Construct a CHIP_ERROR constant for SdkPart @a part with @a code at the current source line.
     166              :      * This checks that the numeric value is constant and well-formed.
     167              :      * (In C++20 this could be replaced by a consteval constructor.)
     168              :      */
     169              : #if CHIP_CONFIG_ERROR_SOURCE
     170              : #define CHIP_SDK_ERROR(part, code)                                                                                                 \
     171              :     (::chip::ChipError(::chip::ChipError::SdkErrorConstant<(part), (code)>::value, __FILE__, __LINE__))
     172              : #else // CHIP_CONFIG_ERROR_SOURCE
     173              : #define CHIP_SDK_ERROR(part, code) (::chip::ChipError(::chip::ChipError::SdkErrorConstant<(part), (code)>::value))
     174              : #endif // CHIP_CONFIG_ERROR_SOURCE
     175              : 
     176              :     /**
     177              :      * Construct a CHIP_ERROR from the underlying storage type.
     178              :      *
     179              :      * @note
     180              :      *  This is intended to be used only in foreign function interfaces.
     181              :      */
     182              :     explicit constexpr ChipError(StorageType error) : ChipError(error, /*file=*/nullptr, /*line=*/0) {}
     183              : #if CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     184              :     explicit constexpr ChipError(StorageType error, const char * file, unsigned int line,
     185              :                                  std::source_location location = std::source_location::current()) :
     186              :         mError(error) CHIP_INITIALIZE_ERROR_SOURCE(file, line, location)
     187              :     {}
     188              : #else
     189    118441297 :     explicit constexpr ChipError(StorageType error, const char * file, unsigned int line) :
     190    118441297 :         mError(error) CHIP_INITIALIZE_ERROR_SOURCE(file, line, /*loc=*/nullptr)
     191    118441297 :     {}
     192              : #endif // CHIP_CONFIG_ERROR_SOURCE && __cplusplus >= 202002L
     193              : 
     194              : #undef CHIP_INITIALIZE_ERROR_SOURCE
     195              : 
     196              :     /**
     197              :      * Compare errors for equality.
     198              :      *
     199              :      * @note
     200              :      *  This only compares the error code. Under the CHIP_CONFIG_ERROR_SOURCE configuration, errors compare equal
     201              :      *  if they have the same error code, even if they have different source locations.
     202              :      */
     203      2571944 :     bool operator==(const ChipError & other) const { return mError == other.mError; }
     204     17494511 :     bool operator!=(const ChipError & other) const { return mError != other.mError; }
     205              : 
     206              :     /**
     207              :      * Return an integer code for the error.
     208              :      */
     209      1065243 :     constexpr StorageType AsInteger() const { return mError; }
     210              : 
     211              :     /*
     212              :      * IsSuccess() is intended to support macros that can take either a ChipError or an integer error code.
     213              :      * The latter follows the C convention that a non-zero integer indicates an error.
     214              :      *
     215              :      * @note
     216              :      *  Normal code should use `status == CHIP_NO_ERROR` rather than `IsSuccess(status)`.
     217              :      */
     218     69002321 :     static constexpr bool IsSuccess(ChipError error) { return error.mError == 0; }
     219              :     static constexpr bool IsSuccess(StorageType error) { return error == 0; }
     220              : 
     221              :     /**
     222              :      * Format an @a error for printing.
     223              :      *
     224              :      * Normally, this is used with the `printf()`-style macro CHIP_ERROR_FORMAT.
     225              :      * For example,
     226              :      *  @code
     227              :      *      ChipLogError(subsystem, "A bad thing happened! %" CHIP_ERROR_FORMAT, status.Format());
     228              :      *  @endcode
     229              :      */
     230              : #if CHIP_CONFIG_ERROR_FORMAT_AS_STRING
     231      1064123 :     FormatType Format() const { return AsString(); }
     232              : #else  // CHIP_CONFIG_ERROR_FORMAT_AS_STRING
     233              :     FormatType Format() const { return mError; }
     234              : #endif // CHIP_CONFIG_ERROR_FORMAT_AS_STRING
     235              : 
     236              :     /**
     237              :      * Format an @a error as a string for printing.
     238              :      *
     239              :      * @note
     240              :      *  Normally, prefer to use Format()
     241              :      */
     242      1066557 :     const char * AsString(bool withSourceLocation = true) const
     243              :     {
     244              :         extern const char * ErrorStr(ChipError, bool);
     245      1066557 :         return ErrorStr(*this, withSourceLocation);
     246              :     }
     247              : 
     248              :     /**
     249              :      * Test whether @a error belongs to the Range @a range.
     250              :      */
     251          250 :     constexpr bool IsRange(Range range) const
     252              :     {
     253          250 :         return (mError & MakeMask(kRangeStart, kRangeLength)) == MakeField(kRangeStart, static_cast<StorageType>(range));
     254              :     }
     255              : 
     256              :     /**
     257              :      * Get the Range to which the @a error belongs.
     258              :      */
     259              :     constexpr Range GetRange() const { return static_cast<Range>(GetField(kRangeStart, kRangeLength, mError)); }
     260              : 
     261              :     /**
     262              :      * Get the encapsulated value of an @a error.
     263              :      */
     264           13 :     constexpr ValueType GetValue() const { return GetField(kValueStart, kValueLength, mError); }
     265              : 
     266              :     /**
     267              :      * Test whether type @a T can always be losslessly encapsulated in a CHIP_ERROR.
     268              :      */
     269              :     template <typename T>
     270              :     static constexpr bool CanEncapsulate()
     271              :     {
     272              :         return std::numeric_limits<typename std::make_unsigned_t<T>>::digits <= kValueLength;
     273              :     }
     274              : 
     275              :     /**
     276              :      * Test whether if @a value can be losslessly encapsulated in a CHIP_ERROR.
     277              :      */
     278              :     template <typename T>
     279              :     static constexpr bool CanEncapsulate(T value)
     280              :     {
     281              :         return CanEncapsulate<T>() || FitsInField(kValueLength, static_cast<ValueType>(value));
     282              :     }
     283              : 
     284              :     /**
     285              :      * Test whether @a error is an SDK error belonging to the SdkPart @a part.
     286              :      */
     287         6195 :     constexpr bool IsPart(SdkPart part) const
     288              :     {
     289         6195 :         return (mError & (MakeMask(kRangeStart, kRangeLength) | MakeMask(kSdkPartStart, kSdkPartLength))) ==
     290         6195 :             (MakeField(kRangeStart, static_cast<StorageType>(Range::kSDK)) |
     291         6195 :              MakeField(kSdkPartStart, static_cast<StorageType>(part)));
     292              :     }
     293              : 
     294              :     /**
     295              :      * Get the SDK code for an SDK error.
     296              :      */
     297          147 :     constexpr uint8_t GetSdkCode() const { return static_cast<uint8_t>(GetField(kSdkCodeStart, kSdkCodeLength, mError)); }
     298              : 
     299              :     /**
     300              :      * Test whether @a error is an SDK error representing an Interaction Model
     301              :      * status.  If it is, it can be converted to/from an interaction model
     302              :      * StatusIB struct.
     303              :      */
     304          445 :     constexpr bool IsIMStatus() const
     305              :     {
     306              :         // Open question: should CHIP_NO_ERROR be treated as an IM status for
     307              :         // purposes of this test?
     308          445 :         return IsPart(SdkPart::kIMGlobalStatus) || IsPart(SdkPart::kIMClusterStatus);
     309              :     }
     310              : 
     311              : #if CHIP_CONFIG_ERROR_SOURCE
     312              : 
     313              :     /**
     314              :      * Get the source file name of the point where the error occurred.
     315              :      *
     316              :      * @note
     317              :      *  This will be `nullptr` if the error was not created with a file name.
     318              :      */
     319      1067208 :     const char * GetFile() const { return mFile; }
     320              : 
     321              :     /**
     322              :      * Get the source line number of the point where the error occurred.
     323              :      *
     324              :      * @note
     325              :      *  This will be 0 if the error was not created with a file name.
     326              :      */
     327      1067407 :     unsigned int GetLine() const { return mLine; }
     328              : 
     329              : #if __cplusplus >= 202002L
     330              :     /**
     331              :      * Get the source_location of the point where the error occurred.
     332              :      */
     333              :     const std::source_location & GetSourceLocation() { return mSourceLocation; }
     334              : #endif // __cplusplus >= 202002L
     335              : #endif // CHIP_CONFIG_ERROR_SOURCE
     336              : 
     337              : private:
     338              :     /*
     339              :      * The representation of a CHIP_ERROR is structured so that SDK error code constants are small, in order to improve code
     340              :      * density on embedded builds. Arm 32, Xtensa, and RISC-V can all handle 11-bit values in a move-immediate instruction.
     341              :      * Further, SdkPart::kCore is 0 so that the most common errors fit in 8 bits for additional density on some processors.
     342              :      *
     343              :      *  31    28      24      20      16      12       8       4       0    Bit
     344              :      *  |       |       |       |       |       |       |       |       |
     345              :      *  |     range     |                     value                     |
     346              :      *  |    kSdk==0    |       0               |0| part|    code       |   SDK error
     347              :      *  |    01 - FF    |          encapsulated error code              |   Encapsulated error
     348              :      */
     349              :     static constexpr int kRangeStart  = 24;
     350              :     static constexpr int kRangeLength = 8;
     351              :     static constexpr int kValueStart  = 0;
     352              :     static constexpr int kValueLength = 24;
     353              : 
     354              :     static constexpr int kSdkPartStart  = 8;
     355              :     static constexpr int kSdkPartLength = 3;
     356              :     static constexpr int kSdkCodeStart  = 0;
     357              :     static constexpr int kSdkCodeLength = 8;
     358              : 
     359          160 :     static constexpr StorageType GetField(unsigned int start, unsigned int length, StorageType value)
     360              :     {
     361          160 :         return (value >> start) & ((1u << length) - 1);
     362              :     }
     363        24313 :     static constexpr StorageType MakeMask(unsigned int start, unsigned int length) { return ((1u << length) - 1) << start; }
     364        42722 :     static constexpr StorageType MakeField(unsigned int start, StorageType value) { return value << start; }
     365              :     static constexpr bool FitsInField(unsigned int length, StorageType value) { return value < (1u << length); }
     366              : 
     367        14717 :     static constexpr StorageType MakeInteger(Range range, StorageType value)
     368              :     {
     369        14717 :         return MakeField(kRangeStart, to_underlying(range)) | MakeField(kValueStart, value);
     370              :     }
     371          138 :     static constexpr StorageType MakeInteger(SdkPart part, uint8_t code)
     372              :     {
     373          138 :         return MakeInteger(Range::kSDK, MakeField(kSdkPartStart, to_underlying(part)) | MakeField(kSdkCodeStart, code));
     374              :     }
     375              :     template <unsigned int START, unsigned int LENGTH>
     376              :     struct MaskConstant
     377              :     {
     378              :         static constexpr StorageType value = ((1u << LENGTH) - 1) << START;
     379              :     };
     380              : 
     381              :     // Assert that Range and Value fields fit in StorageType and don't overlap.
     382              :     static_assert(kRangeStart + kRangeLength <= std::numeric_limits<StorageType>::digits, "Range does not fit in StorageType");
     383              :     static_assert(kValueStart + kValueLength <= std::numeric_limits<StorageType>::digits, "Value does not fit in StorageType");
     384              :     static_assert((MaskConstant<kRangeStart, kRangeLength>::value & MaskConstant<kValueStart, kValueLength>::value) == 0,
     385              :                   "Range and Value overlap");
     386              : 
     387              :     // Assert that SDK Part and Code fields fit in SdkCode field and don't overlap.
     388              :     static_assert(kSdkPartStart + kSdkPartLength <= kValueLength, "SdkPart does not fit in Value");
     389              :     static_assert(kSdkCodeStart + kSdkCodeLength <= kValueLength, "SdkCode does not fit in Value");
     390              :     static_assert((MaskConstant<kSdkPartStart, kSdkPartLength>::value & MaskConstant<kSdkCodeStart, kSdkCodeLength>::value) == 0,
     391              :                   "SdkPart and SdkCode overlap");
     392              : 
     393              :     // Assert that Value fits in ValueType.
     394              :     static_assert(kValueStart + kValueLength <= std::numeric_limits<ValueType>::digits, "Value does not fit in ValueType");
     395              : 
     396              :     StorageType mError;
     397              : 
     398              : #if CHIP_CONFIG_ERROR_SOURCE
     399              :     const char * mFile;
     400              :     unsigned int mLine;
     401              : #if __cplusplus >= 202002L
     402              :     std::source_location mSourceLocation;
     403              : #endif // __cplusplus >= 202002L
     404              : #endif // CHIP_CONFIG_ERROR_SOURCE
     405              : 
     406              : public:
     407              :     /**
     408              :      * Helper for constructing error constants.
     409              :      *
     410              :      * This template ensures that the numeric value is constant and well-formed.
     411              :      */
     412              :     template <SdkPart PART, StorageType SCODE>
     413              :     struct SdkErrorConstant
     414              :     {
     415              :         static_assert(FitsInField(kSdkPartLength, to_underlying(PART)), "part is too large");
     416              :         static_assert(FitsInField(kSdkCodeLength, SCODE), "code is too large");
     417              :         static_assert(MakeInteger(PART, SCODE) != 0, "value is zero");
     418              :         static constexpr StorageType value = MakeInteger(PART, SCODE);
     419              :     };
     420              : };
     421              : 
     422              : } // namespace chip
     423              : 
     424              : /**
     425              :  *  The basic type for all CHIP errors.
     426              :  */
     427              : using CHIP_ERROR = ::chip::ChipError;
     428              : 
     429              : /**
     430              :  * Applications using the CHIP SDK can use this to define error codes in the CHIP_ERROR space for their own purposes.
     431              :  * This is suitable for a small fixed set of errors, similar to `CHIP_ERROR_…` constants. For embedding arbitrary or
     432              :  * larger values, use a custom Range offset from Range::kLastRange.
     433              :  */
     434              : #define CHIP_APPLICATION_ERROR(e) CHIP_SDK_ERROR(::chip::ChipError::SdkPart::kApplication, (e))
     435              : 
     436              : #define CHIP_CORE_ERROR(e) CHIP_SDK_ERROR(::chip::ChipError::SdkPart::kCore, (e))
     437              : 
     438              : #define CHIP_IM_GLOBAL_STATUS(type)                                                                                                \
     439              :     CHIP_SDK_ERROR(::chip::ChipError::SdkPart::kIMGlobalStatus,                                                                    \
     440              :                    ::chip::to_underlying(::chip::Protocols::InteractionModel::Status::type))
     441              : 
     442              : // Defines a runtime-value for a chip-error that contains a global IM Status.
     443              : #if CHIP_CONFIG_ERROR_SOURCE
     444              : #define CHIP_ERROR_IM_GLOBAL_STATUS_VALUE(status_value)                                                                            \
     445              :     ::chip::ChipError(::chip::ChipError::SdkPart::kIMGlobalStatus, ::chip::to_underlying(status_value), __FILE__, __LINE__)
     446              : #else
     447              : #define CHIP_ERROR_IM_GLOBAL_STATUS_VALUE(status_value)                                                                            \
     448              :     ::chip::ChipError(::chip::ChipError::SdkPart::kIMGlobalStatus, ::chip::to_underlying(status_value))
     449              : #endif // CHIP_CONFIG_ERROR_SOURCE
     450              : 
     451              : //
     452              : // type must be a compile-time constant as mandated by CHIP_SDK_ERROR.
     453              : //
     454              : #define CHIP_IM_CLUSTER_STATUS(type) CHIP_SDK_ERROR(::chip::ChipError::SdkPart::kIMClusterStatus, type)
     455              : 
     456              : // Defines a runtime-value for a chip-error that contains a cluster-specific error status.
     457              : // Must not be used with cluster-specific success status codes.
     458              : #if CHIP_CONFIG_ERROR_SOURCE
     459              : #define CHIP_ERROR_IM_CLUSTER_STATUS_VALUE(status_value)                                                                           \
     460              :     ::chip::ChipError(::chip::ChipError::SdkPart::kIMClusterStatus, status_value, __FILE__, __LINE__)
     461              : #else
     462              : #define CHIP_ERROR_IM_CLUSTER_STATUS_VALUE(status_value)                                                                           \
     463              :     ::chip::ChipError(::chip::ChipError::SdkPart::kIMClusterStatus, status_value)
     464              : #endif // CHIP_CONFIG_ERROR_SOURCE
     465              : 
     466              : // clang-format off
     467              : 
     468              : /**
     469              :  *  @name Error Definitions
     470              :  *
     471              :  *  @{
     472              :  */
     473              : 
     474              : /**
     475              :  *  @def CHIP_NO_ERROR
     476              :  *
     477              :  *  @brief
     478              :  *    This defines the CHIP error code for success or no error.
     479              :  *
     480              :  */
     481              : #if CHIP_CONFIG_ERROR_SOURCE && CHIP_CONFIG_ERROR_SOURCE_NO_ERROR
     482              : #define CHIP_NO_ERROR                                          CHIP_ERROR(0, __FILE__, __LINE__)
     483              : #else // CHIP_CONFIG_ERROR_SOURCE && CHIP_CONFIG_ERROR_SOURCE_NO_ERROR
     484              : #define CHIP_NO_ERROR                                          CHIP_ERROR(0)
     485              : #endif // CHIP_CONFIG_ERROR_SOURCE && CHIP_CONFIG_ERROR_SOURCE_NO_ERROR
     486              : 
     487              : /**
     488              :  *  @def CHIP_ERROR_SENDING_BLOCKED
     489              :  *
     490              :  *  @brief
     491              :  *    A message exceeds the sent limit.
     492              :  *
     493              :  */
     494              : #define CHIP_ERROR_SENDING_BLOCKED                             CHIP_CORE_ERROR(0x01)
     495              : 
     496              : /**
     497              :  *  @def CHIP_ERROR_CONNECTION_ABORTED
     498              :  *
     499              :  *  @brief
     500              :  *    A connection has been aborted.
     501              :  *
     502              :  */
     503              : #define CHIP_ERROR_CONNECTION_ABORTED                          CHIP_CORE_ERROR(0x02)
     504              : 
     505              : /**
     506              :  *  @def CHIP_ERROR_INCORRECT_STATE
     507              :  *
     508              :  *  @brief
     509              :  *    An unexpected state was encountered.
     510              :  *
     511              :  */
     512              : #define CHIP_ERROR_INCORRECT_STATE                             CHIP_CORE_ERROR(0x03)
     513              : 
     514              : /**
     515              :  *  @def CHIP_ERROR_MESSAGE_TOO_LONG
     516              :  *
     517              :  *  @brief
     518              :  *    A message is too long.
     519              :  *
     520              :  */
     521              : #define CHIP_ERROR_MESSAGE_TOO_LONG                            CHIP_CORE_ERROR(0x04)
     522              : 
     523              : /**
     524              :  *    Recursion depth overflow
     525              :  */
     526              : #define CHIP_ERROR_RECURSION_DEPTH_LIMIT                       CHIP_CORE_ERROR(0x05)
     527              : 
     528              : /**
     529              :  *  @def CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS
     530              :  *
     531              :  *  @brief
     532              :  *    The attempt to register an unsolicited message handler failed because the
     533              :  *    unsolicited message handler pool is full.
     534              :  *
     535              :  */
     536              : #define CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS       CHIP_CORE_ERROR(0x06)
     537              : 
     538              : /**
     539              :  *  @def CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER
     540              :  *
     541              :  *  @brief
     542              :  *    The attempt to unregister an unsolicited message handler failed because
     543              :  *    the target handler was not found in the unsolicited message handler pool.
     544              :  *
     545              :  */
     546              : #define CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER              CHIP_CORE_ERROR(0x07)
     547              : 
     548              : /**
     549              :  *  @def CHIP_ERROR_NO_CONNECTION_HANDLER
     550              :  *
     551              :  *  @brief
     552              :  *    No callback has been registered for handling a connection.
     553              :  *
     554              :  */
     555              : #define CHIP_ERROR_NO_CONNECTION_HANDLER                       CHIP_CORE_ERROR(0x08)
     556              : 
     557              : /**
     558              :  *  @def CHIP_ERROR_TOO_MANY_PEER_NODES
     559              :  *
     560              :  *  @brief
     561              :  *    The number of peer nodes exceeds the maximum limit of a local node.
     562              :  *
     563              :  */
     564              : #define CHIP_ERROR_TOO_MANY_PEER_NODES                         CHIP_CORE_ERROR(0x09)
     565              : 
     566              : /**
     567              :  *  @def CHIP_ERROR_SENTINEL
     568              :  *
     569              :  *  @brief
     570              :  *    For use locally to mark conditions such as value found or end of iteration.
     571              :  *
     572              :  */
     573              : #define CHIP_ERROR_SENTINEL                                    CHIP_CORE_ERROR(0x0a)
     574              : 
     575              : /**
     576              :  *  @def CHIP_ERROR_NO_MEMORY
     577              :  *
     578              :  *  @brief
     579              :  *    The attempt to allocate a buffer or object failed due to a lack of memory.
     580              :  *
     581              :  */
     582              : #define CHIP_ERROR_NO_MEMORY                                   CHIP_CORE_ERROR(0x0b)
     583              : 
     584              : /**
     585              :  *  @def CHIP_ERROR_NO_MESSAGE_HANDLER
     586              :  *
     587              :  *  @brief
     588              :  *    No callback has been registered for handling a message.
     589              :  *
     590              :  */
     591              : #define CHIP_ERROR_NO_MESSAGE_HANDLER                          CHIP_CORE_ERROR(0x0c)
     592              : 
     593              : /**
     594              :  *  @def CHIP_ERROR_MESSAGE_INCOMPLETE
     595              :  *
     596              :  *  @brief
     597              :  *    A message is incomplete.
     598              :  *
     599              :  */
     600              : #define CHIP_ERROR_MESSAGE_INCOMPLETE                          CHIP_CORE_ERROR(0x0d)
     601              : 
     602              : /**
     603              :  *  @def CHIP_ERROR_DATA_NOT_ALIGNED
     604              :  *
     605              :  *  @brief
     606              :  *    The data is not aligned.
     607              :  *
     608              :  */
     609              : #define CHIP_ERROR_DATA_NOT_ALIGNED                            CHIP_CORE_ERROR(0x0e)
     610              : 
     611              : /**
     612              :  *  @def CHIP_ERROR_UNKNOWN_KEY_TYPE
     613              :  *
     614              :  *  @brief
     615              :  *    The encryption key type is unknown.
     616              :  *
     617              :  */
     618              : #define CHIP_ERROR_UNKNOWN_KEY_TYPE                            CHIP_CORE_ERROR(0x0f)
     619              : 
     620              : /**
     621              :  *  @def CHIP_ERROR_KEY_NOT_FOUND
     622              :  *
     623              :  *  @brief
     624              :  *    The encryption key is not found.
     625              :  *
     626              :  */
     627              : #define CHIP_ERROR_KEY_NOT_FOUND                               CHIP_CORE_ERROR(0x10)
     628              : 
     629              : /**
     630              :  *  @def CHIP_ERROR_WRONG_ENCRYPTION_TYPE
     631              :  *
     632              :  *  @brief
     633              :  *    The encryption type is incorrect for the specified key.
     634              :  *
     635              :  */
     636              : #define CHIP_ERROR_WRONG_ENCRYPTION_TYPE                       CHIP_CORE_ERROR(0x11)
     637              : 
     638              : /**
     639              :  *  @def CHIP_ERROR_INVALID_UTF8
     640              :  *
     641              :  *  @brief
     642              :  *    Invalid UTF8 string (contains some characters that are invalid)
     643              :  *
     644              :  */
     645              : #define CHIP_ERROR_INVALID_UTF8                                CHIP_CORE_ERROR(0x12)
     646              : 
     647              : /**
     648              :  *  @def CHIP_ERROR_INTEGRITY_CHECK_FAILED
     649              :  *
     650              :  *  @brief
     651              :  *    The integrity check in the message does not match the expected integrity
     652              :  *    check.
     653              :  *
     654              :  */
     655              : #define CHIP_ERROR_INTEGRITY_CHECK_FAILED                      CHIP_CORE_ERROR(0x13)
     656              : 
     657              : /**
     658              :  *  @def CHIP_ERROR_INVALID_SIGNATURE
     659              :  *
     660              :  *  @brief
     661              :  *    Invalid signature.
     662              :  *
     663              :  */
     664              : #define CHIP_ERROR_INVALID_SIGNATURE                           CHIP_CORE_ERROR(0x14)
     665              : 
     666              : /**
     667              :  *  @def CHIP_ERROR_INVALID_TLV_CHAR_STRING
     668              :  *
     669              :  *  @brief
     670              :  *    Invalid TLV character string (e.g. null terminator)
     671              :  *
     672              :  */
     673              : #define CHIP_ERROR_INVALID_TLV_CHAR_STRING                     CHIP_CORE_ERROR(0x15)
     674              : 
     675              : /**
     676              :  *  @def CHIP_ERROR_LIT_SUBSCRIBE_INACTIVE_TIMEOUT
     677              :  *
     678              :  *  @brief
     679              :  *    Subscription timeout caused by LIT ICD device inactive mode
     680              :  *
     681              :  */
     682              : #define CHIP_ERROR_LIT_SUBSCRIBE_INACTIVE_TIMEOUT              CHIP_CORE_ERROR(0x16)
     683              : 
     684              : /**
     685              :  *  @def CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE
     686              :  *
     687              :  *  @brief
     688              :  *    A signature type is unsupported.
     689              :  *
     690              :  */
     691              : #define CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE                  CHIP_CORE_ERROR(0x17)
     692              : 
     693              : /**
     694              :  *  @def CHIP_ERROR_INVALID_MESSAGE_LENGTH
     695              :  *
     696              :  *  @brief
     697              :  *    A message length is invalid.
     698              :  *
     699              :  */
     700              : #define CHIP_ERROR_INVALID_MESSAGE_LENGTH                      CHIP_CORE_ERROR(0x18)
     701              : 
     702              : /**
     703              :  *  @def CHIP_ERROR_BUFFER_TOO_SMALL
     704              :  *
     705              :  *  @brief
     706              :  *    A buffer is too small.
     707              :  *
     708              :  */
     709              : #define CHIP_ERROR_BUFFER_TOO_SMALL                            CHIP_CORE_ERROR(0x19)
     710              : 
     711              : /**
     712              :  *  @def CHIP_ERROR_DUPLICATE_KEY_ID
     713              :  *
     714              :  *  @brief
     715              :  *    A key id is duplicate.
     716              :  *
     717              :  */
     718              : #define CHIP_ERROR_DUPLICATE_KEY_ID                            CHIP_CORE_ERROR(0x1a)
     719              : 
     720              : /**
     721              :  *  @def CHIP_ERROR_WRONG_KEY_TYPE
     722              :  *
     723              :  *  @brief
     724              :  *    A key type does not match the expected key type.
     725              :  *
     726              :  */
     727              : #define CHIP_ERROR_WRONG_KEY_TYPE                              CHIP_CORE_ERROR(0x1b)
     728              : 
     729              : /**
     730              :  *  @def CHIP_ERROR_UNINITIALIZED
     731              :  *
     732              :  *  @brief
     733              :  *    A requested object is uninitialized.
     734              :  *
     735              :  */
     736              : #define CHIP_ERROR_UNINITIALIZED                               CHIP_CORE_ERROR(0x1c)
     737              : 
     738              : /**
     739              :  *  @def CHIP_ERROR_INVALID_IPK
     740              :  *
     741              :  *  @brief
     742              :  *    The IPK is invalid
     743              :  *
     744              :  */
     745              : #define CHIP_ERROR_INVALID_IPK                                 CHIP_CORE_ERROR(0x1d)
     746              : 
     747              : /**
     748              :  *  @def CHIP_ERROR_INVALID_STRING_LENGTH
     749              :  *
     750              :  *  @brief
     751              :  *    A string length is invalid.
     752              :  *
     753              :  */
     754              : #define CHIP_ERROR_INVALID_STRING_LENGTH                       CHIP_CORE_ERROR(0x1e)
     755              : 
     756              : /**
     757              :  *  @def CHIP_ERROR_INVALID_LIST_LENGTH
     758              :  *
     759              :  *  @brief
     760              :  *    A list length is invalid.
     761              :  *
     762              :  */
     763              : #define CHIP_ERROR_INVALID_LIST_LENGTH                         CHIP_CORE_ERROR(0x1f)
     764              : 
     765              : /**
     766              :  *  @def CHIP_ERROR_FAILED_DEVICE_ATTESTATION
     767              :  *
     768              :  *  @brief
     769              :  *    Device Attestation failed.
     770              :  *
     771              :  */
     772              : #define CHIP_ERROR_FAILED_DEVICE_ATTESTATION                   CHIP_CORE_ERROR(0x20)
     773              : 
     774              : /**
     775              :  *  @def CHIP_END_OF_TLV
     776              :  *
     777              :  *  @brief
     778              :  *    The end of a TLV encoding,
     779              :  *    or the end of a TLV container element has been reached.
     780              :  *
     781              :  */
     782              : #define CHIP_ERROR_END_OF_TLV                                  CHIP_CORE_ERROR(0x21)
     783              : #define CHIP_END_OF_TLV CHIP_ERROR_END_OF_TLV
     784              : 
     785              : /**
     786              :  *  @def CHIP_ERROR_TLV_UNDERRUN
     787              :  *
     788              :  *  @brief
     789              :  *    The TLV encoding ended prematurely.
     790              :  *
     791              :  */
     792              : #define CHIP_ERROR_TLV_UNDERRUN                                CHIP_CORE_ERROR(0x22)
     793              : 
     794              : /**
     795              :  *  @def CHIP_ERROR_INVALID_TLV_ELEMENT
     796              :  *
     797              :  *  @brief
     798              :  *    A TLV element is invalid.
     799              :  *
     800              :  */
     801              : #define CHIP_ERROR_INVALID_TLV_ELEMENT                         CHIP_CORE_ERROR(0x23)
     802              : 
     803              : /**
     804              :  *  @def CHIP_ERROR_INVALID_TLV_TAG
     805              :  *
     806              :  *  @brief
     807              :  *    A TLV tag is invalid.
     808              :  *
     809              :  */
     810              : #define CHIP_ERROR_INVALID_TLV_TAG                             CHIP_CORE_ERROR(0x24)
     811              : 
     812              : /**
     813              :  *  @def CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG
     814              :  *
     815              :  *  @brief
     816              :  *    An implicitly encoded TLV tag was encountered,
     817              :  *    but an implicit profile id has not been defined.
     818              :  *
     819              :  */
     820              : #define CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG                    CHIP_CORE_ERROR(0x25)
     821              : 
     822              : /**
     823              :  *  @def CHIP_ERROR_WRONG_TLV_TYPE
     824              :  *
     825              :  *  @brief
     826              :  *    A TLV type is wrong.
     827              :  *
     828              :  */
     829              : #define CHIP_ERROR_WRONG_TLV_TYPE                              CHIP_CORE_ERROR(0x26)
     830              : 
     831              : /**
     832              :  *  @def CHIP_ERROR_TLV_CONTAINER_OPEN
     833              :  *
     834              :  *  @brief
     835              :  *    A TLV container is unexpectedly open.
     836              :  *
     837              :  */
     838              : #define CHIP_ERROR_TLV_CONTAINER_OPEN                          CHIP_CORE_ERROR(0x27)
     839              : 
     840              : // AVAILABLE: 0x28
     841              : // AVAILABLE: 0x29
     842              : 
     843              : /**
     844              :  *  @def CHIP_ERROR_INVALID_MESSAGE_TYPE
     845              :  *
     846              :  *  @brief
     847              :  *    A message type is invalid.
     848              :  *
     849              :  */
     850              : #define CHIP_ERROR_INVALID_MESSAGE_TYPE                        CHIP_CORE_ERROR(0x2a)
     851              : 
     852              : /**
     853              :  *  @def CHIP_ERROR_UNEXPECTED_TLV_ELEMENT
     854              :  *
     855              :  *  @brief
     856              :  *    An unexpected TLV element was encountered.
     857              :  *
     858              :  */
     859              : #define CHIP_ERROR_UNEXPECTED_TLV_ELEMENT                      CHIP_CORE_ERROR(0x2b)
     860              : 
     861              : // AVAILABLE: 0x2c
     862              : 
     863              : /**
     864              :  *  @def CHIP_ERROR_NOT_IMPLEMENTED
     865              :  *
     866              :  *  @brief
     867              :  *    A requested function or feature is not implemented.
     868              :  *
     869              :  */
     870              : #define CHIP_ERROR_NOT_IMPLEMENTED                             CHIP_CORE_ERROR(0x2d)
     871              : 
     872              : /**
     873              :  *  @def CHIP_ERROR_INVALID_ADDRESS
     874              :  *
     875              :  *  @brief
     876              :  *    An address is invalid.
     877              :  *
     878              :  */
     879              : #define CHIP_ERROR_INVALID_ADDRESS                             CHIP_CORE_ERROR(0x2e)
     880              : 
     881              : /**
     882              :  *  @def CHIP_ERROR_INVALID_ARGUMENT
     883              :  *
     884              :  *  @brief
     885              :  *    An argument is invalid.
     886              :  *
     887              :  */
     888              : #define CHIP_ERROR_INVALID_ARGUMENT                            CHIP_CORE_ERROR(0x2f)
     889              : 
     890              : /**
     891              :  *  @def CHIP_ERROR_INVALID_PATH_LIST
     892              :  *
     893              :  *  @brief
     894              :  *    A TLV path list is invalid.
     895              :  *
     896              :  */
     897              : #define CHIP_ERROR_INVALID_PATH_LIST                           CHIP_CORE_ERROR(0x30)
     898              : 
     899              : /**
     900              :  *  @def CHIP_ERROR_INVALID_DATA_LIST
     901              :  *
     902              :  *  @brief
     903              :  *    A TLV data list is invalid.
     904              :  *
     905              :  */
     906              : #define CHIP_ERROR_INVALID_DATA_LIST                           CHIP_CORE_ERROR(0x31)
     907              : 
     908              : /**
     909              :  *  @def CHIP_ERROR_TIMEOUT
     910              :  *
     911              :  *  @brief
     912              :  *    A request timed out.
     913              :  *
     914              :  */
     915              : #define CHIP_ERROR_TIMEOUT                                     CHIP_CORE_ERROR(0x32)
     916              : 
     917              : /**
     918              :  *  @def CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR
     919              :  *
     920              :  *  @brief
     921              :  *    A device descriptor is invalid.
     922              :  *
     923              :  */
     924              : #define CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR                   CHIP_CORE_ERROR(0x33)
     925              : 
     926              : // AVAILABLE: 0x34
     927              : // AVAILABLE: 0x35
     928              : // AVAILABLE: 0x36
     929              : // AVAILABLE: 0x37
     930              : 
     931              : /**
     932              :  *  @def CHIP_ERROR_INVALID_PASE_PARAMETER
     933              :  *
     934              :  *  @brief
     935              :  *    A PASE parameter is invalid.
     936              :  *
     937              :  */
     938              : #define CHIP_ERROR_INVALID_PASE_PARAMETER                      CHIP_CORE_ERROR(0x38)
     939              : 
     940              : // AVAILABLE: 0x39
     941              : // AVAILABLE: 0x3a
     942              : 
     943              : /**
     944              :  *  @def CHIP_ERROR_INVALID_USE_OF_SESSION_KEY
     945              :  *
     946              :  *  @brief
     947              :  *    A use of session key is invalid.
     948              :  *
     949              :  */
     950              : #define CHIP_ERROR_INVALID_USE_OF_SESSION_KEY                  CHIP_CORE_ERROR(0x3b)
     951              : 
     952              : /**
     953              :  *  @def CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY
     954              :  *
     955              :  *  @brief
     956              :  *    A connection is closed unexpectedly.
     957              :  *
     958              :  */
     959              : #define CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY              CHIP_CORE_ERROR(0x3c)
     960              : 
     961              : /**
     962              :  *  @def CHIP_ERROR_MISSING_TLV_ELEMENT
     963              :  *
     964              :  *  @brief
     965              :  *    A TLV element is missing.
     966              :  *
     967              :  */
     968              : #define CHIP_ERROR_MISSING_TLV_ELEMENT                         CHIP_CORE_ERROR(0x3d)
     969              : 
     970              : /**
     971              :  *  @def CHIP_ERROR_RANDOM_DATA_UNAVAILABLE
     972              :  *
     973              :  *  @brief
     974              :  *    Secure random data is not available.
     975              :  *
     976              :  */
     977              : #define CHIP_ERROR_RANDOM_DATA_UNAVAILABLE                     CHIP_CORE_ERROR(0x3e)
     978              : 
     979              : // AVAILABLE: 0x3f
     980              : // AVAILABLE: 0x40
     981              : 
     982              : /**
     983              :  *  @def CHIP_ERROR_HOST_PORT_LIST_EMPTY
     984              :  *
     985              :  *  @brief
     986              :  *    A host/port list is empty.
     987              :  *
     988              :  */
     989              : #define CHIP_ERROR_HOST_PORT_LIST_EMPTY                        CHIP_CORE_ERROR(0x41)
     990              : 
     991              : // AVAILABLE: 0x42
     992              : // AVAILABLE: 0x43
     993              : // AVAILABLE: 0x44
     994              : 
     995              : /**
     996              :  *  @def CHIP_ERROR_FORCED_RESET
     997              :  *
     998              :  *  @brief
     999              :  *    A service manager is forced to reset.
    1000              :  *
    1001              :  */
    1002              : #define CHIP_ERROR_FORCED_RESET                                CHIP_CORE_ERROR(0x45)
    1003              : 
    1004              : /**
    1005              :  *  @def CHIP_ERROR_NO_ENDPOINT
    1006              :  *
    1007              :  *  @brief
    1008              :  *    No endpoint is available.
    1009              :  *
    1010              :  */
    1011              : #define CHIP_ERROR_NO_ENDPOINT                                 CHIP_CORE_ERROR(0x46)
    1012              : 
    1013              : /**
    1014              :  *  @def CHIP_ERROR_INVALID_DESTINATION_NODE_ID
    1015              :  *
    1016              :  *  @brief
    1017              :  *    A destination node id is invalid.
    1018              :  *
    1019              :  */
    1020              : #define CHIP_ERROR_INVALID_DESTINATION_NODE_ID                 CHIP_CORE_ERROR(0x47)
    1021              : 
    1022              : /**
    1023              :  *  @def CHIP_ERROR_NOT_CONNECTED
    1024              :  *
    1025              :  *  @brief
    1026              :  *    The operation cannot be performed because the underlying object is not
    1027              :  *    connected.
    1028              :  *
    1029              :  */
    1030              : #define CHIP_ERROR_NOT_CONNECTED                               CHIP_CORE_ERROR(0x48)
    1031              : 
    1032              : // AVAILABLE: 0x49
    1033              : 
    1034              : /**
    1035              :  *  @def CHIP_ERROR_CA_CERT_NOT_FOUND
    1036              :  *
    1037              :  *  @brief
    1038              :  *    CA certificate is not found.
    1039              :  *
    1040              :  */
    1041              : #define CHIP_ERROR_CA_CERT_NOT_FOUND                           CHIP_CORE_ERROR(0x4a)
    1042              : 
    1043              : /**
    1044              :  *  @def CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED
    1045              :  *
    1046              :  *  @brief
    1047              :  *    A certificate path length exceeds the constraint.
    1048              :  *
    1049              :  */
    1050              : #define CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED           CHIP_CORE_ERROR(0x4b)
    1051              : 
    1052              : /**
    1053              :  *  @def CHIP_ERROR_CERT_PATH_TOO_LONG
    1054              :  *
    1055              :  *  @brief
    1056              :  *    A certificate path is too long.
    1057              :  *
    1058              :  */
    1059              : #define CHIP_ERROR_CERT_PATH_TOO_LONG                          CHIP_CORE_ERROR(0x4c)
    1060              : 
    1061              : /**
    1062              :  *  @def CHIP_ERROR_CERT_USAGE_NOT_ALLOWED
    1063              :  *
    1064              :  *  @brief
    1065              :  *    A requested certificate usage is not allowed.
    1066              :  *
    1067              :  */
    1068              : #define CHIP_ERROR_CERT_USAGE_NOT_ALLOWED                      CHIP_CORE_ERROR(0x4d)
    1069              : 
    1070              : /**
    1071              :  *  @def CHIP_ERROR_CERT_EXPIRED
    1072              :  *
    1073              :  *  @brief
    1074              :  *    A certificate expired.
    1075              :  *
    1076              :  */
    1077              : #define CHIP_ERROR_CERT_EXPIRED                                CHIP_CORE_ERROR(0x4e)
    1078              : 
    1079              : /**
    1080              :  *  @def CHIP_ERROR_CERT_NOT_VALID_YET
    1081              :  *
    1082              :  *  @brief
    1083              :  *    A certificate is not valid yet.
    1084              :  *
    1085              :  */
    1086              : #define CHIP_ERROR_CERT_NOT_VALID_YET                          CHIP_CORE_ERROR(0x4f)
    1087              : 
    1088              : /**
    1089              :  *  @def CHIP_ERROR_UNSUPPORTED_CERT_FORMAT
    1090              :  *
    1091              :  *  @brief
    1092              :  *    A certificate format is unsupported.
    1093              :  *
    1094              :  */
    1095              : #define CHIP_ERROR_UNSUPPORTED_CERT_FORMAT                     CHIP_CORE_ERROR(0x50)
    1096              : 
    1097              : /**
    1098              :  *  @def CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE
    1099              :  *
    1100              :  *  @brief
    1101              :  *    An elliptic curve is unsupported.
    1102              :  *
    1103              :  */
    1104              : #define CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE                  CHIP_CORE_ERROR(0x51)
    1105              : 
    1106              : // AVAILABLE: 0x52
    1107              : 
    1108              : /**
    1109              :  *  @def CHIP_ERROR_CERT_NOT_FOUND
    1110              :  *
    1111              :  *  @brief
    1112              :  *    A certificate is not found.
    1113              :  *
    1114              :  */
    1115              : #define CHIP_ERROR_CERT_NOT_FOUND                              CHIP_CORE_ERROR(0x53)
    1116              : 
    1117              : /**
    1118              :  *  @def CHIP_ERROR_INVALID_CASE_PARAMETER
    1119              :  *
    1120              :  *  @brief
    1121              :  *    A CASE parameter is invalid.
    1122              :  *
    1123              :  */
    1124              : #define CHIP_ERROR_INVALID_CASE_PARAMETER                      CHIP_CORE_ERROR(0x54)
    1125              : 
    1126              : // AVAILABLE: 0x55
    1127              : 
    1128              : /**
    1129              :  *  @def CHIP_ERROR_CERT_LOAD_FAILED
    1130              :  *
    1131              :  *  @brief
    1132              :  *    A certificate load failed.
    1133              :  *
    1134              :  */
    1135              : #define CHIP_ERROR_CERT_LOAD_FAILED                            CHIP_CORE_ERROR(0x56)
    1136              : 
    1137              : /**
    1138              :  *  @def CHIP_ERROR_CERT_NOT_TRUSTED
    1139              :  *
    1140              :  *  @brief
    1141              :  *    A certificate is not trusted.
    1142              :  *
    1143              :  */
    1144              : #define CHIP_ERROR_CERT_NOT_TRUSTED                            CHIP_CORE_ERROR(0x57)
    1145              : 
    1146              : // AVAILABLE: 0x58
    1147              : 
    1148              : /**
    1149              :  *  @def CHIP_ERROR_WRONG_CERT_DN
    1150              :  *
    1151              :  *  @brief
    1152              :  *    A certificate subject/issuer distinguished name is wrong.
    1153              :  *
    1154              :  */
    1155              : #define CHIP_ERROR_WRONG_CERT_DN                               CHIP_CORE_ERROR(0x59)
    1156              : 
    1157              : // AVAILABLE: 0x5a
    1158              : // AVAILABLE: 0x5b
    1159              : 
    1160              : /**
    1161              :  *  @def CHIP_ERROR_WRONG_NODE_ID
    1162              :  *
    1163              :  *  @brief
    1164              :  *    A node id is wrong.
    1165              :  *
    1166              :  */
    1167              : #define CHIP_ERROR_WRONG_NODE_ID                               CHIP_CORE_ERROR(0x5c)
    1168              : 
    1169              : // AVAILABLE: 0x5d
    1170              : // AVAILABLE: 0x5e
    1171              : // AVAILABLE: 0x5f
    1172              : // AVAILABLE: 0x60
    1173              : // AVAILABLE: 0x61
    1174              : // AVAILABLE: 0x62
    1175              : // AVAILABLE: 0x63
    1176              : 
    1177              : /**
    1178              :  *  @def CHIP_ERROR_RETRANS_TABLE_FULL
    1179              :  *
    1180              :  *  @brief
    1181              :  *    A retransmission table is already full.
    1182              :  *
    1183              :  */
    1184              : #define CHIP_ERROR_RETRANS_TABLE_FULL                          CHIP_CORE_ERROR(0x64)
    1185              : 
    1186              : // AVAILABLE: 0x65
    1187              : // AVAILABLE: 0x66
    1188              : // AVAILABLE: 0x67
    1189              : 
    1190              : /**
    1191              :  *  @def CHIP_ERROR_TRANSACTION_CANCELED
    1192              :  *
    1193              :  *  @brief
    1194              :  *    A transaction is cancelled.
    1195              :  *
    1196              :  */
    1197              : #define CHIP_ERROR_TRANSACTION_CANCELED                        CHIP_CORE_ERROR(0x68)
    1198              : 
    1199              : // AVAILABLE: 0x69
    1200              : // AVAILABLE: 0x6a
    1201              : 
    1202              : /**
    1203              :  *  @def CHIP_ERROR_INVALID_SUBSCRIPTION
    1204              :  *
    1205              :  *  @brief
    1206              :  *    A message was received as part of a subscription exchange that has a mis-matching subscription id.
    1207              :  *
    1208              :  */
    1209              : #define CHIP_ERROR_INVALID_SUBSCRIPTION                               CHIP_CORE_ERROR(0x6b)
    1210              : 
    1211              : /**
    1212              :  *  @def CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE
    1213              :  *
    1214              :  *  @brief
    1215              :  *    A CHIP feature is unsupported.
    1216              :  *
    1217              :  */
    1218              : #define CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE                    CHIP_CORE_ERROR(0x6c)
    1219              : 
    1220              : /**
    1221              :  *  @def CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR
    1222              :  *
    1223              :  *  @brief
    1224              :  *    An unsolicited message with the originator bit clear.
    1225              :  *
    1226              :  */
    1227              : #define CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR               CHIP_CORE_ERROR(0x70)
    1228              : 
    1229              : /**
    1230              :  *  @def CHIP_ERROR_INVALID_FABRIC_INDEX
    1231              :  *
    1232              :  *  @brief
    1233              :  *    A fabric index is invalid.
    1234              :  *
    1235              :  */
    1236              : #define CHIP_ERROR_INVALID_FABRIC_INDEX                        CHIP_CORE_ERROR(0x71)
    1237              : 
    1238              : /**
    1239              :  *  @def CHIP_ERROR_TOO_MANY_CONNECTIONS
    1240              :  *
    1241              :  *  @brief
    1242              :  *    The attempt to allocate a connection object failed because too many
    1243              :  *    connections exist.
    1244              :  *
    1245              :  */
    1246              : #define CHIP_ERROR_TOO_MANY_CONNECTIONS                        CHIP_CORE_ERROR(0x72)
    1247              : 
    1248              : /**
    1249              :  * @def CHIP_ERROR_SHUT_DOWN
    1250              :  *
    1251              :  * @brief
    1252              :  *   The operation cancelled because a shut down was initiated
    1253              :  */
    1254              : #define CHIP_ERROR_SHUT_DOWN                                   CHIP_CORE_ERROR(0x73)
    1255              : 
    1256              : /**
    1257              :  * @def CHIP_ERROR_CANCELLED
    1258              :  *
    1259              :  * @brief
    1260              :  *   The operation has been cancelled, generally by calling a cancel/abort request.
    1261              :  */
    1262              : #define CHIP_ERROR_CANCELLED                                   CHIP_CORE_ERROR(0x74)
    1263              : 
    1264              : // AVAILABLE: 0x75
    1265              : 
    1266              : /**
    1267              :  *  @def CHIP_ERROR_TLV_TAG_NOT_FOUND
    1268              :  *
    1269              :  *  @brief
    1270              :  *    A specified TLV tag was not found.
    1271              :  *
    1272              :  */
    1273              : #define CHIP_ERROR_TLV_TAG_NOT_FOUND                           CHIP_CORE_ERROR(0x76)
    1274              : 
    1275              : /**
    1276              :  * @def CHIP_ERROR_MISSING_SECURE_SESSION
    1277              :  *
    1278              :  * @brief
    1279              :  *
    1280              :  *  A secure session is needed to do work, but is missing/is not present.
    1281              :  */
    1282              : #define CHIP_ERROR_MISSING_SECURE_SESSION                      CHIP_CORE_ERROR(0x77)
    1283              : 
    1284              : /**
    1285              :  * @def CHIP_ERROR_INVALID_ADMIN_SUBJECT
    1286              :  *
    1287              :  * @brief
    1288              :  *   The CaseAdminSubject field is not valid in AddNOC command.
    1289              :  *
    1290              :  */
    1291              : #define CHIP_ERROR_INVALID_ADMIN_SUBJECT                      CHIP_CORE_ERROR(0x78)
    1292              : 
    1293              : /**
    1294              :  * @def CHIP_ERROR_INSUFFICIENT_PRIVILEGE
    1295              :  *
    1296              :  * @brief
    1297              :  *   Required privilege was insufficient during an operation.
    1298              :  *
    1299              :  */
    1300              : #define CHIP_ERROR_INSUFFICIENT_PRIVILEGE                          CHIP_CORE_ERROR(0x79)
    1301              : 
    1302              : // AVAILABLE: 0x7a
    1303              : // AVAILABLE: 0x7b
    1304              : // AVAILABLE: 0x7c
    1305              : 
    1306              : /**
    1307              :  * @def CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED
    1308              :  *
    1309              :  * @brief
    1310              :  *   The message counter of the session is exhausted, the session should be closed.
    1311              :  */
    1312              : #define CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED                 CHIP_CORE_ERROR(0x7d)
    1313              : 
    1314              : /**
    1315              :  *  @def CHIP_ERROR_FABRIC_EXISTS
    1316              :  *
    1317              :  *  @brief
    1318              :  *    The fabric with the given fabric id and root public key already exists.
    1319              :  *
    1320              :  */
    1321              : #define CHIP_ERROR_FABRIC_EXISTS                               CHIP_CORE_ERROR(0x7e)
    1322              : 
    1323              : /**
    1324              :  *  @def CHIP_ERROR_ENDPOINT_EXISTS
    1325              :  *
    1326              :  *  @brief
    1327              :  *    The endpoint with the given endpoint id already exists.
    1328              :  *
    1329              :  */
    1330              : #define CHIP_ERROR_ENDPOINT_EXISTS                               CHIP_CORE_ERROR(0x7f)
    1331              : 
    1332              : /**
    1333              :  *  @def CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER
    1334              :  *
    1335              :  *  @brief
    1336              :  *    The wrong encryption type error received from a peer node.
    1337              :  *
    1338              :  */
    1339              : #define CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER             CHIP_CORE_ERROR(0x80)
    1340              : 
    1341              : // AVAILABLE: 0x81
    1342              : // AVAILABLE: 0x82
    1343              : // AVAILABLE: 0x83
    1344              : // AVAILABLE: 0x84
    1345              : 
    1346              : /**
    1347              :  *  @def CHIP_ERROR_INVALID_KEY_ID
    1348              :  *
    1349              :  *  @brief
    1350              :  *    A key id is invalid.
    1351              :  *
    1352              :  */
    1353              : #define CHIP_ERROR_INVALID_KEY_ID                              CHIP_CORE_ERROR(0x85)
    1354              : 
    1355              : /**
    1356              :  *  @def CHIP_ERROR_INVALID_TIME
    1357              :  *
    1358              :  *  @brief
    1359              :  *    Time has invalid value.
    1360              :  *
    1361              :  */
    1362              : #define CHIP_ERROR_INVALID_TIME                                CHIP_CORE_ERROR(0x86)
    1363              : 
    1364              : // AVAILABLE: 0x87
    1365              : // AVAILABLE: 0x88
    1366              : // AVAILABLE: 0x89
    1367              : // AVAILABLE: 0x8a
    1368              : // AVAILABLE: 0x8b
    1369              : // AVAILABLE: 0x8c
    1370              : // AVAILABLE: 0x8d
    1371              : 
    1372              : /**
    1373              :  *  @def CHIP_ERROR_SCHEMA_MISMATCH
    1374              :  *
    1375              :  *  @brief
    1376              :  *    A mismatch in schema was encountered.
    1377              :  *
    1378              :  */
    1379              : #define CHIP_ERROR_SCHEMA_MISMATCH                             CHIP_CORE_ERROR(0x8e)
    1380              : 
    1381              : /**
    1382              :  *  @def CHIP_ERROR_INVALID_INTEGER_VALUE
    1383              :  *
    1384              :  *  @brief
    1385              :  *    An integer does not have the kind of value we expect.
    1386              :  *
    1387              :  */
    1388              : #define CHIP_ERROR_INVALID_INTEGER_VALUE                       CHIP_CORE_ERROR(0x8f)
    1389              : 
    1390              : // AVAILABLE: 0x90
    1391              : // AVAILABLE: 0x91
    1392              : 
    1393              : /**
    1394              :  *  @def CHIP_ERROR_BAD_REQUEST
    1395              :  *
    1396              :  *  @brief
    1397              :  *    The request cannot be processed or fulfilled
    1398              :  *
    1399              :  */
    1400              : #define CHIP_ERROR_BAD_REQUEST                                 CHIP_CORE_ERROR(0x92)
    1401              : 
    1402              : // AVAILABLE: 0x93
    1403              : // AVAILABLE: 0x94
    1404              : // AVAILABLE: 0x95
    1405              : // AVAILABLE: 0x96
    1406              : // AVAILABLE: 0x97
    1407              : // AVAILABLE: 0x98
    1408              : // AVAILABLE: 0x99
    1409              : // AVAILABLE: 0x9a
    1410              : // AVAILABLE: 0x9b
    1411              : // AVAILABLE: 0x9c
    1412              : 
    1413              : /**
    1414              :  * @def CHIP_ERROR_WRONG_CERT_TYPE
    1415              :  *
    1416              :  * @brief
    1417              :  *   The presented certificate was of the wrong type.
    1418              :  */
    1419              : #define CHIP_ERROR_WRONG_CERT_TYPE                             CHIP_CORE_ERROR(0x9d)
    1420              : 
    1421              : // AVAILABLE: 0x9e
    1422              : 
    1423              : /**
    1424              :  *  @def CHIP_ERROR_PERSISTED_STORAGE_FAILED
    1425              :  *
    1426              :  *  @brief
    1427              :  *    Persisted storage memory read/write failure.
    1428              :  *
    1429              :  */
    1430              : #define CHIP_ERROR_PERSISTED_STORAGE_FAILED                    CHIP_CORE_ERROR(0x9f)
    1431              : 
    1432              : /**
    1433              :  *  @def CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND
    1434              :  *
    1435              :  *  @brief
    1436              :  *    The specific value is not found in the persisted storage.
    1437              :  *
    1438              :  */
    1439              : #define CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND           CHIP_CORE_ERROR(0xa0)
    1440              : 
    1441              : /**
    1442              :  * @def CHIP_ERROR_IM_FABRIC_DELETED
    1443              :  *
    1444              :  * @brief
    1445              :  *   The fabric is deleted, and the corresponding IM resources are released
    1446              :  */
    1447              : #define CHIP_ERROR_IM_FABRIC_DELETED                            CHIP_CORE_ERROR(0xa1)
    1448              : 
    1449              : // AVAILABLE: 0xa2
    1450              : // AVAILABLE: 0xa3
    1451              : 
    1452              : /**
    1453              :  * @def CHIP_ERROR_IN_PROGRESS
    1454              :  *
    1455              :  * @brief
    1456              :  *   The operation is still in progress
    1457              :  */
    1458              : #define CHIP_ERROR_IN_PROGRESS                                 CHIP_CORE_ERROR(0xa4)
    1459              : 
    1460              : /**
    1461              :  *  @def CHIP_ERROR_ACCESS_DENIED
    1462              :  *
    1463              :  *  @brief
    1464              :  *    The CHIP message is not granted access for further processing.
    1465              :  */
    1466              : #define CHIP_ERROR_ACCESS_DENIED                               CHIP_CORE_ERROR(0xa5)
    1467              : 
    1468              : /**
    1469              :  *  @def CHIP_ERROR_UNKNOWN_RESOURCE_ID
    1470              :  *
    1471              :  *  @brief
    1472              :  *    Unknown resource ID
    1473              :  *
    1474              :  */
    1475              : #define CHIP_ERROR_UNKNOWN_RESOURCE_ID                         CHIP_CORE_ERROR(0xa6)
    1476              : 
    1477              : /**
    1478              :  * @def CHIP_ERROR_VERSION_MISMATCH
    1479              :  *
    1480              :  * @brief
    1481              :  *   The conditional update of a trait instance path has failed
    1482              :  *   because the local changes are based on an obsolete version of the
    1483              :  *   data.
    1484              :  */
    1485              : #define CHIP_ERROR_VERSION_MISMATCH                            CHIP_CORE_ERROR(0xa7)
    1486              : 
    1487              : /**
    1488              :  *  @def CHIP_ERROR_ACCESS_RESTRICTED_BY_ARL
    1489              :  *
    1490              :  *  @brief
    1491              :  *    The CHIP message is not granted access for further processing due to Access Restriction List.
    1492              :  */
    1493              : #define CHIP_ERROR_ACCESS_RESTRICTED_BY_ARL                    CHIP_CORE_ERROR(0xa8)
    1494              : 
    1495              : // AVAILABLE: 0xa9
    1496              : // AVAILABLE: 0xaa
    1497              : 
    1498              : /**
    1499              :  * @def CHIP_EVENT_ID_FOUND
    1500              :  *
    1501              :  * @brief
    1502              :  *   Event ID matching the criteria was found
    1503              :  */
    1504              : #define CHIP_ERROR_EVENT_ID_FOUND                              CHIP_CORE_ERROR(0xab)
    1505              : #define CHIP_EVENT_ID_FOUND CHIP_ERROR_EVENT_ID_FOUND
    1506              : 
    1507              : /**
    1508              :  * @def CHIP_ERROR_INTERNAL
    1509              :  *
    1510              :  * @brief
    1511              :  *   Internal error
    1512              :  */
    1513              : #define CHIP_ERROR_INTERNAL                                    CHIP_CORE_ERROR(0xac)
    1514              : 
    1515              : /**
    1516              :  * @def CHIP_ERROR_OPEN_FAILED
    1517              :  *
    1518              :  * @brief
    1519              :  *   Open file failed
    1520              :  */
    1521              : #define CHIP_ERROR_OPEN_FAILED                                 CHIP_CORE_ERROR(0xad)
    1522              : 
    1523              : /**
    1524              :  * @def CHIP_ERROR_READ_FAILED
    1525              :  *
    1526              :  * @brief
    1527              :  *   Read from file failed
    1528              :  */
    1529              : #define CHIP_ERROR_READ_FAILED                                 CHIP_CORE_ERROR(0xae)
    1530              : 
    1531              : /**
    1532              :  * @def CHIP_ERROR_WRITE_FAILED
    1533              :  *
    1534              :  * @brief
    1535              :  *   Write to file failed
    1536              :  */
    1537              : #define CHIP_ERROR_WRITE_FAILED                                CHIP_CORE_ERROR(0xaf)
    1538              : 
    1539              : /**
    1540              :  * @def CHIP_ERROR_DECODE_FAILED
    1541              :  *
    1542              :  * @brief
    1543              :  *   Decoding failed
    1544              :  */
    1545              : #define CHIP_ERROR_DECODE_FAILED                               CHIP_CORE_ERROR(0xb0)
    1546              : 
    1547              : // AVAILABLE: 0xb1
    1548              : // AVAILABLE: 0xb2
    1549              : 
    1550              : /**
    1551              :  *  @def CHIP_ERROR_DNS_SD_UNAUTHORIZED
    1552              :  *
    1553              :  *  @brief
    1554              :  *    The application is not authorized to do DNS_SD lookups.
    1555              :  *
    1556              :  */
    1557              : #define CHIP_ERROR_DNS_SD_UNAUTHORIZED                        CHIP_CORE_ERROR(0xb3)
    1558              : 
    1559              : /**
    1560              :  *  @def CHIP_ERROR_MDNS_COLLISION
    1561              :  *
    1562              :  *  @brief
    1563              :  *    The registered service name has collision on the LAN.
    1564              :  *
    1565              :  */
    1566              : #define CHIP_ERROR_MDNS_COLLISION                             CHIP_CORE_ERROR(0xb4)
    1567              : 
    1568              : /**
    1569              :  * @def CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB
    1570              :  *
    1571              :  * @brief
    1572              :  *   The Attribute path IB is malformed: it does not contain
    1573              :  *   the required path
    1574              :  */
    1575              : #define CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB                CHIP_CORE_ERROR(0xb5)
    1576              : 
    1577              : /**
    1578              :  * @def CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB
    1579              :  *
    1580              :  * @brief
    1581              :  *   The Event Path IB is malformed: it does not contain
    1582              :  *   the required elements
    1583              :  */
    1584              : #define CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB                     CHIP_CORE_ERROR(0xb6)
    1585              : 
    1586              : // AVAILABLE: 0xb7
    1587              : // AVAILABLE: 0xb8
    1588              : 
    1589              : /**
    1590              :  * @def CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB
    1591              :  *
    1592              :  * @brief
    1593              :  *   The Command Data IB is malformed: it does not contain
    1594              :  *   the required elements
    1595              :  */
    1596              : #define CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB           CHIP_CORE_ERROR(0xb9)
    1597              : 
    1598              : /**
    1599              :  * @def CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB
    1600              :  *
    1601              :  * @brief
    1602              :  *   The Event Data IB is malformed: it does not contain
    1603              :  *   the required elements
    1604              :  */
    1605              : #define CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB             CHIP_CORE_ERROR(0xba)
    1606              : 
    1607              : /**
    1608              :  * @def CHIP_ERROR_MAXIMUM_PATHS_PER_INVOKE_EXCEEDED
    1609              :  *
    1610              :  * @brief
    1611              :  *   Caller is trying to add more invoke command paths
    1612              :  *   than what the remote node reports supporting.
    1613              :  */
    1614              : #define CHIP_ERROR_MAXIMUM_PATHS_PER_INVOKE_EXCEEDED           CHIP_CORE_ERROR(0xbb)
    1615              : 
    1616              : /**
    1617              :  * @def CHIP_ERROR_PEER_NODE_NOT_FOUND
    1618              :  *
    1619              :  * @brief
    1620              :  *   Unable to find the peer node
    1621              :  */
    1622              : #define CHIP_ERROR_PEER_NODE_NOT_FOUND                         CHIP_CORE_ERROR(0xbc)
    1623              : 
    1624              : /**
    1625              :  * @def CHIP_ERROR_HSM
    1626              :  *
    1627              :  * @brief
    1628              :  *   Error in Hardware security module. Used for software fallback option.
    1629              :  */
    1630              : #define CHIP_ERROR_HSM                                         CHIP_CORE_ERROR(0xbd)
    1631              : 
    1632              : // AVAILABLE: 0xbe
    1633              : 
    1634              : /**
    1635              :  *  @def CHIP_ERROR_REAL_TIME_NOT_SYNCED
    1636              :  *
    1637              :  *  @brief
    1638              :  *      The system's real time clock is not synchronized to an accurate time source.
    1639              :  */
    1640              : #define CHIP_ERROR_REAL_TIME_NOT_SYNCED                        CHIP_CORE_ERROR(0xbf)
    1641              : 
    1642              : /**
    1643              :  *  @def CHIP_ERROR_UNEXPECTED_EVENT
    1644              :  *
    1645              :  *  @brief
    1646              :  *      An unexpected event was encountered.
    1647              :  */
    1648              : #define CHIP_ERROR_UNEXPECTED_EVENT                            CHIP_CORE_ERROR(0xc0)
    1649              : 
    1650              : /**
    1651              :  *  @def CHIP_ERROR_ENDPOINT_POOL_FULL
    1652              :  *
    1653              :  *  @brief
    1654              :  *    No endpoint pool entry is available.
    1655              :  *
    1656              :  */
    1657              : #define CHIP_ERROR_ENDPOINT_POOL_FULL                          CHIP_CORE_ERROR(0xc1)
    1658              : 
    1659              : /**
    1660              :  *  @def CHIP_ERROR_INBOUND_MESSAGE_TOO_BIG
    1661              :  *
    1662              :  *  @brief
    1663              :  *    More inbound message data is pending than available buffer space available to copy it.
    1664              :  *
    1665              :  */
    1666              : #define CHIP_ERROR_INBOUND_MESSAGE_TOO_BIG                     CHIP_CORE_ERROR(0xc2)
    1667              : 
    1668              : /**
    1669              :  *  @def CHIP_ERROR_OUTBOUND_MESSAGE_TOO_BIG
    1670              :  *
    1671              :  *  @brief
    1672              :  *    More outbound message data is pending than available buffer space available to copy it.
    1673              :  *
    1674              :  */
    1675              : #define CHIP_ERROR_OUTBOUND_MESSAGE_TOO_BIG                    CHIP_CORE_ERROR(0xc3)
    1676              : 
    1677              : /**
    1678              :  * @def CHIP_ERROR_DUPLICATE_MESSAGE_RECEIVED
    1679              :  *
    1680              :  * @brief
    1681              :  *   The received message is a duplicate of a previously received message.
    1682              :  */
    1683              : #define CHIP_ERROR_DUPLICATE_MESSAGE_RECEIVED                  CHIP_CORE_ERROR(0xc4)
    1684              : 
    1685              : /**
    1686              :  * @def CHIP_ERROR_INVALID_PUBLIC_KEY
    1687              :  *
    1688              :  * @brief
    1689              :  *   The received public key doesn't match locally generated key.
    1690              :  */
    1691              : #define CHIP_ERROR_INVALID_PUBLIC_KEY                          CHIP_CORE_ERROR(0xc5)
    1692              : 
    1693              : /**
    1694              :  * @def CHIP_ERROR_FABRIC_MISMATCH_ON_ICA
    1695              :  *
    1696              :  * @brief
    1697              :  *   The fabric ID in ICA certificate doesn't match the one in NOC.
    1698              :  */
    1699              : #define CHIP_ERROR_FABRIC_MISMATCH_ON_ICA                      CHIP_CORE_ERROR(0xc6)
    1700              : 
    1701              : // AVAILABLE: 0xc7
    1702              : // AVAILABLE: 0xc8
    1703              : 
    1704              : /**
    1705              :  * @def CHIP_ERROR_NO_SHARED_TRUSTED_ROOT
    1706              :  *
    1707              :  * @brief
    1708              :  *   The CASE session could not be established as peer's credentials do not have
    1709              :  *   a common root of trust.
    1710              :  */
    1711              : #define CHIP_ERROR_NO_SHARED_TRUSTED_ROOT                      CHIP_CORE_ERROR(0xc9)
    1712              : 
    1713              : /*
    1714              :  * @def CHIP_ERROR_IM_STATUS_CODE_RECEIVED
    1715              :  *
    1716              :  * @brief
    1717              :  *   Indicates an IM status code was received. Usually accompanied with
    1718              :  *   the actual IM status code.
    1719              :  */
    1720              : #define CHIP_ERROR_IM_STATUS_CODE_RECEIVED                     CHIP_CORE_ERROR(0xca)
    1721              : 
    1722              : // AVAILABLE 0xcb
    1723              : // AVAILABLE 0xcc
    1724              : // AVAILABLE 0xcd
    1725              : // AVAILABLE 0xce
    1726              : // AVAILABLE 0xcf
    1727              : // AVAILABLE 0xd0
    1728              : // AVAILABLE 0xd1
    1729              : // AVAILABLE 0xd2
    1730              : // AVAILABLE 0xd3
    1731              : // AVAILABLE 0xd4
    1732              : // AVAILABLE 0xd5
    1733              : // AVAILABLE 0xd6
    1734              : 
    1735              : /**
    1736              :  * @def CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB
    1737              :  *
    1738              :  * @brief
    1739              :  *   The Data Version Filter IB is malformed: it does not contain
    1740              :  *   the required elements
    1741              :  */
    1742              : #define CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB             CHIP_CORE_ERROR(0xd7)
    1743              : 
    1744              : /**
    1745              :  * @def CHIP_ERROR_NOT_FOUND
    1746              :  *
    1747              :  * @brief
    1748              :  *   The item referenced in the function call was not found
    1749              :  */
    1750              : #define CHIP_ERROR_NOT_FOUND                                       CHIP_CORE_ERROR(0xd8)
    1751              : 
    1752              : // AVAILABLE: 0xd9
    1753              : 
    1754              : /**
    1755              :  * @def CHIP_ERROR_INVALID_FILE_IDENTIFIER
    1756              :  *
    1757              :  * @brief
    1758              :  *   The file identifier, encoded in the first few bytes of a processed file,
    1759              :  *   has unexpected value.
    1760              :  */
    1761              : #define CHIP_ERROR_INVALID_FILE_IDENTIFIER                     CHIP_CORE_ERROR(0xda)
    1762              : 
    1763              : /**
    1764              :  * @def CHIP_ERROR_BUSY
    1765              :  *
    1766              :  * @brief
    1767              :  *   The Resource is busy and cannot process the request. Trying again might work.
    1768              :  */
    1769              : #define CHIP_ERROR_BUSY                                        CHIP_CORE_ERROR(0xdb)
    1770              : 
    1771              : /**
    1772              :   * @def CHIP_ERROR_MAX_RETRY_EXCEEDED
    1773              :   *
    1774              :   * @brief
    1775              :   *   The maximum retry limit has been exceeded.
    1776              :   */
    1777              :  #define CHIP_ERROR_MAX_RETRY_EXCEEDED                         CHIP_CORE_ERROR(0xdc)
    1778              : 
    1779              :  /**
    1780              :   * @def CHIP_ERROR_PROVIDER_LIST_EXHAUSTED
    1781              :   *
    1782              :   * @brief
    1783              :   *   The provider list has been exhausted.
    1784              :   */
    1785              :  #define CHIP_ERROR_PROVIDER_LIST_EXHAUSTED                    CHIP_CORE_ERROR(0xdd)
    1786              : 
    1787              : // AVAILABLE: 0xde
    1788              : 
    1789              : /**
    1790              :  * @def CHIP_ERROR_INVALID_SCHEME_PREFIX
    1791              :  *
    1792              :  * @brief
    1793              :  *   The scheme field contains an invalid prefix
    1794              :  */
    1795              : #define CHIP_ERROR_INVALID_SCHEME_PREFIX                      CHIP_CORE_ERROR(0xdf)
    1796              : 
    1797              : /**
    1798              :  * @def CHIP_ERROR_MISSING_URI_SEPARATOR
    1799              :  *
    1800              :  * @brief
    1801              :  *   The URI separator is missing
    1802              :  */
    1803              : #define CHIP_ERROR_MISSING_URI_SEPARATOR                      CHIP_CORE_ERROR(0xe0)
    1804              : 
    1805              : /**
    1806              :  * @def CHIP_ERROR_HANDLER_NOT_SET
    1807              :  *
    1808              :  * @brief
    1809              :  *   Callback function or callable object is not set
    1810              :  */
    1811              : #define CHIP_ERROR_HANDLER_NOT_SET                            CHIP_CORE_ERROR(0xe1)
    1812              : 
    1813              : // WHEN ADDING A NEW ERROR CODE: Look for "AVAILABLE" comments above and fill in gaps.
    1814              : 
    1815              : // clang-format on
    1816              : 
    1817              : // !!!!! IMPORTANT !!!!!  If you add new CHIP errors, please update the translation
    1818              : // of error codes to strings in CHIPError.cpp, and add them to kTestElements[]
    1819              : // in core/tests/TestCHIPErrorStr.cpp
    1820              : 
    1821              : namespace chip {
    1822              : 
    1823              : extern void RegisterCHIPLayerErrorFormatter();
    1824              : extern bool FormatCHIPError(char * buf, uint16_t bufSize, CHIP_ERROR err);
    1825              : 
    1826              : } // namespace chip
        

Generated by: LCOV version 2.0-1