#[cfg(not(target_os = "linux"))]
fn main() {
piper_sdk::init_logger!();
eprintln!("该示例仅支持 Linux(SocketCAN)。");
}
#[cfg(target_os = "linux")]
fn main() {
piper_sdk::init_logger!();
use piper_sdk::can::SocketCanAdapter;
use std::env;
use std::time::Duration;
let mut args = env::args().skip(1);
let iface = args.next().unwrap_or_else(|| "can0".to_string());
let interval_ms: u64 = args.next().as_deref().unwrap_or("1000").parse().unwrap_or(1000);
println!("=== SocketCAN iface 检测示例 ===");
println!("- iface: {}", iface);
println!("- interval: {} ms", interval_ms);
println!();
println!("提示:在另一个终端执行:");
println!(" sudo ip link set up {}", iface);
println!(" sudo ip link set down {}", iface);
println!();
loop {
match SocketCanAdapter::new(&iface) {
Ok(_adapter) => {
println!("[OK ] iface '{}' is UP (adapter created)", iface);
},
Err(e) => {
println!("[ERR] iface '{}' not ready: {}", iface, e);
},
}
std::thread::sleep(Duration::from_millis(interval_ms));
}
}