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 music_effects;
29mod placement;
30mod provider;
31mod queue;
32mod registry;
33mod ring;
34mod router;
35#[cfg(feature = "rtp-midi")]
36mod rtp_midi;
37mod site;
38mod store_evict;
39mod watch;
40
41pub use audio_provider::ModeledAudioProvider;
42pub use backend::{HostBackend, HostOpenStream, HostStreamDriver};
43pub use capability::{DeviceCapability, HostBackendCapability, missing_capability_card_expr};
44pub use cassette::{HostCallbackCassette, HostCallbackReplayReport};
45pub use catalog::{DeviceCatalog, audio_device_export_symbol, audio_site_export_symbol};
46pub use config::{
47    HostClockInfo, HostLatencyInfo, HostReconnectPolicy, HostStreamConfig, HostStreamConfigRequest,
48};
49pub use config_probe::{
50    HostStreamConfigProbe, hardware_inventory_probe_capability_symbol,
51    host_stream_config_probe_symbol, stream_host_config_lib_symbol,
52};
53pub use cookbook::fake_backend_demo;
54pub use device::{
55    DeviceError, DeviceProfile, DeviceProvider, DeviceResult, DeviceSample, EffectBounds,
56    EffectDescriptor, EffectReceipt, EffectRegistry, EffectRequest, EffectSession,
57    FakeEffectSession, IdempotencePolicy, ObservationCassette, ObservationSession, OpenedSession,
58    ProviderManifest, ProviderTransport, ReversalPolicy, StubProvider, StubSession,
59    device_sample_kind_symbol, poll_device_sample, standard_effect_descriptor,
60};
61pub use eval_site::{DeviceProvider as CatalogDeviceProvider, StreamEvalSite};
62pub use fake::{FakeBackend, fake_backend_symbol};
63pub use glasses::{
64    CAP_GLASSES_CAMERA, CAP_GLASSES_HAND, CAP_GLASSES_MIC, CAP_GLASSES_POSE,
65    CAP_GLASSES_VENDOR_REPORT, CAP_GLASSES_WORLD_ANCHOR, GlassesCapability, glasses_camera_grant,
66    glasses_capability_for_sample, glasses_hand_grant, glasses_mic_grant, glasses_pose_grant,
67    glasses_retention_windows, glasses_vendor_report_grant, glasses_world_anchor_grant,
68    require_glasses_consent, require_glasses_sample_ingest, store_glasses_frame,
69    sweep_glasses_retention,
70};
71pub use glasses_placement::{
72    GlassesAdapterKind, GlassesPlacementError, GlassesPlacementRequest, ResolvedGlassesPlacement,
73    resolve_glasses_placement,
74};
75pub use inventory::{HostDeviceInventory, HostPortSpec};
76pub use midi_live_eval_site::MidiLiveEvalSite;
77pub use midi_provider::ModeledMidiProvider;
78pub use model::{
79    HostBackendInfo, HostDeviceSpec, HostDirection, HostOpenPlan, stream_host_capability,
80    stream_host_device_read_effect_kind, stream_host_device_write_effect_kind,
81};
82pub use music_effects::{MusicEffect, music_effect_registry};
83pub use placement::{
84    AudioDeviceCard, AudioPlacementRequest, AudioSiteKey, DeviceDirection, DeviceKind,
85    DevicePlacement, DeviceRecord, LanPlacementMode, LanPlacementReport, LanPlacementRequest,
86    Placement, PlacementError, lan_bar_delay_mode_symbol,
87    lan_experimental_remote_sample_capability, lan_jitter_buffered_mode_symbol,
88    lan_peer_site_symbol, lan_pinned_sample_experimental_diagnostic,
89    lan_pinned_sample_refusal_diagnostic,
90};
91pub use provider::{
92    AUDIO_PROVIDER_ABI_VERSION, AUDIO_PROVIDER_ENTRY_V1, AudioProviderEntry, AudioProviderHost,
93    AudioProviderProofEntries, AudioProviderRegistrar, RouterAudioProviderRegistrar,
94    native_audio_provider_capability,
95};
96pub use queue::HostCallbackQueue;
97pub use registry::HostBackendRegistry;
98pub use ring::{ProcessRingPush, ProcessRingSnapshot, ProcessSharedRing};
99pub use router::{AudioRouter, RegisteredAudioSite};
100#[cfg(feature = "rtp-midi")]
101pub use rtp_midi::{RtpMidiBackend, RtpMidiPort, rtp_midi_backend_symbol};
102pub use site::{AudioSite, DeviceSite, DeviceSiteLocality, ModeledAudioSite};
103pub use store_evict::{
104    BoundedContentStore, ContentFrame, RetentionWindow, StoreEvicted, StoreKey, retention_reason,
105    size_bound_reason,
106};
107pub use watch::{
108    CAP_WATCH_HEALTH, CAP_WATCH_LOCATION, CAP_WATCH_MIC, CAP_WATCH_VENDOR_REPORT, WatchCapability,
109    require_watch_consent, require_watch_worn_ingest, watch_capability_for_worn_event,
110    watch_health_grant, watch_location_grant, watch_mic_grant, watch_vendor_report_grant,
111};
112
113#[cfg(test)]
114mod catalog_tests;
115#[cfg(test)]
116mod config_probe_tests;
117#[cfg(test)]
118mod device_tests;
119#[cfg(test)]
120mod glasses_placement_tests;
121#[cfg(test)]
122mod glasses_tests;
123#[cfg(test)]
124mod placement_tests;
125#[cfg(test)]
126mod provider_tests;
127#[cfg(test)]
128mod ring_tests;
129#[cfg(test)]
130mod tests;
131#[cfg(test)]
132mod watch_tests;