use std::slice::{from_raw_parts, from_raw_parts_mut};
use super::super::bindings::ws2811_channel_t;
use super::super::util::RawColor;
#[derive(Debug)]
pub struct Channel<'a> {
c_struct: &'a mut ws2811_channel_t,
}
impl<'a> Channel<'a> {
pub fn new(c_struct: &'a mut ws2811_channel_t) -> Channel<'a> {
Channel { c_struct }
}
pub fn leds(&self) -> &[RawColor] {
unsafe {
return from_raw_parts(
self.c_struct.leds as *const RawColor,
self.c_struct.count as usize,
);
}
}
pub fn leds_mut(&mut self) -> &mut [RawColor] {
unsafe {
return from_raw_parts_mut(
self.c_struct.leds as *mut RawColor,
self.c_struct.count as usize,
);
}
}
}