Skip to main content

device_info/
device_info.rs

1use 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    // 1. Initialize the camera client
18    let mut cam = DVRIPCam::new(ip);
19
20    // 2. Connect to the device
21    println!("Connecting to {}...", ip);
22    cam.connect(Duration::from_secs(5)).await?;
23
24    // 3. Login
25    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    // 4. Retrieve System Information
34    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    // 5. Close connection
59    cam.close().await?;
60    println!("\nDisconnected.");
61
62    Ok(())
63}