//! Test comms client, but in Rust use binder::{StatusCode, Strong}; use com_android_minidroid_testservice::aidl::com::android::minidroid::testservice::ITestService::ITestService; use com_android_minidroid_testservice::binder; use log::{error, info}; use rpcbinder::RpcSession; fn get_service(cid: u32, port: u32) -> Result, StatusCode> { RpcSession::new().setup_vsock_client(cid, port) } fn main() -> Result<(), Box> { let _ = logger::init( logger::Config::default() .with_tag_on_device("client_minidroid_rust") .with_max_level(log::LevelFilter::Debug), ); // Redirect panic messages to logcat. std::panic::set_hook(Box::new(|panic_info| { error!("{}", panic_info); })); if std::env::args().len() != 3 { return Err(format!("usage: {} CID port", std::env::args().next().unwrap()).into()); } let service_host_cid = std::env::args().nth(1).and_then(|arg| arg.parse::().ok()).expect("invalid CID"); let service_port = std::env::args().nth(2).and_then(|arg| arg.parse::().ok()).expect("invalid port"); info!( "Hello Rust Minidroid client! Connecting to CID {} and port {}", service_host_cid, service_port ); let service = get_service(service_host_cid, service_port)?; service.sayHello()?; service.printText("Hello from Rust client! 🦀")?; let result = service.addInteger(4, 6)?; info!("Finished client. 4 + 6 = {}", result); Ok(()) }