basic logging

hotlpug
4yn 2022-01-30 17:22:55 +08:00
parent 06707302d1
commit 8570091df8
7 changed files with 98 additions and 24 deletions

41
src-tauri/Cargo.lock generated
View File

@ -126,6 +126,17 @@ dependencies = [
"wildmatch",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.0.1"
@ -788,6 +799,19 @@ dependencies = [
"syn",
]
[[package]]
name = "env_logger"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
dependencies = [
"atty",
"humantime",
"log",
"regex",
"termcolor",
]
[[package]]
name = "fastrand"
version = "1.7.0"
@ -1334,6 +1358,12 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eee9694f83d9b7c09682fdb32213682939507884e5bcf227be9aff5d644b90dc"
[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
name = "ico"
version = "0.1.0"
@ -2764,6 +2794,8 @@ name = "slidershim"
version = "0.1.0"
dependencies = [
"directories",
"env_logger",
"log",
"palette",
"rusb",
"serde",
@ -3210,6 +3242,15 @@ dependencies = [
"utf-8",
]
[[package]]
name = "termcolor"
version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
dependencies = [
"winapi-util",
]
[[package]]
name = "thin-slice"
version = "0.1.1"

View File

@ -22,6 +22,8 @@ rusb = "0.9.0"
palette = "0.6.0"
winapi = "0.3.9"
directories = "4.0.1"
log = "0.4.14"
env_logger = "0.9.0"
[features]
default = [ "custom-protocol" ]

View File

@ -5,6 +5,10 @@ use std::io;
use slidershim::slider_io::{Config, Manager};
fn main() {
env_logger::Builder::new()
.filter_level(log::LevelFilter::Debug)
.init();
// let config = Config::from_str(
// r#"{
// "deviceMode": "yuancon",
@ -17,7 +21,7 @@ fn main() {
let config = Config::from_str(
r#"{
"deviceMode": "yuancon",
"deviceMode": "tasoller-two",
"outputMode": "kb-32-tasoller",
"keyboardSensitivity": 50,
"ledMode": "reactive-8",

View File

@ -9,6 +9,9 @@ mod slider_io;
use std::sync::{Arc, Mutex};
use env_logger;
use log::info;
use tauri::{
AppHandle, CustomMenuItem, Event, Manager, Runtime, SystemTray, SystemTrayEvent, SystemTrayMenu,
};
@ -26,9 +29,10 @@ fn quit_app() {
}
fn main() {
env_logger::init();
let config = Arc::new(Mutex::new(Some(slider_io::Config::default())));
{
println!("Saving");
config.lock().unwrap().as_ref().unwrap().save();
}
@ -67,7 +71,7 @@ fn main() {
let config_clone = Arc::clone(&config);
app.listen_global("heartbeat", move |e| {
let config_handle = config_clone.lock().unwrap();
println!("Heartbeat {}", config_handle.as_ref().unwrap().raw.as_str());
info!("Heartbeat received");
app_handle
.emit_all(
"showConfig",
@ -79,7 +83,7 @@ fn main() {
let config_clone = Arc::clone(&config);
app.listen_global("setConfig", move |event| {
let payload = event.payload().unwrap();
println!("Setting config to {}", payload);
info!("Config applied {}", payload);
if let Some(new_config) = slider_io::Config::from_str(payload) {
let mut config_handle = config_clone.lock().unwrap();
config_handle.replace(new_config);

View File

@ -1,6 +1,8 @@
use directories::ProjectDirs;
use std::{convert::TryFrom, fs, path::PathBuf};
use log::info;
use directories::ProjectDirs;
use serde_json::Value;
#[derive(Debug, Clone)]
@ -148,9 +150,8 @@ impl Config {
if !config_path.exists() {
return None;
}
println!("Found saved");
info!("Config file found at {:?}", config_path);
let mut saved_data = fs::read_to_string(config_path.as_path()).ok()?;
println!("Loaded saved {}", saved_data);
return Self::from_str(saved_data.as_str());
}
@ -161,10 +162,12 @@ impl Config {
}
pub fn save(&self) -> Option<()> {
info!("Config saving...");
let config_path = Self::get_saved_path()?;
println!("Saving to {:?}", config_path);
info!("Config saving to {:?}", config_path);
fs::write(config_path.as_path(), self.raw.as_str()).unwrap();
info!("Config saved");
Some(())
}
}

View File

@ -1,9 +1,12 @@
use std::{
error,
ops::{Deref, DerefMut},
thread,
time::Duration,
};
use log::{error, info};
use rusb::{self, DeviceHandle, GlobalContext};
use crate::slider_io::{
@ -182,11 +185,21 @@ impl HidDeviceJob {
}
fn setup_impl(&mut self) -> Result<(), Box<dyn error::Error>> {
let mut handle = rusb::open_device_with_vid_pid(self.vid, self.pid).unwrap();
info!("Device finding vid {} pid {}", self.vid, self.pid);
let handle = rusb::open_device_with_vid_pid(self.vid, self.pid);
if handle.is_none() {
error!("Could not find device");
}
let mut handle = handle.unwrap();
info!("Device found {:?}", handle);
if handle.kernel_driver_active(0).unwrap_or(false) {
info!("Device detaching kernel driver");
handle.detach_kernel_driver(0)?;
}
info!("Device setting configuration");
handle.set_active_configuration(1)?;
info!("Device claiming interface");
handle.claim_interface(0)?;
self.handle = Some(handle);
Ok(())
@ -217,24 +230,29 @@ impl Job for HidDeviceJob {
// Led loop
{
let mut led_state_handle = self.state.led_state.lock().unwrap();
if led_state_handle.dirty {
(self.led_callback)(&mut self.led_buf, led_state_handle.deref());
led_state_handle.dirty = false;
if self.led_buf.len != 0 {
let res = (match self.led_write_type {
WriteType::Bulk => handle.write_bulk(self.led_endpoint, &self.led_buf.data, TIMEOUT),
WriteType::Interrupt => {
handle.write_interrupt(self.led_endpoint, &self.led_buf.data, TIMEOUT)
}
})
.unwrap_or(0);
if res == self.led_buf.len + 1 {
self.led_buf.len = 0;
{
let mut led_state_handle = self.state.led_state.lock().unwrap();
if led_state_handle.dirty {
(self.led_callback)(&mut self.led_buf, led_state_handle.deref());
led_state_handle.dirty = false;
}
}
if self.led_buf.len != 0 {
let res = (match self.led_write_type {
WriteType::Bulk => handle.write_bulk(self.led_endpoint, &self.led_buf.data, TIMEOUT),
WriteType::Interrupt => {
handle.write_interrupt(self.led_endpoint, &self.led_buf.data, TIMEOUT)
}
})
.unwrap_or(0);
if res == self.led_buf.len + 1 {
self.led_buf.len = 0;
}
}
}
// thread::sleep(Duration::from_millis(10));
}
fn teardown(&mut self) {

View File

@ -1,3 +1,5 @@
use log::info;
use crate::slider_io::{
config::Config, controller_state::FullState, device::HidDeviceJob, led::LedJob,
output::KeyboardOutputJob, worker::Worker,
@ -18,7 +20,7 @@ impl Manager {
let output_worker = Worker::new(KeyboardOutputJob::new(&state, &config.output_mode));
let led_worker = Worker::new(LedJob::new(&state, &config.led_mode));
println!("Starting manager with config: {:?}", config);
info!("Starting manager with config: {:?}", config);
Self {
state,