pub trait SharedDeviceOps: Send + Sync {
// Required methods
fn name(&self) -> &str;
fn device_type(&self) -> DeviceType;
fn open(&self) -> Result<(), DeviceError>;
fn close(&self) -> Result<(), DeviceError>;
fn ioctl(&self, cmd: u64, arg: u64) -> Result<u64, DeviceError>;
// Provided methods
fn sync(&self) -> Result<(), DeviceError> { ... }
fn is_compatible(&self, _scan_info: &ScanInfo) -> bool { ... }
}