1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//! # SmartCast Api
//!
//! This library provides an API for connecting to and controlling Vizio SmartCast TVs and Speakers. The struct [`Device`] provides a client for interfacing with the SmartCast device.
//!
//! ## Get Started
//!
//! You can use [`discover_devices()`] to find SmartCast devices on your local network by issuing an [SSDP Query](https://en.wikipedia.org/wiki/Simple_Service_Discovery_Protocol)
//! or attempt to connect directly using [`Device::from_ip()`](Device::from_ip) or [`Device::from_uuid()`](Device::from_uuid).
//! ### Example
//! ```rust
//! use smartcast::Device;
//!
//! async fn example_main() -> Result<(), smartcast::Error> {
//!
//! let ssdp_devices = smartcast::discover_devices().await?;
//!
//! let dev_by_ssdp = ssdp_devices[0].clone();
//! let ip_addr = dev_by_ssdp.ip();
//! let uuid = dev_by_ssdp.uuid();
//!
//! let dev_by_ip = Device::from_ip(ip_addr).await?;
//! let dev_by_uuid = Device::from_uuid(uuid).await?;
//!
//! assert_eq!(dev_by_ssdp.name(), dev_by_ip.name());
//! assert_eq!(dev_by_ssdp.name(), dev_by_uuid.name());
//!
//! Ok(())
//! }
//! ```
//!
//! ## Task List
//!
//! - [x] Connect
//! - [x] Pairing
//! - [x] Get device state
//! - [x] Virtual remote commands
//! - [x] Readable settings
//! - [x] Writeable settings
//! - [x] Current App
//! - [ ] App launching
pub use ;
pub use ;
use Future;
/// Discover devices on network
///
/// This function uses SSDP to find devices connected to the local network.
/// It will return a [`Vec`] of [`Device`]s