use std::time::Duration;
use crate::error::Result;
use crate::protocol::FrameType;
use crate::protocol::command::{imperfect_payload, move_ride_payload};
use super::Device;
pub(crate) fn ride_window_ms(window: Option<Duration>) -> u16 {
match window {
None => 0,
Some(d) => (d.as_millis().min(u16::MAX as u128) as u16).max(1),
}
}
impl Device {
pub fn allow_imperfect_clones(&self, allow: bool) -> Result<()> {
self.link.send(FrameType::Option, &imperfect_payload(allow))
}
pub fn set_movement_riding(&self, window: Option<Duration>) -> Result<()> {
self.link.send(
FrameType::Option,
&move_ride_payload(ride_window_ms(window)),
)
}
}