1use std::path::PathBuf;
2use std::time::Duration;
3use thiserror::Error;
4
5#[derive(Error, Debug)]
6pub enum DroidError {
7 #[error("ADB command failed: {0}")]
8 AdbError(String),
9
10 #[error("Device not found or specified serial is invalid")]
11 DeviceNotFound,
12
13 #[error("Image processing error: {0}")]
14 ImageError(#[from] image::ImageError),
15
16 #[error("I/O error: {0}")]
17 IoError(#[from] std::io::Error),
18
19 #[error("Operation timed out after {0:?}")]
20 Timeout(Duration),
21
22 #[error("Could not find image target on screen: {0:?}")]
23 ImageNotFound(PathBuf),
24
25 #[error("Invalid target for operation: {0}")]
26 InvalidTarget(String),
27
28 #[error("GPU/OpenCL error: {0}")]
29 GpuError(String),
30}
31
32pub type Result<T> = std::result::Result<T, DroidError>;