|
| 1 | +//! Quick X5 camera RPC connectivity check. |
| 2 | +//! |
| 3 | +//! Run with: |
| 4 | +//! `cargo run -p booster_sdk --example x5_camera_rpc_check` |
| 5 | +//! |
| 6 | +//! Optional env vars: |
| 7 | +//! - `BOOSTER_DOMAIN_ID` (default: `0`) |
| 8 | +//! - `BOOSTER_TIMEOUT_MS` (default: `3000`) |
| 9 | +//! - `BOOSTER_RPC_DEBUG` (`1`/`true` for verbose RPC logs) |
| 10 | +
|
| 11 | +use std::time::{Duration, Instant}; |
| 12 | + |
| 13 | +use booster_sdk::client::x5_camera::X5CameraClient; |
| 14 | +use booster_sdk::dds::{RpcClientOptions, X5_CAMERA_CONTROL_API_TOPIC}; |
| 15 | + |
| 16 | +#[tokio::main] |
| 17 | +async fn main() -> Result<(), Box<dyn std::error::Error>> { |
| 18 | + tracing_subscriber::fmt().with_env_filter("info").init(); |
| 19 | + |
| 20 | + let domain_id = std::env::var("BOOSTER_DOMAIN_ID") |
| 21 | + .ok() |
| 22 | + .and_then(|v| v.parse::<u16>().ok()) |
| 23 | + .unwrap_or(0); |
| 24 | + let timeout_ms = std::env::var("BOOSTER_TIMEOUT_MS") |
| 25 | + .ok() |
| 26 | + .and_then(|v| v.parse::<u64>().ok()) |
| 27 | + .unwrap_or(3000); |
| 28 | + |
| 29 | + println!( |
| 30 | + "X5 RPC check: domain_id={}, timeout_ms={}, topic={}", |
| 31 | + domain_id, timeout_ms, X5_CAMERA_CONTROL_API_TOPIC |
| 32 | + ); |
| 33 | + |
| 34 | + let client = X5CameraClient::with_options(RpcClientOptions { |
| 35 | + domain_id, |
| 36 | + default_timeout: Duration::from_millis(timeout_ms), |
| 37 | + service_topic: X5_CAMERA_CONTROL_API_TOPIC.to_owned(), |
| 38 | + })?; |
| 39 | + |
| 40 | + let started = Instant::now(); |
| 41 | + match client.get_status().await { |
| 42 | + Ok(resp) => { |
| 43 | + let elapsed = started.elapsed(); |
| 44 | + println!( |
| 45 | + "OK: status={} status_enum={:?} elapsed_ms={}", |
| 46 | + resp.status, |
| 47 | + resp.status_enum(), |
| 48 | + elapsed.as_millis() |
| 49 | + ); |
| 50 | + Ok(()) |
| 51 | + } |
| 52 | + Err(err) => { |
| 53 | + let elapsed = started.elapsed(); |
| 54 | + eprintln!("ERR: {err}"); |
| 55 | + eprintln!("elapsed_ms={}", elapsed.as_millis()); |
| 56 | + std::process::exit(2); |
| 57 | + } |
| 58 | + } |
| 59 | +} |
0 commit comments