| // Copyright 2023 Google LLC |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| use thiserror::Error; |
| |
| use bt_common::packet_encoding::Error as PacketError; |
| use bt_gatt::types::{Error as BTGattError, Handle}; |
| |
| #[derive(Debug, Error)] |
| pub enum Error { |
| #[error("An unsupported opcode ({0:#x}) used in a Broadcast Audio Scan Control Point operation")] |
| OpCodeNotSupported(u8), |
| |
| #[error("Invalid source id ({0:#x}) used in a Broadcast Audio Scan Control Point operation")] |
| InvalidSourceId(u8), |
| |
| #[error("Packet serialization/deserialization error: {0}")] |
| Packet(PacketError), |
| |
| #[error("Malformed service on peer: {0}")] |
| Service(ServiceError), |
| |
| #[error("GATT operation error: {0}")] |
| Gatt(BTGattError), |
| |
| #[error("Failure occurred: {0}")] |
| Generic(String), |
| } |
| |
| /// This error represents an error we found at the remote service |
| /// which prevents us from proceeding further with the client operation. |
| #[derive(Debug, Error, PartialEq)] |
| pub enum ServiceError { |
| #[error("Missing a required service characteristic")] |
| MissingCharacteristic, |
| |
| #[error("More than one Broadcast Audio Scan Control Point characteristics")] |
| ExtraScanControlPointCharacteristic, |
| |
| #[error("Failed to configure notification for Broadcast Recieve State characteristic (handle={0:?})")] |
| NotificationConfig(Handle), |
| } |