use serde::Serialize;
use crate::device::Device;
#[derive(Debug, Clone, Serialize)]
#[serde(tag = "event", rename_all = "snake_case")]
pub enum Event {
DfuTriggerStage {
stage: String,
},
DeviceDetected {
device: Device,
},
FirmwareResolved {
identifier: String,
version: String,
build: String,
size: u64,
url: String,
},
CacheHit {
path: String,
},
DownloadResumed {
received: u64,
},
DownloadProgress {
received: u64,
total: u64,
},
Verifying,
RestoreStep {
step: u32,
name: String,
progress: f32,
},
LogLine {
level: i32,
line: String,
},
RestoreRetrying {
attempt: u32,
max_attempts: u32,
message: String,
},
UsbmuxdStarting,
DriverSetupStarting,
DriverBound {
name: String,
},
Done,
}
pub type ProgressFn<'a> = &'a mut dyn FnMut(Event);