device_upgrade/
device_upgrade.rs1use 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}