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