config_management/
config_management.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 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 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 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 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}