Skip to main content

Crate easycom

Crate easycom 

Source
Expand description

§easycom

A Rust library implementing the Easycom antenna rotator control protocol, supporting the Yaesu GS-232A/B command set, Easycomm II, and Easycomm III.

§Quick start (std)

use easycom::{Session, Command, Response};
use easycom::transport::MockTransport;

let mut transport = MockTransport::new();
transport.enqueue_response(b"AZ=270 EL=045\r".to_vec());

let mut session = Session::new(transport);
match session.send(Command::QueryPosition).unwrap() {
    Response::Position { az, el } => println!("AZ={az} EL={el}"),
    Response::AzimuthPosition(az) => println!("AZ={az}"),
    Response::ElevationPosition(el) => println!("EL={el}"),
    Response::Status(status) => println!("status: {status:?}"),
    Response::StatusRegister(val) => println!("status register: {val}"),
    Response::ErrorRegister(val) => println!("error register: {val}"),
    Response::ConfigValue { register, value } => println!("CR{register}={value}"),
    Response::Ack => println!("ack"),
    Response::Error => println!("device error"),
}

Re-exports§

pub use command::Command;
pub use command::DeviceStatus;
pub use command::Response;
pub use error::Error;
pub use framing::CommandParser;
pub use framing::decode_command;
pub use session::Session;
pub use transport::Transport;

Modules§

command
error
framing
Frame encoding and decoding for the Easycom protocol.
session
High-level synchronous session over a Transport.
transport
Abstract I/O transport used by crate::session::Session.