use serde::{Deserialize, Serialize};
use crate::error::Error;
use crate::responses::{
DecodableResultExt, DefaultBrightnessState, DefaultPowerType, TapoResponseExt, decode_value,
};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "python", pyo3::prelude::pyclass(from_py_object, get_all))]
#[allow(missing_docs)]
pub struct DeviceInfoLightResult {
pub avatar: String,
pub device_id: String,
pub fw_id: String,
pub fw_ver: String,
pub has_set_location_info: bool,
pub hw_id: String,
pub hw_ver: String,
pub ip: String,
pub lang: String,
pub latitude: Option<i64>,
pub longitude: Option<i64>,
pub mac: String,
pub model: String,
pub oem_id: String,
pub region: Option<String>,
pub rssi: i16,
pub signal_level: u8,
pub specs: String,
pub ssid: String,
pub time_diff: Option<i64>,
pub r#type: String,
pub brightness: u8,
pub default_states: DefaultLightState,
pub device_on: bool,
pub nickname: String,
pub on_time: Option<u64>,
pub overheated: bool,
}
#[cfg(feature = "python")]
crate::impl_to_dict!(DeviceInfoLightResult);
impl TapoResponseExt for DeviceInfoLightResult {}
impl DecodableResultExt for DeviceInfoLightResult {
fn decode(mut self) -> Result<Self, Error> {
self.ssid = decode_value(&self.ssid)?;
self.nickname = decode_value(&self.nickname)?;
Ok(self)
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "python", pyo3::prelude::pyclass(from_py_object, get_all))]
#[allow(missing_docs)]
pub struct DefaultLightState {
pub brightness: DefaultBrightnessState,
pub re_power_type: Option<DefaultPowerType>,
}
#[cfg(feature = "python")]
crate::impl_to_dict!(DefaultLightState);