hiroz 0.2.0

Native Rust ROS 2 implementation using Zenoh
use hiroz::{Builder, Result, context::ZContextBuilder};
use hiroz_msgs::sensor_msgs::BatteryState;

fn main() -> Result<()> {
    let ctx = ZContextBuilder::default().build()?;
    let node = ctx.create_node("battery_state_subscriber").build()?;
    let zsub = node.create_sub::<BatteryState>("battery_status").build()?;

    println!("Listening for BatteryState messages on /battery_status...");

    loop {
        let msg = zsub.recv()?;
        println!("Received BatteryState:");
        println!("  Voltage: {:.2}V", msg.voltage);
        println!("  Percentage: {:.1}%", msg.percentage * 100.0);
        println!(
            "  Status: {}",
            match msg.power_supply_status {
                BatteryState::POWER_SUPPLY_STATUS_UNKNOWN => "Unknown",
                BatteryState::POWER_SUPPLY_STATUS_CHARGING => "Charging",
                BatteryState::POWER_SUPPLY_STATUS_DISCHARGING => "Discharging",
                BatteryState::POWER_SUPPLY_STATUS_NOT_CHARGING => "Not Charging",
                BatteryState::POWER_SUPPLY_STATUS_FULL => "Full",
                _ => "Invalid",
            }
        );
        println!("  Temperature: {:.1}°C", msg.temperature);
        println!("  Current: {:.2}A", msg.current);
        println!("  Charge: {:.2}Ah", msg.charge);
        println!("  Capacity: {:.2}Ah", msg.capacity);
        println!("---");
    }
}