use crate::error::Result;
use crate::protocol::FrameType;
use crate::protocol::command::inject_payload;
use crate::protocol::opcode::INJ_MEDIA;
use crate::types::{Action, MediaKey};
use super::Device;
impl Device {
pub fn media(&self, key: MediaKey, action: Action) -> Result<()> {
self.link.desired().lock().apply_media(key, action);
self.link.send(
FrameType::Inject,
&inject_payload(INJ_MEDIA, key.usage(), action.as_u8()),
)
}
pub fn media_down(&self, key: MediaKey) -> Result<()> {
self.media(key, Action::Press)
}
pub fn media_up(&self, key: MediaKey) -> Result<()> {
self.media(key, Action::SoftRelease)
}
pub fn media_force_release(&self, key: MediaKey) -> Result<()> {
self.media(key, Action::ForceRelease)
}
}