#![forbid(unsafe_code)]
pub mod actuator;
pub mod bus;
pub mod control;
pub mod error;
pub mod manager;
pub mod monitor;
pub mod motor;
pub mod protocol;
pub mod protocols;
#[cfg(feature = "socketcan")]
pub mod socketcan_transport;
#[cfg(feature = "tui")]
pub mod tui;
pub use actuator::{
ActuatorConfig, ActuatorFeedback, ActuatorHealth, ActuatorMetric, ActuatorProtocol,
ActuatorSnapshot,
};
pub use bus::{CanBus, CanFrame, CanId};
pub use control::{
LowPassFilterConfig, PIDConfig, PIDController, SecondOrderLowPassFilter, SolverType,
};
pub use error::{Error, Result};
pub use manager::MotorManager;
pub use monitor::{
CAN_TRACE_CSV_HEADER, CanFrameClass, CanFrameRecord, CanMonitor, CanMonitorStats,
CanTraceRecord, FormattedCanFrame, parse_can_trace_csv, replay_can_trace, sample_can_monitor,
};
pub use motor::{HelperPolicy, MotorConfig, MotorController, RefreshStats};
pub use protocol::{
ControlMode, DirectCommand, DirectPayload, FaultCode, FeedbackFilter, FeedbackMessageConfig,
MOTOR_DISABLE_ACKNOWLEDGEMENT, MitCommand, MitHelperCommand, MitLimits, MotorFeedback,
MotorFeedbackUpdate, MotorModel, MotorSpec, OriginMode, Position32Feedback,
SUPPORTED_MOTOR_MODELS, direct_command_frame, is_position_32bit_feedback_frame,
is_servo_feedback_frame, mit_command_frame, mit_helper_frame, pack_mit_command,
parse_position_32bit_feedback, parse_servo_feedback,
};
pub use protocols::knott_dynamics::{
KNOTT_DYNAMICS_DEFAULT_BITRATE, KNOTT_DYNAMICS_FAULTS, KNOTT_DYNAMICS_MAX_NODE_ID,
KNOTT_DYNAMICS_MIN_NODE_ID, KNOTT_DYNAMICS_MODELS, KNOTT_DYNAMICS_PARAMETERS,
KnottDynamicsFault, KnottDynamicsFaults, KnottDynamicsFeedback, KnottDynamicsFeedbackKind,
KnottDynamicsFlashCommand, KnottDynamicsFunction, KnottDynamicsMode, KnottDynamicsModel,
KnottDynamicsParameter, KnottDynamicsParameterAccess, KnottDynamicsParameterDescriptor,
KnottDynamicsParameterType, KnottDynamicsParameterValue, KnottDynamicsWriteRequirement,
is_knott_dynamics_frame_shape, knott_dynamics_disable_frame, knott_dynamics_flash_frame,
knott_dynamics_flash_frame_in_mode, knott_dynamics_heartbeat_frame, knott_dynamics_nmt_frame,
knott_dynamics_nmt_frame_from_mode, knott_dynamics_opaque_watchdog_frame,
knott_dynamics_parameter_read_frame, knott_dynamics_parameter_write_frame,
knott_dynamics_parameter_write_frame_in_mode, knott_dynamics_position_torque_frame,
knott_dynamics_position_velocity_frame, knott_dynamics_probe_frame,
parse_knott_dynamics_feedback, parse_knott_dynamics_opaque_watchdog_response,
parse_knott_dynamics_parameter_response, parse_knott_dynamics_probe_response,
validate_knott_dynamics_parameter_write, validate_knott_dynamics_parameter_write_in_mode,
validate_node_id,
};
pub use protocols::robstride::{
ROBSTRIDE_MODELS, RobStrideCommand, RobStrideFeedback, RobStrideFrameKind, RobStrideMitCommand,
RobStrideModel, RobStridePositionCommand, RobStrideRawCommand, RobStrideSpec,
RobStrideSpeedCommand, robstride_command_frame, robstride_status_query_frame,
};
#[cfg(feature = "socketcan")]
pub use socketcan_transport::SocketCanBus;
#[cfg(feature = "tui")]
pub use tui::{
CanMonitorCommand, TuiCanMonitor, TuiCommand, TuiControlIntent, TuiDashboard, TuiMode,
TuiTarget,
};