Skip to main content

config_management/
config_management.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        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!("--- CONFIGURATION MANAGEMENT ---");
22
23    // 1. Get Encoding Configuration
24    println!("Retrieving Encoding Config...");
25    match cam.get_encode_info(false).await {
26        Ok(config) => println!("Current Encode Settings: {:#?}", config),
27        Err(e) => eprintln!("Error: {}", e),
28    }
29
30    // 2. Get Camera Settings
31    println!("\nRetrieving Camera Settings...");
32    match cam.get_camera_info(false).await {
33        Ok(config) => println!("Current Camera Settings: {:#?}", config),
34        Err(e) => eprintln!("Error: {}", e),
35    }
36
37    // 3. Syncing device time
38    println!("\nSyncing device time with local system time...");
39    let now = chrono::Local::now();
40    match cam.set_time(Some(now)).await {
41        Ok(true) => println!("Time synchronized to: {}", now),
42        Ok(false) => println!("Failed to sync time."),
43        Err(e) => eprintln!("Error: {}", e),
44    }
45
46    cam.close().await?;
47    Ok(())
48}