Skip to main content

sim_lib_view_device/
lib.rs

1//! Device profiles and timing loops for SIM Web surface capabilities.
2//!
3//! Surfaces still advertise open [`sim_lib_view::SurfaceCaps`] metadata. This
4//! crate adds the typed device view over that metadata: a timing envelope,
5//! an ordered tier ladder, a single tier derivation function, a deterministic
6//! [`FrameClock`] and [`AdapterLoop`], and degradation reasons when an observed
7//! route cannot provide every requested capability. It remains library-level
8//! surface logic; the kernel does not learn a device enum.
9
10#![deny(missing_docs)]
11
12pub mod adapter;
13pub mod clock;
14pub mod consent;
15pub mod degrade;
16pub mod glance;
17pub mod glance_adapter;
18pub mod glasses_routes;
19pub mod ladder;
20pub mod r#loop;
21pub mod profile;
22mod profile_surface;
23pub mod rate;
24pub mod reaper;
25pub mod split;
26pub mod worn_caps;
27
28pub use adapter::{EncodedScene, LocalAdapter, MirrorAdapter};
29pub use clock::FrameClock;
30pub use consent::{
31    ConsentReceipt, DeviceCapability, EdgeId, record_consent_receipt, require_with_consent,
32};
33pub use degrade::{Degradation, DegradationResolver, ObservedRoute};
34pub use glance::{
35    AckChannel, GlanceBudget, GlanceInput, GlanceReducer, GlanceState, fit_to_budget,
36    reduce_scene_to_glance,
37};
38pub use glance_adapter::GlanceAdapter;
39pub use glasses_routes::{
40    GlassesRoute, ObservedGlassesDevices, ResolvedGlassesProfile, resolve_glasses_route,
41};
42pub use ladder::DeviceTier;
43pub use r#loop::{AdapterInput, AdapterLoop, Frame, StalePolicy, blank_frame};
44pub use profile::{
45    DEVICE_PROFILE_KIND, DEVICE_PROFILE_NAMESPACE, DeviceProfile, DeviceProfileError,
46    DeviceProfileParts, DeviceSurfaceCapsExt, GlassesClass, derive_tier, device_profile_demo,
47    glasses_class, tier_preset,
48};
49pub use rate::{RateClass, RateError};
50pub use reaper::{
51    DeviceSampleStore, Evicted, PrivacyMode, ReaperDirective, RetentionReaper, StoreKey,
52    StoredSample, retention_reason,
53};
54pub use split::{Split, SplitRun, drive};
55pub use worn_caps::{
56    T_REX_3_PRO_48_CAPS_FIXTURE, WORN_CAPS_KIND, WORN_CAPS_NAMESPACE,
57    trex3pro_48_worn_caps_fixture, worn_caps_fixture, worn_caps_fixture_names,
58};
59
60/// Embedded cookbook recipe books shipped with this library.
61pub static RECIPES: sim_cookbook::EmbeddedDir =
62    include!(concat!(env!("OUT_DIR"), "/cookbook_recipes.rs"));
63
64#[cfg(test)]
65mod profile_tests;
66
67#[cfg(test)]
68mod split_tests;
69
70#[cfg(test)]
71mod timing_tests;
72
73#[cfg(test)]
74mod glance_tests;
75
76#[cfg(test)]
77mod glasses_route_tests;
78
79#[cfg(test)]
80mod consent_tests;