servicepoint-binding-uniffi/examples/wiping_clear/src/main.rs

42 lines
1.3 KiB
Rust
Raw Normal View History

use std::thread;
use std::time::Duration;
use clap::Parser;
2024-05-11 21:14:20 +02:00
use servicepoint2::{BitVec, CompressionCode, Connection, PIXEL_HEIGHT, PIXEL_WIDTH, PixelGrid};
use servicepoint2::Command::BitmapLinearAnd;
#[derive(Parser, Debug)]
struct Cli {
#[arg(short, long, default_value = "localhost:2342")]
destination: String,
#[arg(short, long = "duration-ms", default_value_t = 5000)]
time: u64,
}
fn main() {
env_logger::builder()
2024-05-11 21:14:20 +02:00
.filter_level(log::LevelFilter::Debug)
.init();
let cli = Cli::parse();
let connection = Connection::open(cli.destination).unwrap();
let sleep_duration = Duration::from_millis(cli.time / PIXEL_WIDTH as u64);
let mut enabled_pixels = PixelGrid::new(PIXEL_WIDTH as usize, PIXEL_HEIGHT as usize);
enabled_pixels.fill(true);
for x_offset in 0..PIXEL_WIDTH as usize {
for y in 0..PIXEL_HEIGHT as usize {
enabled_pixels.set(x_offset % PIXEL_WIDTH as usize, y, false);
}
// this works because the pixel grid has max size
let pixel_data: Vec<u8> = enabled_pixels.clone().into();
let bit_vec = BitVec::load(&*pixel_data);
2024-05-11 21:14:20 +02:00
connection.send(BitmapLinearAnd(0, bit_vec, CompressionCode::Gz)).unwrap();
thread::sleep(sleep_duration);
}
}