device_info/
device_info.rs1use dvrip_rs::{Authentication, Connection, DVRIPCam, SystemInfo};
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 println!("Example: cargo run --example device_info -- 192.168.1.10 admin pass123");
10 return Ok(());
11 }
12
13 let ip = &args[1];
14 let user = &args[2];
15 let pass = &args[3];
16
17 let mut cam = DVRIPCam::new(ip);
19
20 println!("Connecting to {}...", ip);
22 cam.connect(Duration::from_secs(5)).await?;
23
24 println!("Logging in as {}...", user);
26 if cam.login(user, pass).await? {
27 println!("Login successful!");
28 } else {
29 println!("Login failed!");
30 return Ok(());
31 }
32
33 println!("\n--- General Info ---");
35 match cam.get_general_info().await {
36 Ok(general) => println!("{:#?}", general),
37 Err(e) => eprintln!("Error getting general info: {}", e),
38 }
39
40 println!("\n--- Network Info ---");
41 match cam.get_network_info().await {
42 Ok(network) => println!("{:#?}", network),
43 Err(e) => eprintln!("Error getting network info: {}", e),
44 }
45
46 println!("\n--- Device Time ---");
47 match cam.get_time().await {
48 Ok(dev_time) => println!("Current device time: {}", dev_time),
49 Err(e) => eprintln!("Error getting device time: {}", e),
50 }
51
52 println!("\n--- System Capabilities ---");
53 match cam.get_system_capabilities().await {
54 Ok(caps) => println!("{:#?}", caps),
55 Err(e) => eprintln!("Error getting system capabilities: {}", e),
56 }
57
58 cam.close().await?;
60 println!("\nDisconnected.");
61
62 Ok(())
63}