1#[derive(Clone, Debug, thiserror::Error, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
5pub enum Error {
6 #[error("failed to reboot")]
7 Reboot,
8 #[error("no update downloaded")]
9 NoUpdateDownloaded,
10 #[error("io error: {0}")]
11 Io(String),
12 #[error(transparent)]
13 Fs(#[from] fs::Error),
14 #[error("failed to parse version string {0}")]
15 ParseVersion(String),
16 #[error("patch version mismatch")]
17 PatchVersionMismatch,
18 #[error("patch file ({file_name}) size mismatch, expected = {expected_size}, actual = {actual_size}")]
19 PatchSizeMismatch { file_name: String, expected_size: u64, actual_size: u64 },
20 #[error("patch file hash mismatch")]
21 PatchHashMismatch,
22 #[error("bsdiff patch failed: {0}")]
23 Bsdiff(String),
24 #[error("cosign2 error: {0}")]
25 Cosign2(String),
26 #[error("cosign2 header missing")]
27 Cosign2HeaderMissing,
28 #[error("crypto error")]
29 CryptoError(#[from] crypto::error::CryptoError),
30 #[error("security error")]
31 SecurityError,
32 #[error("invalid manifest")]
33 InvalidManifest,
34 #[error("unexpected error")]
35 Unexpected(String),
36 #[error("insufficient battery level for update")]
37 InsufficientBattery,
38 #[error("firmware rollback prevented: current timestamp = {current}, update timestamp = {update}")]
39 RollbackPrevented { current: u32, update: u32 },
40}
41
42impl From<std::io::Error> for Error {
43 fn from(e: std::io::Error) -> Self { Error::Io(e.to_string()) }
44}
45
46#[derive(Clone, Debug, thiserror::Error, rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)]
47pub enum DownloadError {
48 #[error("io error: {0}")]
49 Io(String),
50 #[error(transparent)]
51 Fs(#[from] fs::Error),
52 #[error("envoy error: {0}")]
53 EnvoyError(String),
54 #[error("retry request failed: {0}")]
55 RetryFailed(String),
56 #[error("invalid state")]
57 InvalidState,
58 #[error("invalid chunk")]
59 InvalidChunk,
60 #[error("download stalled")]
61 Stalled,
62}
63
64impl From<std::io::Error> for DownloadError {
65 fn from(e: std::io::Error) -> Self { DownloadError::Io(e.to_string()) }
66}