use rosc::OscType;
use crate::osc_sender::OscSender;
use crate::osc_sender::OscSenderError;
pub struct Channel<'a> {
pub osc_sender: &'a OscSender,
pub channel: u32,
}
impl Channel<'_> {
pub fn at(&self, value: u8) -> Result<(), OscSenderError> {
self.osc_sender.send_osc(
format!("/eos/chan/{}", self.channel),
vec![OscType::Int(value.into())],
)
}
pub fn param(&self, param: &str, value: i32) -> Result<(), OscSenderError> {
self.osc_sender.send_osc(
format!("/eos/chan/{}/param/{param}", self.channel),
vec![OscType::Int(value)],
)
}
pub fn pan(&self, degrees: i32) -> Result<(), OscSenderError> {
self.param("pan", degrees)
}
pub fn tilt(&self, degrees: i32) -> Result<(), OscSenderError> {
self.param("tilt", degrees)
}
pub fn remdim(&self) -> Result<(), OscSenderError> {
self.osc_sender
.send_osc(format!("/eos/chan/{}/remdim", self.channel), vec![])
}
}