2024-06-29 16:55:37 +00:00
|
|
|
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(())
|
2024-06-24 13:29:59 +00:00
|
|
|
}
|