| // Copyright 2022 The Pigweed Authors |
| // |
| // 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 |
| // |
| // https://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. |
| #pragma once |
| |
| #include <cstdint> |
| |
| namespace pw::bluetooth::gatt { |
| |
| /// The values correspond with those in Bluetooth 5.2 Vol. 3 Part G Table 3.4, |
| /// and Supplement to the Bluetooth Core Specification v9 Part B Table 1.1, |
| /// but this is for ease of reference only. Clients should *not* rely on these |
| /// values remaining constant. Omitted values from the spec are handled |
| /// internally and will not be returned to clients. |
| enum class Error : uint16_t { |
| // ATT Errors |
| |
| /// The attribute indicated by the handle is invalid. It may have been |
| /// removed. |
| /// |
| /// This may be returned by a LocalService method. |
| kInvalidHandle = 0x1, |
| |
| /// This attribute is not readable. |
| kReadNotPermitted = 0x2, |
| |
| /// This attribute is not writable. |
| kWriteNotPermitted = 0x3, |
| |
| /// Indicates that the response received from the server was invalid. |
| kInvalidPdu = 0x4, |
| |
| /// This attribute requires authentication, but the client is not |
| /// authenticated. |
| kInsufficientAuthentication = 0x5, |
| |
| /// Indicates that the offset used in a read or write request exceeds the |
| /// bounds of the value. |
| kInvalidOffset = 0x7, |
| |
| /// This attribute requires authorization, but the client is not authorized. |
| kInsufficientAuthorization = 0x8, |
| |
| /// This attribute requires a connection encrypted by a larger encryption key. |
| kInsufficientEncryptionKeySize = 0xC, |
| |
| /// Indicates that the value given in a write request would exceed the maximum |
| /// length allowed for the destionation characteristic or descriptor. |
| kInvalidAttributeValueLength = 0xD, |
| |
| /// A general error occurred that can not be classified as one of the more |
| /// specific errors. |
| kUnlikelyError = 0xE, |
| |
| /// This attribute requires encryption, but the connection is not encrypted. |
| kInsufficientEncryption = 0xF, |
| |
| /// The server had insufficient resources to complete the task. |
| kInsufficientResources = 0x11, |
| |
| /// The value was not allowed. |
| kValueNotAllowed = 0x13, |
| |
| // Application Errors |
| |
| /// Application Errors. The uses of these are specified at the application |
| /// level. |
| kApplicationError80 = 0x80, |
| kApplicationError81 = 0x81, |
| kApplicationError82 = 0x82, |
| kApplicationError83 = 0x83, |
| kApplicationError84 = 0x84, |
| kApplicationError85 = 0x85, |
| kApplicationError86 = 0x86, |
| kApplicationError87 = 0x87, |
| kApplicationError88 = 0x88, |
| kApplicationError89 = 0x89, |
| kApplicationError8A = 0x8A, |
| kApplicationError8B = 0x8B, |
| kApplicationError8C = 0x8C, |
| kApplicationError8D = 0x8D, |
| kApplicationError8E = 0x8E, |
| kApplicationError8F = 0x8F, |
| kApplicationError90 = 0x90, |
| kApplicationError91 = 0x91, |
| kApplicationError92 = 0x92, |
| kApplicationError93 = 0x93, |
| kApplicationError94 = 0x94, |
| kApplicationError95 = 0x95, |
| kApplicationError96 = 0x96, |
| kApplicationError97 = 0x97, |
| kApplicationError98 = 0x98, |
| kApplicationError99 = 0x99, |
| kApplicationError9A = 0x9A, |
| kApplicationError9B = 0x9B, |
| kApplicationError9C = 0x9C, |
| kApplicationError9D = 0x9D, |
| kApplicationError9E = 0x9E, |
| kApplicationError9F = 0x9F, |
| |
| // Common Profile and Service Error Codes |
| |
| /// Write request was rejected at the profile or service level. |
| kWriteRequestRejected = 0xFC, |
| |
| /// The Client Characteristic Configuration Descriptor was improperly |
| /// configured. |
| kCccDescriptorImproperlyConfigured = 0xFD, |
| |
| /// Profile or service procedure already in progress. |
| kProcedureAlreadyInProgress = 0xFE, |
| |
| /// A value was out of range at the profile or service level. |
| kOutOfRange = 0xFF, |
| |
| // Errors not specified by Bluetooth. |
| |
| // One or more of the call parameters are invalid. See the parameter |
| // documentation. |
| kInvalidParameters = 0x101, |
| |
| // Generic failure. |
| kFailure = 0x102, |
| }; |
| |
| } // namespace pw::bluetooth::gatt |