Skip to main content

device_upgrade/
device_upgrade.rs

1use dvrip_rs::{Authentication, Connection, DVRIPCam, Upgrade};
2use std::time::Duration;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6    let args: Vec<String> = std::env::args().collect();
7    if args.len() < 4 {
8        println!("Usage: {} <IP> <Username> <Password>", args[0]);
9        return Ok(());
10    }
11
12    let ip = &args[1];
13    let user = &args[2];
14    let pass = &args[3];
15
16    let mut cam = DVRIPCam::new(ip);
17
18    cam.connect(Duration::from_secs(5)).await?;
19    cam.login(user, pass).await?;
20
21    println!("Checking device upgrade compatibility...");
22    match cam.get_upgrade_info().await {
23        Ok(info) => println!("Upgrade Information: {:#?}", info),
24        Err(e) => eprintln!("Failed to get upgrade info: {}", e),
25    }
26
27    println!("\n--- FIRMWARE UPGRADE EXAMPLE ---");
28    println!("WARNING: This is a critical operation. Ensure you have the correct .bin file.");
29
30    cam.close().await?;
31    Ok(())
32}