| // Copyright 2024 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| use bt_common::packet_encoding::Error as PacketError; | |
| use bt_gatt::types::Handle; | |
| use bt_gatt::types::{Error as GattLibraryError, GattError}; | |
| use thiserror::Error; | |
| #[derive(Debug, Error)] | |
| pub enum Error { | |
| #[error("LE Scan for battery services has already started.")] | |
| ScanAlreadyStarted, | |
| #[error("GATT operation error: {0:?}")] | |
| Gatt(#[from] GattError), | |
| #[error("GATT library error: {0:?}")] | |
| GattLibrary(#[from] GattLibraryError), | |
| #[error("No compatible battery service found")] | |
| ServiceNotFound, | |
| #[error("Packet serialization/deserialization error: {0}")] | |
| Packet(#[from] PacketError), | |
| #[error("Malformed service on peer: {0}")] | |
| Service(#[from] ServiceError), | |
| #[error("Generic failure: {0}")] | |
| Generic(String), | |
| } | |
| /// Errors found when interacting with the remote peer's battery service. | |
| #[derive(Debug, Error, PartialEq)] | |
| pub enum ServiceError { | |
| #[error("Missing a required service characteristic")] | |
| MissingCharacteristic, | |
| #[error("Notification streams unexpectedly terminated")] | |
| NotificationStreamClosed, | |
| #[error("Notification received for an unsupported handle: {0:?}")] | |
| UnsupportedHandle(Handle), | |
| } |