pi-frame-server/src/main.rs

62 lines
1.7 KiB
Rust
Raw Normal View History

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
}