Skip to main content

sim_lib_stream_host/
lib.rs

1#![forbid(unsafe_code)]
2#![deny(missing_docs)]
3//! Host-device stream backend substrate.
4//!
5//! The crate currently implements the selected RTP-MIDI subset without opening
6//! sockets or platform devices during normal validation. Host callbacks only
7//! receive a cloneable bounded queue handle and may enqueue packets through
8//! non-blocking calls. Device smoke tests are ignored by default; run them
9//! manually only when a matching external peer or platform device is available.
10
11mod audio_provider;
12mod backend;
13mod capability;
14mod cassette;
15mod catalog;
16mod config;
17mod config_probe;
18pub mod cookbook;
19mod device;
20mod eval_site;
21mod fake;
22mod glasses;
23mod glasses_placement;
24mod inventory;
25mod midi_live_eval_site;
26mod midi_provider;
27mod model;
28mod placement;
29mod provider;
30mod queue;
31mod registry;
32mod ring;
33mod router;
34#[cfg(feature = "rtp-midi")]
35mod rtp_midi;
36mod site;
37mod store_evict;
38mod watch;
39
40pub use audio_provider::ModeledAudioProvider;
41pub use backend::{HostBackend, HostOpenStream, HostStreamDriver};
42pub use capability::{DeviceCapability, HostBackendCapability, missing_capability_card_expr};
43pub use cassette::{HostCallbackCassette, HostCallbackReplayReport};
44pub use catalog::{DeviceCatalog, audio_device_export_symbol, audio_site_export_symbol};
45pub use config::{
46    HostClockInfo, HostLatencyInfo, HostReconnectPolicy, HostStreamConfig, HostStreamConfigRequest,
47};
48pub use config_probe::{
49    HostStreamConfigProbe, hardware_inventory_probe_capability_symbol,
50    host_stream_config_probe_symbol, stream_host_config_lib_symbol,
51};
52pub use cookbook::fake_backend_demo;
53pub use device::{
54    DeviceError, DeviceProfile, DeviceProvider, DeviceResult, DeviceSample, DeviceSession,
55    StubProvider, StubSession, device_sample_kind_symbol, poll_device_sample,
56};
57pub use eval_site::{DeviceProvider as CatalogDeviceProvider, StreamEvalSite};
58pub use fake::{FakeBackend, fake_backend_symbol};
59pub use glasses::{
60    CAP_GLASSES_CAMERA, CAP_GLASSES_HAND, CAP_GLASSES_MIC, CAP_GLASSES_POSE,
61    CAP_GLASSES_VENDOR_REPORT, CAP_GLASSES_WORLD_ANCHOR, GlassesCapability, glasses_camera_grant,
62    glasses_capability_for_sample, glasses_hand_grant, glasses_mic_grant, glasses_pose_grant,
63    glasses_retention_windows, glasses_vendor_report_grant, glasses_world_anchor_grant,
64    require_glasses_consent, require_glasses_sample_ingest, store_glasses_frame,
65    sweep_glasses_retention,
66};
67pub use glasses_placement::{
68    GlassesAdapterKind, GlassesPlacementError, GlassesPlacementRequest, ResolvedGlassesPlacement,
69    resolve_glasses_placement,
70};
71pub use inventory::{HostDeviceInventory, HostPortSpec};
72pub use midi_live_eval_site::MidiLiveEvalSite;
73pub use midi_provider::ModeledMidiProvider;
74pub use model::{
75    HostBackendInfo, HostDeviceSpec, HostDirection, HostOpenPlan, stream_host_capability,
76    stream_host_device_read_effect_kind, stream_host_device_write_effect_kind,
77};
78pub use placement::{
79    AudioDeviceCard, AudioPlacementRequest, AudioSiteKey, DeviceDirection, DeviceKind,
80    DevicePlacement, DeviceRecord, LanPlacementMode, LanPlacementReport, LanPlacementRequest,
81    Placement, PlacementError, lan_bar_delay_mode_symbol,
82    lan_experimental_remote_sample_capability, lan_jitter_buffered_mode_symbol,
83    lan_peer_site_symbol, lan_pinned_sample_experimental_diagnostic,
84    lan_pinned_sample_refusal_diagnostic,
85};
86pub use provider::{
87    AUDIO_PROVIDER_ABI_VERSION, AUDIO_PROVIDER_ENTRY_V1, AudioProviderEntry, AudioProviderHost,
88    AudioProviderProofEntries, AudioProviderRegistrar, RouterAudioProviderRegistrar,
89    native_audio_provider_capability,
90};
91pub use queue::HostCallbackQueue;
92pub use registry::HostBackendRegistry;
93pub use ring::{ProcessRingPush, ProcessRingSnapshot, ProcessSharedRing};
94pub use router::{AudioRouter, RegisteredAudioSite};
95#[cfg(feature = "rtp-midi")]
96pub use rtp_midi::{RtpMidiBackend, RtpMidiPort, rtp_midi_backend_symbol};
97pub use site::{AudioSite, DeviceSite, DeviceSiteLocality, ModeledAudioSite};
98pub use store_evict::{
99    BoundedContentStore, ContentFrame, RetentionWindow, StoreEvicted, StoreKey, retention_reason,
100    size_bound_reason,
101};
102pub use watch::{
103    CAP_WATCH_HEALTH, CAP_WATCH_LOCATION, CAP_WATCH_MIC, CAP_WATCH_VENDOR_REPORT, WatchCapability,
104    require_watch_consent, require_watch_worn_ingest, watch_capability_for_worn_event,
105    watch_health_grant, watch_location_grant, watch_mic_grant, watch_vendor_report_grant,
106};
107
108#[cfg(test)]
109mod catalog_tests;
110#[cfg(test)]
111mod config_probe_tests;
112#[cfg(test)]
113mod device_tests;
114#[cfg(test)]
115mod glasses_placement_tests;
116#[cfg(test)]
117mod glasses_tests;
118#[cfg(test)]
119mod placement_tests;
120#[cfg(test)]
121mod provider_tests;
122#[cfg(test)]
123mod ring_tests;
124#[cfg(test)]
125mod tests;
126#[cfg(test)]
127mod watch_tests;