refactor: add debug feature flag and cross-platform serial port filtering
This commit is contained in:
@@ -16,6 +16,7 @@ crate-type = ["staticlib", "cdylib", "rlib"]
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["multi-dim"]
|
default = ["multi-dim"]
|
||||||
|
debug = []
|
||||||
devkit = ["dep:tonic", "dep:prost", "dep:prost-types", "dep:async-stream", "dep:dirs"]
|
devkit = ["dep:tonic", "dep:prost", "dep:prost-types", "dep:async-stream", "dep:dirs"]
|
||||||
multi-dim = ["dep:ndarray"]
|
multi-dim = ["dep:ndarray"]
|
||||||
|
|
||||||
|
|||||||
@@ -122,8 +122,7 @@ pub fn serial_enum() -> Result<Vec<String>, SerialError> {
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|p| {
|
.filter_map(|p| {
|
||||||
let name = p.port_name;
|
let name = p.port_name;
|
||||||
#[cfg(unix)]
|
if !should_include_serial_port(&name) {
|
||||||
if !name.contains("USB") {
|
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
Some(name)
|
Some(name)
|
||||||
@@ -133,6 +132,21 @@ pub fn serial_enum() -> Result<Vec<String>, SerialError> {
|
|||||||
Ok(ports)
|
Ok(ports)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(target_os = "macos")]
|
||||||
|
fn should_include_serial_port(name: &str) -> bool {
|
||||||
|
name.to_ascii_lowercase().contains("usb")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(all(unix, not(target_os = "macos")))]
|
||||||
|
fn should_include_serial_port(name: &str) -> bool {
|
||||||
|
name.contains("USB")
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(unix))]
|
||||||
|
fn should_include_serial_port(_name: &str) -> bool {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
#[tauri::command]
|
#[tauri::command]
|
||||||
pub async fn serial_connect(
|
pub async fn serial_connect(
|
||||||
app: AppHandle,
|
app: AppHandle,
|
||||||
|
|||||||
@@ -327,12 +327,15 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#[cfg(feature = "devkit")]
|
// #[cfg(feature = "devkit")]
|
||||||
{
|
// {
|
||||||
let summary = vals.iter().copied().sum::<i32>();
|
// let summary = vals.iter().copied().sum::<i32>();
|
||||||
let force = raw_to_g1(summary as u32);
|
// #[cfg(feature = "debug")]
|
||||||
push_devkit_frame(&app, vals.as_slice(), frame.dts_ms(), force);
|
// let force = raw_to_g1(summary as u32);
|
||||||
}
|
// #[cfg(not(feature = "debug"))]
|
||||||
|
// let force = summary as f64;
|
||||||
|
// push_devkit_frame(&app, vals.as_slice(), frame.dts_ms(), force);
|
||||||
|
// }
|
||||||
|
|
||||||
pending_sub_frame = Some(PendingSubFrame {
|
pending_sub_frame = Some(PendingSubFrame {
|
||||||
frame: frame.clone(),
|
frame: frame.clone(),
|
||||||
@@ -355,6 +358,11 @@ fn build_display_values(
|
|||||||
spatial_force: Option<HudSpatialForce>,
|
spatial_force: Option<HudSpatialForce>,
|
||||||
) -> Option<Vec<i32>> {
|
) -> Option<Vec<i32>> {
|
||||||
let summary = values.iter().copied().sum::<i32>();
|
let summary = values.iter().copied().sum::<i32>();
|
||||||
|
#[cfg(feature = "debug")]
|
||||||
|
{
|
||||||
|
let g1 = raw_to_g1(summary as u32);
|
||||||
|
println!("raw_to_g1 map: {g1}");
|
||||||
|
}
|
||||||
chart_state.record_spatial_force(spatial_force);
|
chart_state.record_spatial_force(spatial_force);
|
||||||
|
|
||||||
match ad_to_x(summary as f64) {
|
match ad_to_x(summary as f64) {
|
||||||
@@ -380,11 +388,12 @@ fn build_display_values(
|
|||||||
|
|
||||||
const MIN_DISPLAY_FORCE: f64 = 0.1;
|
const MIN_DISPLAY_FORCE: f64 = 0.1;
|
||||||
const MAX_DISPLAY_FORCE: f64 = 25.6;
|
const MAX_DISPLAY_FORCE: f64 = 25.6;
|
||||||
|
const QUADRATIC_A: f64 = -375.2;
|
||||||
|
const QUADRATIC_B: f64 = 25880.0;
|
||||||
|
const QUADRATIC_C: f64 = 52150.0;
|
||||||
|
|
||||||
fn ad_to_x(ad: f64) -> Option<f64> {
|
fn ad_to_x(ad: f64) -> Option<f64> {
|
||||||
const CUBIC_LIMIT: f64 = 6.57;
|
const CUBIC_LIMIT: f64 = 6.57;
|
||||||
const QUADRATIC_A: f64 = -377.8;
|
|
||||||
const QUADRATIC_B: f64 = 26040.0;
|
|
||||||
const EPSILON: f64 = 0.000_001;
|
const EPSILON: f64 = 0.000_001;
|
||||||
|
|
||||||
let cubic_min = ad_from_cubic_x(0.0);
|
let cubic_min = ad_from_cubic_x(0.0);
|
||||||
@@ -429,7 +438,7 @@ fn ad_from_cubic_x(x: f64) -> f64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn ad_from_quadratic_x(x: f64) -> f64 {
|
fn ad_from_quadratic_x(x: f64) -> f64 {
|
||||||
-377.8 * x.powi(2) + 26040.0 * x + 51120.0
|
QUADRATIC_A * x.powi(2) + QUADRATIC_B * x + QUADRATIC_C
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "devkit")]
|
#[cfg(feature = "devkit")]
|
||||||
@@ -484,14 +493,15 @@ fn infer_matrix_shape(len: usize) -> (u32, u32) {
|
|||||||
(best.0 as u32, best.1 as u32)
|
(best.0 as u32, best.1 as u32)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "devkit")]
|
#[cfg(feature = "debug")]
|
||||||
|
#[allow(dead_code)]
|
||||||
fn raw_to_g1(raw: u32) -> f64 {
|
fn raw_to_g1(raw: u32) -> f64 {
|
||||||
const X: [u32; 12] = [
|
const X: [u32; 12] = [
|
||||||
0, 84402, 117218, 140176, 159126, 175812, 191484, 208758, 224703, 252448, 302361, 352703,
|
0, 20829, 102371, 132956, 165568, 182033, 217263, 263098, 283747, 365120, 410556, 477190
|
||||||
];
|
];
|
||||||
|
|
||||||
const Y: [f64; 12] = [
|
const Y: [f64; 12] = [
|
||||||
0.0, 160.0, 260.0, 360.0, 460.0, 560.0, 660.0, 760.0, 860.0, 1060.0, 1560.0, 2060.0,
|
0.0, 57.0, 257.0, 357.0, 457.0, 557.0, 657.0, 857.0, 1057.0, 1557.0, 2057.0, 2557.0
|
||||||
];
|
];
|
||||||
|
|
||||||
let n = X.len();
|
let n = X.len();
|
||||||
|
|||||||
Reference in New Issue
Block a user