rsiot/components/cmp_esp_led/
config.rsuse esp_idf_svc::hal::{gpio::AnyIOPin, peripheral::Peripheral, rmt::RmtChannel};
use serde::{Deserialize, Serialize};
use ws2812_esp32_rmt_driver::RGB8;
use crate::message::{Message, MsgDataBound};
pub struct Config<TMsg, TPeripheral, TRmt>
where
TMsg: MsgDataBound,
TPeripheral: RmtChannel,
TRmt: Peripheral<P = TPeripheral> + 'static,
{
pub pin: AnyIOPin,
pub rmt_channel: TRmt,
pub fn_input: fn(&Message<TMsg>) -> Option<Vec<(u8, ConfigRgb)>>,
}
#[derive(Deserialize, Clone, Copy, Debug, Default, PartialEq, Serialize)]
pub struct ConfigRgb
where
Self: Sized,
{
pub r: u8,
pub g: u8,
pub b: u8,
}
impl From<ConfigRgb> for RGB8 {
fn from(value: ConfigRgb) -> Self {
RGB8 {
r: value.r,
g: value.g,
b: value.b,
}
}
}