use std::fmt::Display;
use std::ops::RangeInclusive;
use crate::tapo_vendor::error::Error;
pub const BRIGHTNESS_RANGE: RangeInclusive<u8> = 1..=100;
pub const HUE_RANGE: RangeInclusive<u16> = 0..=360;
pub const SATURATION_RANGE: RangeInclusive<u8> = 1..=100;
pub const COLOR_TEMPERATURE_RANGE: RangeInclusive<u16> = 2500..=6500;
pub(crate) fn check_range<T: PartialOrd + Display>(
field: &str,
range: &RangeInclusive<T>,
value: T,
) -> Result<(), Error> {
if range.contains(&value) {
return Ok(());
}
Err(Error::Validation {
field: field.to_string(),
message: format!("Must be between {} and {}", range.start(), range.end()),
})
}