sonos_api/services/rendering_control/mod.rs
1//! RenderingControl service for audio rendering operations and events
2//!
3//! This service handles audio rendering operations on individual Sonos speakers
4//! and related events (volume changes, mute state changes, etc.).
5//!
6//! # Operations
7//!
8//! | Operation | Description |
9//! |-----------|-------------|
10//! | `get_volume` / `set_volume` | Get/set volume level (0-100) |
11//! | `set_relative_volume` | Adjust volume relatively (-100 to +100) |
12//! | `get_mute` / `set_mute` | Get/set mute state |
13//! | `get_bass` / `set_bass` | Get/set bass level (-10 to +10) |
14//! | `get_treble` / `set_treble` | Get/set treble level (-10 to +10) |
15//! | `get_loudness` / `set_loudness` | Get/set loudness compensation |
16//!
17//! # Examples
18//! ```rust,ignore
19//! use sonos_api::services::rendering_control;
20//!
21//! // Volume
22//! let op = rendering_control::set_volume("Master".to_string(), 75).build()?;
23//! client.execute("192.168.1.100", op)?;
24//!
25//! // Mute
26//! let op = rendering_control::get_mute("Master".to_string()).build()?;
27//! let response = client.execute_enhanced("192.168.1.100", op)?;
28//! println!("Muted: {}", response.current_mute);
29//!
30//! // Bass / Treble
31//! let op = rendering_control::set_bass(5).build()?;
32//! client.execute("192.168.1.100", op)?;
33//! ```
34//!
35//! # Event Subscriptions
36//! ```rust,ignore
37//! let subscription = rendering_control::subscribe(&client, "192.168.1.100", "http://callback")?;
38//! ```
39//!
40//! # Event Handling
41//! ```rust,ignore
42//! use sonos_api::services::rendering_control::events::{RenderingControlEventParser, create_enriched_event};
43//! use sonos_api::events::EventSource;
44//!
45//! let parser = RenderingControlEventParser;
46//! let event_data = parser.parse_upnp_event(xml_content)?;
47//! let enriched = create_enriched_event(speaker_ip, event_source, event_data);
48//! ```
49
50pub mod events;
51pub mod operations;
52pub mod state;
53
54// Re-export operations for convenience
55pub use operations::*;
56
57// Re-export event types and parsers
58pub use events::{
59 create_enriched_event, create_enriched_event_with_registration_id, RenderingControlEvent,
60 RenderingControlEventParser,
61};
62pub use state::RenderingControlState;