split execute.rs
This commit is contained in:
parent
5777d7d47d
commit
24fcd7a6fe
20
src/brightness.rs
Normal file
20
src/brightness.rs
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
use servicepoint::{Brightness, Command, Connection};
|
||||||
|
use log::info;
|
||||||
|
use crate::cli::BrightnessCommand;
|
||||||
|
|
||||||
|
pub(crate) fn brightness(connection: &Connection, brightness_command: BrightnessCommand) {
|
||||||
|
match brightness_command {
|
||||||
|
BrightnessCommand::Max => brightness_set(connection, Brightness::MAX),
|
||||||
|
BrightnessCommand::Min => brightness_set(connection, Brightness::MIN),
|
||||||
|
BrightnessCommand::Set { brightness } => {
|
||||||
|
brightness_set(connection, Brightness::saturating_from(brightness))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn brightness_set(connection: &Connection, brightness: Brightness) {
|
||||||
|
connection
|
||||||
|
.send(Command::Brightness(brightness))
|
||||||
|
.expect("Failed to set brightness");
|
||||||
|
info!("set brightness to {brightness:?}");
|
||||||
|
}
|
|
@ -53,6 +53,7 @@ pub enum PixelCommand {
|
||||||
#[command(
|
#[command(
|
||||||
visible_alias = "r",
|
visible_alias = "r",
|
||||||
visible_alias = "reset",
|
visible_alias = "reset",
|
||||||
|
visible_alias = "clear",
|
||||||
about = "Reset all pixels to the default (off) state"
|
about = "Reset all pixels to the default (off) state"
|
||||||
)]
|
)]
|
||||||
Off,
|
Off,
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
use crate::cli::{BrightnessCommand, Mode, PixelCommand, StreamCommand};
|
|
||||||
use crate::stream_stdin::stream_stdin;
|
|
||||||
use crate::stream_window::stream_window;
|
|
||||||
use log::info;
|
|
||||||
use servicepoint::{BitVec, Brightness, Command, CompressionCode, Connection, PIXEL_COUNT};
|
|
||||||
|
|
||||||
pub fn execute_mode(mode: Mode, connection: Connection) {
|
|
||||||
match mode {
|
|
||||||
Mode::ResetEverything => {
|
|
||||||
brightness_reset(&connection);
|
|
||||||
pixels_reset(&connection);
|
|
||||||
}
|
|
||||||
Mode::Pixels { pixel_command } => pixels(&connection, pixel_command),
|
|
||||||
Mode::Brightness { brightness_command } => brightness(&connection, brightness_command),
|
|
||||||
Mode::Stream { stream_command } => match stream_command {
|
|
||||||
StreamCommand::Stdin { slow } => stream_stdin(connection, slow),
|
|
||||||
StreamCommand::Screen { options } => stream_window(&connection, options),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pixels(connection: &Connection, pixel_command: PixelCommand) {
|
|
||||||
match pixel_command {
|
|
||||||
PixelCommand::Off => pixels_reset(connection),
|
|
||||||
PixelCommand::Invert => pixels_invert(connection),
|
|
||||||
PixelCommand::On => pixels_on(connection),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pixels_on(connection: &Connection) {
|
|
||||||
let mask = BitVec::repeat(true, PIXEL_COUNT);
|
|
||||||
connection
|
|
||||||
.send(Command::BitmapLinear(0, mask, CompressionCode::Lzma))
|
|
||||||
.expect("could not send command")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pixels_invert(connection: &Connection) {
|
|
||||||
let mask = BitVec::repeat(true, PIXEL_COUNT);
|
|
||||||
connection
|
|
||||||
.send(Command::BitmapLinearXor(0, mask, CompressionCode::Lzma))
|
|
||||||
.expect("could not send command")
|
|
||||||
}
|
|
||||||
|
|
||||||
fn brightness(connection: &Connection, brightness_command: BrightnessCommand) {
|
|
||||||
match brightness_command {
|
|
||||||
BrightnessCommand::Max => brightness_reset(connection),
|
|
||||||
BrightnessCommand::Min => brightness_set(connection, Brightness::MIN),
|
|
||||||
BrightnessCommand::Set { brightness } => {
|
|
||||||
brightness_set(connection, Brightness::saturating_from(brightness))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn pixels_reset(connection: &Connection) {
|
|
||||||
connection
|
|
||||||
.send(Command::Clear)
|
|
||||||
.expect("failed to clear pixels");
|
|
||||||
info!("Reset pixels");
|
|
||||||
}
|
|
||||||
|
|
||||||
fn brightness_reset(connection: &Connection) {
|
|
||||||
connection
|
|
||||||
.send(Command::Brightness(Brightness::MAX))
|
|
||||||
.expect("Failed to reset brightness to maximum");
|
|
||||||
info!("Reset brightness");
|
|
||||||
}
|
|
||||||
|
|
||||||
fn brightness_set(connection: &Connection, brightness: Brightness) {
|
|
||||||
connection
|
|
||||||
.send(Command::Brightness(brightness))
|
|
||||||
.expect("Failed to set brightness");
|
|
||||||
info!("set brightness to {brightness:?}");
|
|
||||||
}
|
|
30
src/main.rs
30
src/main.rs
|
@ -1,10 +1,17 @@
|
||||||
use crate::cli::{Cli, Protocol};
|
use crate::{
|
||||||
|
brightness::{brightness, brightness_set},
|
||||||
|
cli::{Cli, Mode, Protocol, StreamCommand},
|
||||||
|
pixels::{pixels, pixels_off},
|
||||||
|
stream_stdin::stream_stdin,
|
||||||
|
stream_window::stream_window,
|
||||||
|
};
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
use servicepoint::Connection;
|
use servicepoint::{Brightness, Connection};
|
||||||
|
|
||||||
|
mod brightness;
|
||||||
mod cli;
|
mod cli;
|
||||||
mod execute;
|
mod pixels;
|
||||||
mod stream_stdin;
|
mod stream_stdin;
|
||||||
mod stream_window;
|
mod stream_window;
|
||||||
|
|
||||||
|
@ -16,7 +23,22 @@ fn main() {
|
||||||
let connection = make_connection(cli.destination, cli.transport);
|
let connection = make_connection(cli.destination, cli.transport);
|
||||||
debug!("connection established: {:#?}", connection);
|
debug!("connection established: {:#?}", connection);
|
||||||
|
|
||||||
execute::execute_mode(cli.command, connection);
|
execute_mode(cli.command, connection);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn execute_mode(mode: Mode, connection: Connection) {
|
||||||
|
match mode {
|
||||||
|
Mode::ResetEverything => {
|
||||||
|
brightness_set(&connection, Brightness::MAX);
|
||||||
|
pixels_off(&connection);
|
||||||
|
}
|
||||||
|
Mode::Pixels { pixel_command } => pixels(&connection, pixel_command),
|
||||||
|
Mode::Brightness { brightness_command } => brightness(&connection, brightness_command),
|
||||||
|
Mode::Stream { stream_command } => match stream_command {
|
||||||
|
StreamCommand::Stdin { slow } => stream_stdin(connection, slow),
|
||||||
|
StreamCommand::Screen { options } => stream_window(&connection, options),
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn make_connection(destination: String, transport: Protocol) -> Connection {
|
fn make_connection(destination: String, transport: Protocol) -> Connection {
|
||||||
|
|
34
src/pixels.rs
Normal file
34
src/pixels.rs
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
use servicepoint::{BitVec, Command, CompressionCode, Connection, PIXEL_COUNT};
|
||||||
|
use log::info;
|
||||||
|
use crate::cli::PixelCommand;
|
||||||
|
|
||||||
|
pub(crate) fn pixels(connection: &Connection, pixel_command: PixelCommand) {
|
||||||
|
match pixel_command {
|
||||||
|
PixelCommand::Off => pixels_off(connection),
|
||||||
|
PixelCommand::Invert => pixels_invert(connection),
|
||||||
|
PixelCommand::On => pixels_on(connection),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn pixels_on(connection: &Connection) {
|
||||||
|
let mask = BitVec::repeat(true, PIXEL_COUNT);
|
||||||
|
connection
|
||||||
|
.send(Command::BitmapLinear(0, mask, CompressionCode::Lzma))
|
||||||
|
.expect("could not send command");
|
||||||
|
info!("turned on all pixels")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn pixels_invert(connection: &Connection) {
|
||||||
|
let mask = BitVec::repeat(true, PIXEL_COUNT);
|
||||||
|
connection
|
||||||
|
.send(Command::BitmapLinearXor(0, mask, CompressionCode::Lzma))
|
||||||
|
.expect("could not send command");
|
||||||
|
info!("inverted all pixels");
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) fn pixels_off(connection: &Connection) {
|
||||||
|
connection
|
||||||
|
.send(Command::Clear)
|
||||||
|
.expect("failed to clear pixels");
|
||||||
|
info!("reset pixels");
|
||||||
|
}
|
Loading…
Reference in a new issue