#![doc = include_str!("../README.md")]
#![warn(missing_docs)]
pub mod barrier;
pub mod cbba;
pub mod config;
pub mod controller;
pub mod flocking;
pub mod formation;
pub mod geo;
pub mod neighbor;
pub mod precedence;
pub mod scenarios;
pub mod separation;
pub mod setpoint;
pub mod sim;
pub mod status;
pub use barrier::{BarrierOutcome, BARRIER_GAIN_HZ};
pub use cbba::{
conflicts, consensus_reached, converge_broadcast, BidVector, CbbaAgent, CbbaTask,
ConvergenceReport, TaskAssignment,
};
pub use config::SwarmControlConfig;
pub use controller::{
ControlOutcome, NeighborFix, OperatorDirective, OwnState, Suppression, SwarmControlCounters,
SwarmController, SwarmMode, CONTROL_HZ, CONTROL_PERIOD, OPERATOR_DIRECTIVE_TTL,
};
pub use flocking::{FlockTerms, FlockTuning};
pub use formation::{Formation, FormationAnchor, FormationName};
pub use geo::{GeoOrigin, Ned};
pub use neighbor::{NearestSet, NeighborState};
pub use precedence::{arbitrate, precedence_rank, ModePrecedence};
pub use separation::{HardBreach, SeparationTuning};
pub use setpoint::{Setpoint, SetpointKind, MAX_COMMAND_SPEED_MPS};
pub use status::{
STATUS_ARMED, STATUS_EMERGENCY, STATUS_GPS_OK, STATUS_GUIDED, STATUS_HERO,
STATUS_PRECEDENCE_MASK, STATUS_PRECEDENCE_SHIFT,
};
pub const NEIGHBOR_STALE: std::time::Duration = std::time::Duration::from_secs(3);
pub const OWN_STATE_STALE: std::time::Duration = std::time::Duration::from_secs(1);