adafruit_seesaw/devices/
neoslider.rs

1use super::SeesawDeviceInit;
2use crate::{
3    modules::{
4        adc::AdcModule, gpio::GpioModule, status::StatusModule,
5        HardwareId,
6    },
7    seesaw_device, Driver, SeesawError,
8};
9#[cfg(feature = "module_neopixel")]
10use crate::modules::neopixel::NeopixelModule;
11
12seesaw_device!(
13  /// NeoSlider
14  name: NeoSlider,
15  hardware_id: HardwareId::ATTINY817,
16  product_id: 5295,
17  default_addr: 0x30
18);
19
20pub type NeoSliderColor = rgb::Grb<u8>;
21
22impl<D: Driver> AdcModule<D> for NeoSlider<D> {}
23impl<D: Driver> GpioModule<D> for NeoSlider<D> {}
24#[cfg(feature = "module_neopixel")]
25impl<D: Driver> NeopixelModule<D> for NeoSlider<D> {
26    type Color = NeoSliderColor;
27
28    const N_LEDS: usize = 4;
29    const PIN: u8 = 14;
30}
31
32impl<D: Driver> SeesawDeviceInit<D> for NeoSlider<D> {
33    fn init(mut self) -> Result<Self, SeesawError<D::Error>> {
34        self.reset_and_verify_seesaw()?;
35        #[cfg(feature = "module_neopixel")]
36        self.enable_neopixel()?;
37        Ok(self)
38    }
39}
40
41impl<D: Driver> NeoSlider<D> {
42    pub fn slider_value(&mut self) -> Result<u16, SeesawError<D::Error>> {
43        self.analog_read(18)
44    }
45}