use clap::{Args, Parser, Subcommand}; use epd_waveshare::{epd7in3f::Epd7in3f, prelude::WaveshareDisplay}; pub mod imageproc; /// The main #[derive(Debug, Parser)] #[command(version, about)] struct Cli { #[command(subcommand)] command: Command, } #[derive(Debug, Subcommand)] enum Command { /// Load a single image Load, /// Start the HTTP sever Serve, } use linux_embedded_hal::spidev::SpidevOptions; use linux_embedded_hal::spidev::SpiModeFlags; use linux_embedded_hal::{CdevPin, Delay, SpidevBus, SpidevDevice}; use linux_embedded_hal::gpio_cdev::{Chip, LineRequestFlags}; fn main() -> anyhow::Result<()> { let cli = Cli::parse(); println!("CLI {cli:?}"); if let Command::Load = cli.command { println!("loading"); let mut spi = SpidevDevice::open("/dev/spidev0.0")?; let spi_options = SpidevOptions::new().bits_per_word(8).max_speed_hz(10_000_000).mode(SpiModeFlags::SPI_MODE_0).build(); spi.configure(&spi_options)?; let mut gpiochip = Chip::new("/dev/gpiochip0")?; let busy_pin = CdevPin::new(gpiochip.get_line(24)?.request( LineRequestFlags::INPUT, 0, "frametool", )?)?; let dc_pin = CdevPin::new(gpiochip.get_line(25)?.request( LineRequestFlags::OUTPUT, 0, "frametool", )?)?; let rst_pin = CdevPin::new(gpiochip.get_line(17)?.request( LineRequestFlags::OUTPUT, 0, "frametool", )?)?; let mut delay = Delay { }; let mut panel = Epd7in3f::new(&mut spi, busy_pin, dc_pin, rst_pin, &mut delay, None)?; panel.show_7block(&mut spi, &mut delay)?; } Ok(()) }