feat: add get_client_key + cleanup

This commit is contained in:
alban 2023-07-09 22:44:15 +02:00
parent e4580e0e53
commit 6fa8846997
5 changed files with 22 additions and 19 deletions

View File

@ -9,7 +9,6 @@ use crate::device::dummy::DummyDevice;
use crate::errors::LJResult;
use crate::point::Point;
use serde::Serialize;
use crate::redis_ctrl::Line;
/*
self.protocol_version,

View File

@ -15,7 +15,6 @@ use crate::device::{Device, Status, PlaybackState};
use crate::errors::{LJError, LJResult};
use crate::point::{Color, Point};
use chrono::Utc;
use crate::redis_ctrl::Line;
pub struct HeliosDevice {
pub conf: HeliosConf,

View File

@ -13,7 +13,7 @@ mod worldstate;
use device::device_factory;
use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::Arc;
use redis_ctrl::{RedisCtrl, Order, Line};
use redis_ctrl::{RedisCtrl, Order};
use conf::Conf;
use errors::LJResult;
use point::{Point, Color};
@ -75,22 +75,15 @@ fn run_all() -> LJResult<()> {
rs.set_status(tracer.status())?;
let order = rs.get_order(config.laser_id)?;
// 0 : Draw Normal point list
// 2 : Draw BLACK point list
// 3 : Draw GRID point list
// 1 : Get the new EDH = reread redis key /EDH/lasernumber
// 4 : Resampler Change (longs and shorts lsteps)
// 5 : Client Key Change = reread redis key /clientkey
// 6 : Max Intensity Change = reread redis key /intensity
// 7 : kpps change = reread redis key /kpps
// 8 : color balance change = reread redis keys /red /green /blue
match order {
Order::Draw | Order::Black | Order::Grid => {
// 0 : Draw Normal point list
// 2 : Draw BLACK point list
// 3 : Draw GRID point list
world_state.draw_black = order == Order::Black;
world_state.draw_grid = order == Order::Grid;
let frame = get_next_frame(
&config,
&transformers,
@ -101,19 +94,27 @@ fn run_all() -> LJResult<()> {
tracer.draw(frame, world_state.kpps)?;
}
Order::Intensity => {
// 6 : Max Intensity Change = reread redis key /intensity
world_state.intensity = rs.get_int("intensity")?
.try_into()?;
}
Order::Edh => {
// 1 : Get the new EDH = reread redis key /EDH/lasernumber
world_state.edh = rs.get_edh()?;
}
Order::Kpps => {
// 7 : kpps change = reread redis key /kpps
world_state.kpps = rs.get_int("kpps")?;
}
// Order::ClientKey => rs.client_key(),
Order::ClientKey => {
world_state.client_key = rs.get_client_key()?;
},
// Order::ColorBalance => {},
_ => {
// 4 : Resampler Change (longs and shorts lsteps)
// 5 : Client Key Change = reread redis key /clientkey
// 8 : color balance change = reread redis keys /red /green /blue
// 9 : poweroff LJ world_state.intensity = rs.get_int("intensity")?
info!("Order: {:?}", order);
}
}
@ -151,12 +152,12 @@ fn get_next_frame(
// Handle the grid case
let mut line : Vec<Point>;
let mut line: Vec<Point>;
if world_state.draw_grid {
line = world_state.grid.clone();
} else {
let redis_line = rs.get_line(&format_key)?;
line = redis_line.into_iter()
line = redis_line.into_iter()
.map(|tpl| tpl.into())
.collect();
};

View File

@ -118,6 +118,11 @@ impl RedisCtrl {
Ok(edh)
}
pub fn get_client_key( &mut self ) -> LJResult<u8> {
let key : u8 = self.connection.get("/clientkey")?;
Ok(key as u8)
}
pub fn get_int(&mut self, key: &str ) -> LJResult<u32> {
// Get new Int
let fmt = format!("/{key}/{}", self.laser_id);

View File

@ -2,7 +2,6 @@ use crate::point::{Point, Color};
use nalgebra::base::{Matrix3, Matrix1x3};
use crate::errors::{LJError, LJResult};
use log::debug;
use crate::redis_ctrl::Line;
#[derive(Debug, Default)]
pub struct EDH {
@ -41,7 +40,7 @@ impl EDH {
pub struct WorldState {
pub edh: EDH,
pub resampler: Vec<f32>,
pub client_key: String,
pub client_key: u8,
pub intensity: u8,
pub kpps: u32,
pub color: Color,