use std::thread;
use std::time::Duration;
use linux_info::network::network_manager::{NetworkManager, DeviceState};
use linux_info::network::modem_manager::ModemManager;
fn main() {
let dbus = NetworkManager::connect().unwrap();
for device in dbus.devices().unwrap() {
let state = device.state().unwrap();
let kind = device.kind().unwrap();
let interface = device.interface().unwrap();
println!("{:?} {:?} {:?}", interface, kind, state);
if let Ok(apn) = device.modem_apn() {
println!("- has apn {:?}", apn);
}
if matches!(state, DeviceState::Activated) {
let ipv4 = device.ipv4_config().unwrap()
.addresses().unwrap();
println!("- addresses {:?}", ipv4);
}
}
let dbus = ModemManager::connect().unwrap();
for modem in dbus.modems().unwrap() {
println!(
"modem {:?} {:?} {:?}",
modem.model().unwrap(),
modem.manufacturer().unwrap(),
modem.device().unwrap()
);
println!(
"- carrier configuration: {:?}",
modem.carrier_configuration().unwrap()
);
println!(
"- state: {:?}, signal: {:?}",
modem.state().unwrap(),
modem.signal_quality().unwrap()
);
let (allowed_modes, preffered_modes) = modem.current_modes().unwrap();
println!(
"- allowed modes: 2g: {} 3g: {} 4g: {} 5g: {}",
allowed_modes.has_2g(),
allowed_modes.has_3g(),
allowed_modes.has_4g(),
allowed_modes.has_5g()
);
println!(
"- prefered modes: 2g: {} 3g: {} 4g: {} 5g: {}",
preffered_modes.has_2g(),
preffered_modes.has_3g(),
preffered_modes.has_4g(),
preffered_modes.has_5g()
);
println!(
"- bands: {:?}",
modem.current_bands().unwrap()
);
modem.signal_setup(10).unwrap();
thread::sleep(Duration::from_secs(1));
if let Ok(cdma) = modem.signal_cdma() {
println!("- cdma: {:?}", cdma);
}
if let Ok(evdo) = modem.signal_evdo() {
println!("- evdo: {:?}", evdo);
}
if let Ok(gsm) = modem.signal_gsm() {
println!("- gsm: {:?}", gsm);
}
if let Ok(umts) = modem.signal_umts() {
println!("- umts: {:?}", umts);
}
if let Ok(lte) = modem.signal_lte() {
println!("- lte: {:?}", lte);
}
if let Ok(nr5g) = modem.signal_nr5g() {
println!("- nr5g: {:?}", nr5g);
}
}
}