use kcan::{
KnottDynamicsFlashCommand, KnottDynamicsMode, KnottDynamicsParameter,
KnottDynamicsParameterValue, knott_dynamics_disable_frame, knott_dynamics_flash_frame_in_mode,
knott_dynamics_heartbeat_frame, knott_dynamics_nmt_frame_from_mode,
knott_dynamics_parameter_read_frame, knott_dynamics_parameter_write_frame_in_mode,
knott_dynamics_position_torque_frame, knott_dynamics_position_velocity_frame,
knott_dynamics_probe_frame,
};
fn main() -> kcan::Result<()> {
let frames = [
knott_dynamics_nmt_frame_from_mode(
Some(1),
KnottDynamicsMode::Disabled,
KnottDynamicsMode::Idle,
)?,
knott_dynamics_disable_frame(Some(1))?,
knott_dynamics_probe_frame(1)?,
knott_dynamics_position_velocity_frame(1, 1.0, -2.0)?,
knott_dynamics_position_torque_frame(1, 1.0, 0.5)?,
knott_dynamics_heartbeat_frame(1)?,
knott_dynamics_parameter_read_frame(1, KnottDynamicsParameter::FirmwareVersion)?,
knott_dynamics_parameter_write_frame_in_mode(
1,
KnottDynamicsMode::Idle,
KnottDynamicsParameter::TorqueLimit,
KnottDynamicsParameterValue::F32(1.0),
)?,
knott_dynamics_flash_frame_in_mode(
1,
KnottDynamicsMode::Idle,
KnottDynamicsFlashCommand::Store,
)?,
];
for frame in frames {
println!("{frame}");
}
Ok(())
}