rsiot/components/cmp_esp_led/
config.rs1use esp_idf_svc::hal::{gpio::AnyIOPin, peripheral::Peripheral, rmt::RmtChannel};
2use serde::{Deserialize, Serialize};
3use ws2812_esp32_rmt_driver::RGB8;
4
5use crate::message::{Message, MsgDataBound};
6
7pub struct Config<TMsg, TPeripheral, TRmt>
9where
10 TMsg: MsgDataBound,
11 TPeripheral: RmtChannel,
12 TRmt: Peripheral<P = TPeripheral> + 'static,
13{
14 pub pin: AnyIOPin,
16
17 pub rmt_channel: TRmt,
19
20 pub fn_input: fn(&Message<TMsg>) -> Option<Vec<(u8, ConfigRgb)>>,
22}
23
24#[derive(Deserialize, Clone, Copy, Debug, Default, PartialEq, Serialize)]
26pub struct ConfigRgb
27where
28 Self: Sized,
29{
30 pub r: u8,
32 pub g: u8,
34 pub b: u8,
36}
37
38impl From<ConfigRgb> for RGB8 {
39 fn from(value: ConfigRgb) -> Self {
40 RGB8 {
41 r: value.r,
42 g: value.g,
43 b: value.b,
44 }
45 }
46}