split execute.rs
This commit is contained in:
		
							parent
							
								
									304317a86e
								
							
						
					
					
						commit
						2dcf092100
					
				
					 5 changed files with 81 additions and 77 deletions
				
			
		
							
								
								
									
										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(
 | ||||
|         visible_alias = "r", | ||||
|         visible_alias = "reset", | ||||
|         visible_alias = "clear", | ||||
|         about = "Reset all pixels to the default (off) state" | ||||
|     )] | ||||
|     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 log::debug; | ||||
| use servicepoint::Connection; | ||||
| use servicepoint::{Brightness, Connection}; | ||||
| 
 | ||||
| mod brightness; | ||||
| mod cli; | ||||
| mod execute; | ||||
| mod pixels; | ||||
| mod stream_stdin; | ||||
| mod stream_window; | ||||
| 
 | ||||
|  | @ -16,7 +23,22 @@ fn main() { | |||
|     let connection = make_connection(cli.destination, cli.transport); | ||||
|     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 { | ||||
|  |  | |||
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Vinzenz Schroeter
						Vinzenz Schroeter