/*
 *
 *    Copyright (c) 2020-2022 Project CHIP Authors
 *    Copyright (c) 2019 Google LLC.
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

/**
 *    @file
 *      This file contains functions for working with CHIP errors.
 */

#include <stddef.h>

#include <lib/core/CHIPCore.h>
#include <lib/support/ErrorStr.h>

namespace chip {

/**
 * Register a text error formatter for CHIP core errors.
 */
void RegisterCHIPLayerErrorFormatter()
{
    static ErrorFormatter sCHIPErrorFormatter = { FormatCHIPError, nullptr };

    RegisterErrorFormatter(&sCHIPErrorFormatter);
}

/**
 * Given a CHIP error, returns a human-readable NULL-terminated C string
 * describing the error.
 *
 * @param[in] buf                   Buffer into which the error string will be placed.
 * @param[in] bufSize               Size of the supplied buffer in bytes.
 * @param[in] err                   The error to be described.
 *
 * @return true                     If a description string was written into the supplied buffer.
 * @return false                    If the supplied error was not a CHIP error.
 *
 */
bool FormatCHIPError(char * buf, uint16_t bufSize, CHIP_ERROR err)
{
    const char * desc = nullptr;

    if (!err.IsPart(ChipError::SdkPart::kCore))
    {
        return false;
    }

#if !CHIP_CONFIG_SHORT_ERROR_STR
    switch (err.AsInteger())
    {
    case CHIP_ERROR_SENDING_BLOCKED.AsInteger():
        desc = "Sending blocked";
        break;
    case CHIP_ERROR_CONNECTION_ABORTED.AsInteger():
        desc = "Connection aborted";
        break;
    case CHIP_ERROR_INCORRECT_STATE.AsInteger():
        desc = "Incorrect state";
        break;
    case CHIP_ERROR_MESSAGE_TOO_LONG.AsInteger():
        desc = "Message too long";
        break;
    case CHIP_ERROR_UNSUPPORTED_EXCHANGE_VERSION.AsInteger():
        desc = "Unsupported exchange version";
        break;
    case CHIP_ERROR_TOO_MANY_UNSOLICITED_MESSAGE_HANDLERS.AsInteger():
        desc = "Too many unsolicited message handlers";
        break;
    case CHIP_ERROR_NO_UNSOLICITED_MESSAGE_HANDLER.AsInteger():
        desc = "No unsolicited message handler";
        break;
    case CHIP_ERROR_NO_CONNECTION_HANDLER.AsInteger():
        desc = "No connection handler";
        break;
    case CHIP_ERROR_TOO_MANY_PEER_NODES.AsInteger():
        desc = "Too many peer nodes";
        break;
    case CHIP_ERROR_SENTINEL.AsInteger():
        desc = "Internal sentinel";
        break;
    case CHIP_ERROR_NO_MEMORY.AsInteger():
        desc = "No memory";
        break;
    case CHIP_ERROR_NO_MESSAGE_HANDLER.AsInteger():
        desc = "No message handler";
        break;
    case CHIP_ERROR_MESSAGE_INCOMPLETE.AsInteger():
        desc = "Message incomplete";
        break;
    case CHIP_ERROR_DATA_NOT_ALIGNED.AsInteger():
        desc = "Data not aligned";
        break;
    case CHIP_ERROR_UNKNOWN_KEY_TYPE.AsInteger():
        desc = "Unknown key type";
        break;
    case CHIP_ERROR_KEY_NOT_FOUND.AsInteger():
        desc = "Key not found";
        break;
    case CHIP_ERROR_WRONG_ENCRYPTION_TYPE.AsInteger():
        desc = "Wrong encryption type";
        break;
    case CHIP_ERROR_TOO_MANY_KEYS.AsInteger():
        desc = "Too many keys";
        break;
    case CHIP_ERROR_INTEGRITY_CHECK_FAILED.AsInteger():
        desc = "Integrity check failed";
        break;
    case CHIP_ERROR_INVALID_SIGNATURE.AsInteger():
        desc = "Invalid signature";
        break;
    case CHIP_ERROR_UNSUPPORTED_MESSAGE_VERSION.AsInteger():
        desc = "Unsupported message version";
        break;
    case CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE.AsInteger():
        desc = "Unsupported encryption type";
        break;
    case CHIP_ERROR_UNSUPPORTED_SIGNATURE_TYPE.AsInteger():
        desc = "Unsupported signature type";
        break;
    case CHIP_ERROR_INVALID_MESSAGE_LENGTH.AsInteger():
        desc = "Invalid message length";
        break;
    case CHIP_ERROR_BUFFER_TOO_SMALL.AsInteger():
        desc = "Buffer too small";
        break;
    case CHIP_ERROR_DUPLICATE_KEY_ID.AsInteger():
        desc = "Duplicate key id";
        break;
    case CHIP_ERROR_WRONG_KEY_TYPE.AsInteger():
        desc = "Wrong key type";
        break;
    case CHIP_ERROR_WELL_UNINITIALIZED.AsInteger():
        desc = "Well uninitialized";
        break;
    case CHIP_ERROR_WELL_EMPTY.AsInteger():
        desc = "Well empty";
        break;
    case CHIP_ERROR_INVALID_STRING_LENGTH.AsInteger():
        desc = "Invalid string length";
        break;
    case CHIP_ERROR_INVALID_LIST_LENGTH.AsInteger():
        desc = "invalid list length";
        break;
    case CHIP_ERROR_INVALID_INTEGRITY_TYPE.AsInteger():
        desc = "Invalid integrity type";
        break;
    case CHIP_END_OF_TLV.AsInteger():
        desc = "End of TLV";
        break;
    case CHIP_ERROR_TLV_UNDERRUN.AsInteger():
        desc = "TLV underrun";
        break;
    case CHIP_ERROR_INVALID_TLV_ELEMENT.AsInteger():
        desc = "Invalid TLV element";
        break;
    case CHIP_ERROR_INVALID_TLV_TAG.AsInteger():
        desc = "Invalid TLV tag";
        break;
    case CHIP_ERROR_UNKNOWN_IMPLICIT_TLV_TAG.AsInteger():
        desc = "Unknown implicit TLV tag";
        break;
    case CHIP_ERROR_WRONG_TLV_TYPE.AsInteger():
        desc = "Wrong TLV type";
        break;
    case CHIP_ERROR_TLV_CONTAINER_OPEN.AsInteger():
        desc = "TLV container open";
        break;
    case CHIP_ERROR_INVALID_TRANSFER_MODE.AsInteger():
        desc = "Invalid transfer mode";
        break;
    case CHIP_ERROR_INVALID_PROFILE_ID.AsInteger():
        desc = "Invalid profile id";
        break;
    case CHIP_ERROR_INVALID_MESSAGE_TYPE.AsInteger():
        desc = "Invalid message type";
        break;
    case CHIP_ERROR_UNEXPECTED_TLV_ELEMENT.AsInteger():
        desc = "Unexpected TLV element";
        break;
    case CHIP_ERROR_STATUS_REPORT_RECEIVED.AsInteger():
        desc = "Status Report received from peer";
        break;
    case CHIP_ERROR_NOT_IMPLEMENTED.AsInteger():
        desc = "Not Implemented";
        break;
    case CHIP_ERROR_INVALID_ADDRESS.AsInteger():
        desc = "Invalid address";
        break;
    case CHIP_ERROR_INVALID_ARGUMENT.AsInteger():
        desc = "Invalid argument";
        break;
    case CHIP_ERROR_TLV_TAG_NOT_FOUND.AsInteger():
        desc = "TLV tag not found";
        break;
    case CHIP_ERROR_MISSING_SECURE_SESSION.AsInteger():
        desc = "Missing secure session";
        break;
    case CHIP_ERROR_INVALID_ADMIN_SUBJECT.AsInteger():
        desc = "CaseAdminSubject is not valid";
        break;
    case CHIP_ERROR_INSUFFICIENT_PRIVILEGE.AsInteger():
        desc = "Required privilege was insufficient during an operation";
        break;
    case CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_IB.AsInteger():
        desc = "Malformed Interacton Model Attribute Report IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_COMMAND_DATA_IB.AsInteger():
        desc = "Malformed Interacton Model Command Data IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_EVENT_STATUS_IB.AsInteger():
        desc = "Malformed Interacton Model Event Status IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_STATUS_RESPONSE_MESSAGE.AsInteger():
        desc = "Malformed Interacton Model Status Response IB";
        break;
    case CHIP_ERROR_INVALID_PATH_LIST.AsInteger():
        desc = "Invalid TLV path list";
        break;
    case CHIP_ERROR_INVALID_DATA_LIST.AsInteger():
        desc = "Invalid TLV data list";
        break;
    case CHIP_ERROR_TRANSACTION_CANCELED.AsInteger():
        desc = "Transaction canceled";
        break;
    case CHIP_ERROR_LISTENER_ALREADY_STARTED.AsInteger():
        desc = "Listener already started";
        break;
    case CHIP_ERROR_LISTENER_ALREADY_STOPPED.AsInteger():
        desc = "Listener already stopped";
        break;
    case CHIP_ERROR_INVALID_SUBSCRIPTION.AsInteger():
        desc = "Invalid Subscription Id";
        break;
    case CHIP_ERROR_TIMEOUT.AsInteger():
        desc = "Timeout";
        break;
    case CHIP_ERROR_INVALID_DEVICE_DESCRIPTOR.AsInteger():
        desc = "Invalid device descriptor";
        break;
    case CHIP_ERROR_UNSUPPORTED_DEVICE_DESCRIPTOR_VERSION.AsInteger():
        desc = "Unsupported device descriptor version";
        break;
    case CHIP_END_OF_INPUT.AsInteger():
        desc = "End of input";
        break;
    case CHIP_ERROR_RATE_LIMIT_EXCEEDED.AsInteger():
        desc = "Rate limit exceeded";
        break;
    case CHIP_ERROR_SECURITY_MANAGER_BUSY.AsInteger():
        desc = "Security manager busy";
        break;
    case CHIP_ERROR_INVALID_PASE_PARAMETER.AsInteger():
        desc = "Invalid PASE parameter";
        break;
    case CHIP_ERROR_PASE_SUPPORTS_ONLY_CONFIG1.AsInteger():
        desc = "PASE supports only Config1";
        break;
    case CHIP_ERROR_NO_COMMON_PASE_CONFIGURATIONS.AsInteger():
        desc = "No supported PASE configurations in common";
        break;
    case CHIP_ERROR_INVALID_PASE_CONFIGURATION.AsInteger():
        desc = "Invalid PASE configuration";
        break;
    case CHIP_ERROR_KEY_CONFIRMATION_FAILED.AsInteger():
        desc = "Key confirmation failed";
        break;
    case CHIP_ERROR_INVALID_USE_OF_SESSION_KEY.AsInteger():
        desc = "Invalid use of session key";
        break;
    case CHIP_ERROR_CONNECTION_CLOSED_UNEXPECTEDLY.AsInteger():
        desc = "Connection closed unexpectedly";
        break;
    case CHIP_ERROR_MISSING_TLV_ELEMENT.AsInteger():
        desc = "Missing TLV element";
        break;
    case CHIP_ERROR_RANDOM_DATA_UNAVAILABLE.AsInteger():
        desc = "Random data unavailable";
        break;
    case CHIP_ERROR_UNSUPPORTED_HOST_PORT_ELEMENT.AsInteger():
        desc = "Unsupported type in host/port list";
        break;
    case CHIP_ERROR_INVALID_HOST_SUFFIX_INDEX.AsInteger():
        desc = "Invalid suffix index in host/port list";
        break;
    case CHIP_ERROR_HOST_PORT_LIST_EMPTY.AsInteger():
        desc = "Host/port empty";
        break;
    case CHIP_ERROR_UNSUPPORTED_AUTH_MODE.AsInteger():
        desc = "Unsupported authentication mode";
        break;
    case CHIP_ERROR_INVALID_SERVICE_EP.AsInteger():
        desc = "Invalid service endpoint";
        break;
    case CHIP_ERROR_INVALID_DIRECTORY_ENTRY_TYPE.AsInteger():
        desc = "Invalid directory entry type";
        break;
    case CHIP_ERROR_FORCED_RESET.AsInteger():
        desc = "Service manager forced reset";
        break;
    case CHIP_ERROR_NO_ENDPOINT.AsInteger():
        desc = "No endpoint was available to send the message";
        break;
    case CHIP_ERROR_INVALID_DESTINATION_NODE_ID.AsInteger():
        desc = "Invalid destination node id";
        break;
    case CHIP_ERROR_NOT_CONNECTED.AsInteger():
        desc = "Not connected";
        break;
    case CHIP_ERROR_NO_SW_UPDATE_AVAILABLE.AsInteger():
        desc = "No SW update available";
        break;
    case CHIP_ERROR_CA_CERT_NOT_FOUND.AsInteger():
        desc = "CA certificate not found";
        break;
    case CHIP_ERROR_CERT_PATH_LEN_CONSTRAINT_EXCEEDED.AsInteger():
        desc = "Certificate path length constraint exceeded";
        break;
    case CHIP_ERROR_CERT_PATH_TOO_LONG.AsInteger():
        desc = "Certificate path too long";
        break;
    case CHIP_ERROR_CERT_USAGE_NOT_ALLOWED.AsInteger():
        desc = "Requested certificate usage is not allowed";
        break;
    case CHIP_ERROR_CERT_EXPIRED.AsInteger():
        desc = "Certificate expired";
        break;
    case CHIP_ERROR_CERT_NOT_VALID_YET.AsInteger():
        desc = "Certificate not yet valid";
        break;
    case CHIP_ERROR_UNSUPPORTED_CERT_FORMAT.AsInteger():
        desc = "Unsupported certificate format";
        break;
    case CHIP_ERROR_UNSUPPORTED_ELLIPTIC_CURVE.AsInteger():
        desc = "Unsupported elliptic curve";
        break;
    case CHIP_CERT_NOT_USED.AsInteger():
        desc = "Certificate was not used in chain validation";
        break;
    case CHIP_ERROR_CERT_NOT_FOUND.AsInteger():
        desc = "Certificate not found";
        break;
    case CHIP_ERROR_INVALID_CASE_PARAMETER.AsInteger():
        desc = "Invalid CASE parameter";
        break;
    case CHIP_ERROR_UNSUPPORTED_CASE_CONFIGURATION.AsInteger():
        desc = "Unsupported CASE configuration";
        break;
    case CHIP_ERROR_CERT_LOAD_FAILED.AsInteger():
        desc = "Unable to load certificate";
        break;
    case CHIP_ERROR_CERT_NOT_TRUSTED.AsInteger():
        desc = "Certificate not trusted";
        break;
    case CHIP_ERROR_INVALID_ACCESS_TOKEN.AsInteger():
        desc = "Invalid access token";
        break;
    case CHIP_ERROR_WRONG_CERT_DN.AsInteger():
        desc = "Wrong certificate distinguished name";
        break;
    case CHIP_ERROR_INVALID_PROVISIONING_BUNDLE.AsInteger():
        desc = "Invalid provisioning bundle";
        break;
    case CHIP_ERROR_PROVISIONING_BUNDLE_DECRYPTION_ERROR.AsInteger():
        desc = "Provisioning bundle decryption error";
        break;
    case CHIP_ERROR_PASE_RECONFIGURE_REQUIRED.AsInteger():
        desc = "PASE reconfiguration required";
        break;
    case CHIP_ERROR_WRONG_NODE_ID.AsInteger():
        desc = "Wrong node ID";
        break;
    case CHIP_ERROR_CONN_ACCEPTED_ON_WRONG_PORT.AsInteger():
        desc = "Connection accepted on wrong port";
        break;
    case CHIP_ERROR_CALLBACK_REPLACED.AsInteger():
        desc = "Application callback replaced";
        break;
    case CHIP_ERROR_NO_CASE_AUTH_DELEGATE.AsInteger():
        desc = "No CASE auth delegate set";
        break;
    case CHIP_ERROR_DEVICE_LOCATE_TIMEOUT.AsInteger():
        desc = "Timeout attempting to locate device";
        break;
    case CHIP_ERROR_DEVICE_CONNECT_TIMEOUT.AsInteger():
        desc = "Timeout connecting to device";
        break;
    case CHIP_ERROR_DEVICE_AUTH_TIMEOUT.AsInteger():
        desc = "Timeout authenticating device";
        break;
    case CHIP_ERROR_MESSAGE_NOT_ACKNOWLEDGED.AsInteger():
        desc = "Message not acknowledged after max retries";
        break;
    case CHIP_ERROR_RETRANS_TABLE_FULL.AsInteger():
        desc = "Retransmit Table is already full";
        break;
    case CHIP_ERROR_INVALID_ACK_MESSAGE_COUNTER.AsInteger():
        desc = "Invalid acknowledged message counter";
        break;
    case CHIP_ERROR_SEND_THROTTLED.AsInteger():
        desc = "Sending to peer is throttled on this Exchange";
        break;
    case CHIP_ERROR_WRONG_MSG_VERSION_FOR_EXCHANGE.AsInteger():
        desc = "Message version not supported by current exchange context";
        break;
    case CHIP_ERROR_UNSUPPORTED_CHIP_FEATURE.AsInteger():
        desc = "Required feature not supported by this configuration";
        break;
    case CHIP_ERROR_UNSOLICITED_MSG_NO_ORIGINATOR.AsInteger():
        desc = "Unsolicited msg with originator bit clear";
        break;
    case CHIP_ERROR_INVALID_FABRIC_INDEX.AsInteger():
        desc = "Invalid Fabric Index";
        break;
    case CHIP_ERROR_TOO_MANY_CONNECTIONS.AsInteger():
        desc = "Too many connections";
        break;
    case CHIP_ERROR_SHUT_DOWN.AsInteger():
        desc = "The operation was cancelled because a shut down was initiated";
        break;
    case CHIP_ERROR_CANCELLED.AsInteger():
        desc = "The operation has been cancelled";
        break;
    case CHIP_ERROR_DRBG_ENTROPY_SOURCE_FAILED.AsInteger():
        desc = "DRBG entropy source failed to generate entropy data";
        break;
    case CHIP_ERROR_MESSAGE_COUNTER_EXHAUSTED.AsInteger():
        desc = "Message counter exhausted";
        break;
    case CHIP_ERROR_FABRIC_EXISTS.AsInteger():
        desc = "Trying to add a NOC for a fabric that already exists";
        break;
    case CHIP_ERROR_KEY_NOT_FOUND_FROM_PEER.AsInteger():
        desc = "Key not found error code received from peer";
        break;
    case CHIP_ERROR_WRONG_ENCRYPTION_TYPE_FROM_PEER.AsInteger():
        desc = "Wrong encryption type error code received from peer";
        break;
    case CHIP_ERROR_UNKNOWN_KEY_TYPE_FROM_PEER.AsInteger():
        desc = "Unknown key type error code received from peer";
        break;
    case CHIP_ERROR_INVALID_USE_OF_SESSION_KEY_FROM_PEER.AsInteger():
        desc = "Invalid use of session key error code received from peer";
        break;
    case CHIP_ERROR_UNSUPPORTED_ENCRYPTION_TYPE_FROM_PEER.AsInteger():
        desc = "Unsupported encryption type error code received from peer";
        break;
    case CHIP_ERROR_INTERNAL_KEY_ERROR_FROM_PEER.AsInteger():
        desc = "Internal key error code received from peer";
        break;
    case CHIP_ERROR_INVALID_KEY_ID.AsInteger():
        desc = "Invalid key identifier";
        break;
    case CHIP_ERROR_INVALID_TIME.AsInteger():
        desc = "Valid time value is not available";
        break;
    case CHIP_ERROR_LOCKING_FAILURE.AsInteger():
        desc = "Failure to lock/unlock OS-provided lock";
        break;
    case CHIP_ERROR_UNSUPPORTED_PASSCODE_CONFIG.AsInteger():
        desc = "Unsupported passcode encryption configuration";
        break;
    case CHIP_ERROR_PASSCODE_AUTHENTICATION_FAILED.AsInteger():
        desc = "Passcode authentication failed";
        break;
    case CHIP_ERROR_PASSCODE_FINGERPRINT_FAILED.AsInteger():
        desc = "Passcode fingerprint failed";
        break;
    case CHIP_ERROR_SERIALIZATION_ELEMENT_NULL.AsInteger():
        desc = "Element requested is null";
        break;
    case CHIP_ERROR_WRONG_CERT_SIGNATURE_ALGORITHM.AsInteger():
        desc = "Certificate not signed with required signature algorithm";
        break;
    case CHIP_ERROR_WRONG_CHIP_SIGNATURE_ALGORITHM.AsInteger():
        desc = "CHIP signature not signed with required signature algorithm";
        break;
    case CHIP_ERROR_SCHEMA_MISMATCH.AsInteger():
        desc = "Schema mismatch";
        break;
    case CHIP_ERROR_INVALID_INTEGER_VALUE.AsInteger():
        desc = "Invalid integer value";
        break;
    case CHIP_ERROR_CASE_RECONFIG_REQUIRED.AsInteger():
        desc = "CASE reconfiguration required";
        break;
    case CHIP_ERROR_TOO_MANY_CASE_RECONFIGURATIONS.AsInteger():
        desc = "Too many CASE reconfigurations were received";
        break;
    case CHIP_ERROR_BAD_REQUEST.AsInteger():
        desc = "Request cannot be processed or fulfilled";
        break;
    case CHIP_ERROR_INVALID_MESSAGE_FLAG.AsInteger():
        desc = "Invalid message flag";
        break;
    case CHIP_ERROR_KEY_EXPORT_RECONFIGURE_REQUIRED.AsInteger():
        desc = "Key export protocol required to reconfigure";
        break;
    case CHIP_ERROR_NO_COMMON_KEY_EXPORT_CONFIGURATIONS.AsInteger():
        desc = "No supported key export protocol configurations in common";
        break;
    case CHIP_ERROR_INVALID_KEY_EXPORT_CONFIGURATION.AsInteger():
        desc = "Invalid key export protocol configuration";
        break;
    case CHIP_ERROR_NO_KEY_EXPORT_DELEGATE.AsInteger():
        desc = "No key export protocol delegate set";
        break;
    case CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_REQUEST.AsInteger():
        desc = "Unauthorized key export request";
        break;
    case CHIP_ERROR_UNAUTHORIZED_KEY_EXPORT_RESPONSE.AsInteger():
        desc = "Unauthorized key export response";
        break;
    case CHIP_ERROR_EXPORTED_KEY_AUTHENTICATION_FAILED.AsInteger():
        desc = "Exported key authentication failed";
        break;
    case CHIP_ERROR_TOO_MANY_SHARED_SESSION_END_NODES.AsInteger():
        desc = "Too many shared session end nodes";
        break;
    case CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_DATA_IB.AsInteger():
        desc = "Malformed Interaction Model Attribute Data IB";
        break;
    case CHIP_ERROR_WRONG_CERT_TYPE.AsInteger():
        desc = "Wrong certificate type";
        break;
    case CHIP_ERROR_DEFAULT_EVENT_HANDLER_NOT_CALLED.AsInteger():
        desc = "Default event handler not called";
        break;
    case CHIP_ERROR_PERSISTED_STORAGE_FAILED.AsInteger():
        desc = "Persisted storage failed";
        break;
    case CHIP_ERROR_PERSISTED_STORAGE_VALUE_NOT_FOUND.AsInteger():
        desc = "Value not found in the persisted storage";
        break;
    case CHIP_ERROR_PROFILE_STRING_CONTEXT_ALREADY_REGISTERED.AsInteger():
        desc = "String context already registered";
        break;
    case CHIP_ERROR_PROFILE_STRING_CONTEXT_NOT_REGISTERED.AsInteger():
        desc = "String context not registered";
        break;
    case CHIP_ERROR_INCOMPATIBLE_SCHEMA_VERSION.AsInteger():
        desc = "Incompatible data schema version";
        break;
    case CHIP_ERROR_ACCESS_DENIED.AsInteger():
        desc = "The CHIP message is not granted access";
        break;
    case CHIP_ERROR_UNKNOWN_RESOURCE_ID.AsInteger():
        desc = "Unknown resource ID";
        break;
    case CHIP_ERROR_VERSION_MISMATCH.AsInteger():
        desc = "Version mismatch";
        break;
    case CHIP_ERROR_UNSUPPORTED_THREAD_NETWORK_CREATE.AsInteger():
        desc = "Legacy device doesn't support standalone Thread network creation";
        break;
    case CHIP_ERROR_INCONSISTENT_CONDITIONALITY.AsInteger():
        desc = "The Trait Instance is already being updated with a different conditionality";
        break;
    case CHIP_ERROR_LOCAL_DATA_INCONSISTENT.AsInteger():
        desc = "The local data does not match any known version of the Trait Instance";
        break;
    case CHIP_EVENT_ID_FOUND.AsInteger():
        desc = "Event ID matching criteria was found";
        break;
    case CHIP_ERROR_INTERNAL.AsInteger():
        desc = "Internal error";
        break;
    case CHIP_ERROR_OPEN_FAILED.AsInteger():
        desc = "Open file failed";
        break;
    case CHIP_ERROR_READ_FAILED.AsInteger():
        desc = "Read from file failed";
        break;
    case CHIP_ERROR_WRITE_FAILED.AsInteger():
        desc = "Write to file failed";
        break;
    case CHIP_ERROR_DECODE_FAILED.AsInteger():
        desc = "Decoding failed";
        break;
    case CHIP_ERROR_SESSION_KEY_SUSPENDED.AsInteger():
        desc = "Session key suspended";
        break;
    case CHIP_ERROR_UNSUPPORTED_WIRELESS_REGULATORY_DOMAIN.AsInteger():
        desc = "Unsupported wireless regulatory domain";
        break;
    case CHIP_ERROR_UNSUPPORTED_WIRELESS_OPERATING_LOCATION.AsInteger():
        desc = "Unsupported wireless operating location";
        break;
    case CHIP_ERROR_MDNS_COLLISION.AsInteger():
        desc = "mDNS collision";
        break;
    case CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB.AsInteger():
        desc = "Malformed Interacton Model Attribute Path IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB.AsInteger():
        desc = "Malformed Interacton Model Event Path IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_COMMAND_PATH_IB.AsInteger():
        desc = "Malformed Interacton Model Command Path IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_STATUS_IB.AsInteger():
        desc = "Malformed Interacton Model Attribute Status IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_EVENT_DATA_IB.AsInteger():
        desc = "Malformed Interacton Model Event Data IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_STATUS_IB.AsInteger():
        desc = "Malformed Interacton Model Status IB";
        break;
    case CHIP_ERROR_PEER_NODE_NOT_FOUND.AsInteger():
        desc = "Unable to find the peer node";
        break;
    case CHIP_ERROR_HSM.AsInteger():
        desc = "Hardware security module";
        break;
    case CHIP_ERROR_INTERMEDIATE_CA_NOT_REQUIRED.AsInteger():
        desc = "Intermediate CA not required";
        break;
    case CHIP_ERROR_REAL_TIME_NOT_SYNCED.AsInteger():
        desc = "Real time not synchronized";
        break;
    case CHIP_ERROR_UNEXPECTED_EVENT.AsInteger():
        desc = "Unexpected event";
        break;
    case CHIP_ERROR_ENDPOINT_POOL_FULL.AsInteger():
        desc = "Endpoint pool full";
        break;
    case CHIP_ERROR_INBOUND_MESSAGE_TOO_BIG.AsInteger():
        desc = "Inbound message too big";
        break;
    case CHIP_ERROR_OUTBOUND_MESSAGE_TOO_BIG.AsInteger():
        desc = "Outbound message too big";
        break;
    case CHIP_ERROR_DUPLICATE_MESSAGE_RECEIVED.AsInteger():
        desc = "Duplicate message received";
        break;
    case CHIP_ERROR_INVALID_PUBLIC_KEY.AsInteger():
        desc = "Invalid public key";
        break;
    case CHIP_ERROR_FABRIC_MISMATCH_ON_ICA.AsInteger():
        desc = "Fabric mismatch on ICA";
        break;
    case CHIP_ERROR_MESSAGE_COUNTER_OUT_OF_WINDOW.AsInteger():
        desc = "Message id out of window";
        break;
    case CHIP_ERROR_REBOOT_SIGNAL_RECEIVED.AsInteger():
        desc = "Termination signal is received";
        break;
    case CHIP_ERROR_NO_SHARED_TRUSTED_ROOT.AsInteger():
        desc = "No shared trusted root";
        break;
    case CHIP_ERROR_IM_STATUS_CODE_RECEIVED.AsInteger():
        desc = "Interaction Model Error";
        break;
    case CHIP_ERROR_IM_MALFORMED_COMMAND_STATUS_IB.AsInteger():
        desc = "Malformed Interaction Model Command Status IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_IB.AsInteger():
        desc = "Malformed Interaction Model Invoke Response IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_INVOKE_REQUEST_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Invoke Request Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_INVOKE_RESPONSE_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Invoke Response Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_REPORT_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Attribute Report Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_WRITE_REQUEST_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Write Request Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_EVENT_FILTER_IB.AsInteger():
        desc = "Malformed Interaction Model Event Filter IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_READ_REQUEST_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Read Request Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_REQUEST_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Subscribe Request Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_SUBSCRIBE_RESPONSE_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Subscribe Response Message";
        break;
    case CHIP_ERROR_IM_MALFORMED_EVENT_REPORT_IB.AsInteger():
        desc = "Malformed Interaction Model Event Report IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_CLUSTER_PATH_IB.AsInteger():
        desc = "Malformed Interaction Model Cluster Path IB";
        break;
    case CHIP_ERROR_IM_MALFORMED_DATA_VERSION_FILTER_IB.AsInteger():
        desc = "Malformed Interaction Model Data Version Filter IB";
        break;
    case CHIP_ERROR_NOT_FOUND.AsInteger():
        desc = "The item referenced in the function call was not found";
        break;
    case CHIP_ERROR_IM_MALFORMED_TIMED_REQUEST_MESSAGE.AsInteger():
        desc = "Malformed Interaction Model Timed Request Message";
        break;
    case CHIP_ERROR_INVALID_FILE_IDENTIFIER.AsInteger():
        desc = "The file identifier, encoded in the first few bytes of a processed file, has unexpected value";
        break;
    case CHIP_ERROR_BUSY.AsInteger():
        desc = "The Resource is busy and cannot process the request";
        break;
    case CHIP_ERROR_MAX_RETRY_EXCEEDED.AsInteger():
        desc = "The maximum retry limit has been exceeded";
        break;
    case CHIP_ERROR_PROVIDER_LIST_EXHAUSTED.AsInteger():
        desc = "The provider list has been exhausted";
        break;
    case CHIP_ERROR_ANOTHER_COMMISSIONING_IN_PROGRESS.AsInteger():
        desc = "Another commissioning in progress";
        break;
    case CHIP_ERROR_INVALID_SCHEME_PREFIX.AsInteger():
        desc = "The scheme field contains an invalid prefix";
        break;
    case CHIP_ERROR_MISSING_URI_SEPARATOR.AsInteger():
        desc = "The URI separator is missing";
        break;
    }
#endif // !CHIP_CONFIG_SHORT_ERROR_STR

    FormatError(buf, bufSize, "CHIP", err, desc);

    return true;
}

} // namespace chip
