use crate::error::Result;
use crate::protocol::FrameType;
use crate::protocol::command::button_payload;
use crate::types::{Button, ButtonAction};
use super::Device;
impl Device {
pub fn button(&self, button: Button, action: ButtonAction) -> Result<()> {
self.link.desired().lock().apply(button, action);
self.link.send(
FrameType::Button,
&button_payload(button.as_id(), action.as_u8()),
)
}
pub fn press(&self, button: Button) -> Result<()> {
self.button(button, ButtonAction::Press)
}
pub fn soft_release(&self, button: Button) -> Result<()> {
self.button(button, ButtonAction::SoftRelease)
}
pub fn force_release(&self, button: Button) -> Result<()> {
self.button(button, ButtonAction::ForceRelease)
}
pub fn reset(&self) -> Result<()> {
self.link.desired().lock().clear();
self.link.send(FrameType::Reset, &[])
}
}