Skip to main content

ascom_alpaca_core/
lib.rs

1//! Framework-agnostic ASCOM Alpaca protocol types and traits for Rust.
2//!
3//!
4//! This crate provides the complete ASCOM Alpaca protocol abstraction: typed response
5//! envelopes, error codes, device traits for all 10 ASCOM device types (~220 methods),
6//! domain enums, device registry, and conformance validation.
7//!
8//! No HTTP framework, no async runtime — works on ESP32 and desktop.
9
10pub mod device;
11pub mod discovery;
12pub mod management;
13pub mod registry;
14pub mod types;
15
16#[cfg(feature = "conformu")]
17pub mod conformu;
18
19#[cfg(feature = "camera")]
20pub mod camera;
21#[cfg(feature = "cover_calibrator")]
22pub mod cover_calibrator;
23#[cfg(feature = "dome")]
24pub mod dome;
25#[cfg(feature = "filter_wheel")]
26pub mod filter_wheel;
27#[cfg(feature = "focuser")]
28pub mod focuser;
29#[cfg(feature = "observing_conditions")]
30pub mod observing_conditions;
31#[cfg(feature = "rotator")]
32pub mod rotator;
33#[cfg(feature = "safety_monitor")]
34pub mod safety_monitor;
35#[cfg(feature = "switch")]
36pub mod switch;
37#[cfg(feature = "telescope")]
38pub mod telescope;
39
40/// Re-exports of the most commonly used types.
41pub mod prelude {
42    pub use crate::device::common::DeviceStateBuilder;
43    pub use crate::device::{Device, RegisteredDevice};
44    pub use crate::discovery::{
45        DiscoveryResponse, DEFAULT_DISCOVERY_PORT, DISCOVERY_PROBE, IPV6_MULTICAST,
46    };
47    pub use crate::management::{ConfiguredDevice, ServerDescription, ServerInfo};
48    pub use crate::registry::{ClientTracker, DeviceRegistry, TransactionCounter};
49    pub use crate::types::params::{normalize_params, CommonParams};
50    pub use crate::types::{
51        AlpacaError, AlpacaResponse, AlpacaResult, DeviceType, MethodResponse, RegistryError,
52    };
53
54    #[cfg(feature = "camera")]
55    pub use crate::camera::Camera;
56    #[cfg(feature = "cover_calibrator")]
57    pub use crate::cover_calibrator::CoverCalibrator;
58    #[cfg(feature = "dome")]
59    pub use crate::dome::Dome;
60    #[cfg(feature = "filter_wheel")]
61    pub use crate::filter_wheel::FilterWheel;
62    #[cfg(feature = "focuser")]
63    pub use crate::focuser::Focuser;
64    #[cfg(feature = "observing_conditions")]
65    pub use crate::observing_conditions::ObservingConditions;
66    #[cfg(feature = "rotator")]
67    pub use crate::rotator::Rotator;
68    #[cfg(feature = "safety_monitor")]
69    pub use crate::safety_monitor::SafetyMonitor;
70    #[cfg(feature = "switch")]
71    pub use crate::switch::Switch;
72    #[cfg(feature = "telescope")]
73    pub use crate::telescope::Telescope;
74}