From c0a0904a4442a2d12b875aa02640d13c20bf3791 Mon Sep 17 00:00:00 2001 From: jess Date: Thu, 2 Apr 2026 19:34:58 -0700 Subject: [PATCH] display computed pH in status when LSV sweep completes --- cue-ios/CueIOS/AppState.swift | 9 ++++++++- cue/src/app.rs | 11 ++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cue-ios/CueIOS/AppState.swift b/cue-ios/CueIOS/AppState.swift index b8f88aa..831d9f2 100644 --- a/cue-ios/CueIOS/AppState.swift +++ b/cue-ios/CueIOS/AppState.swift @@ -174,7 +174,14 @@ final class AppState { if !lsvManualPeaks { lsvPeaks = detectLsvPeaks(lsvPoints) } - status = "LSV complete: \(lsvPoints.count) points" + var st = "LSV complete: \(lsvPoints.count) points" + if let s = phSlope, let o = phOffset, abs(s) > 1e-6 { + if let peak = detectQhqPeak(lsvPoints) { + let ph = (Double(peak) - o) / s + st += String(format: " | pH=%.2f", ph) + } + } + status = st case .ampStart(let vHold): ampPoints.removeAll() diff --git a/cue/src/app.rs b/cue/src/app.rs index e0e0caa..cce961a 100644 --- a/cue/src/app.rs +++ b/cue/src/app.rs @@ -660,7 +660,16 @@ impl App { if !self.lsv_manual_peaks { self.lsv_peaks = crate::lsv_analysis::detect_peaks(&self.lsv_points); } - self.status = format!("LSV complete: {} points", self.lsv_points.len()); + let mut st = format!("LSV complete: {} points", self.lsv_points.len()); + if let (Some(s), Some(o)) = (self.ph_slope, self.ph_offset) { + if let Some(peak) = crate::lsv_analysis::detect_qhq_peak(&self.lsv_points) { + if s.abs() > 1e-6 { + let ph = (peak - o) / s; + write!(st, " | pH={:.2}", ph).ok(); + } + } + } + self.status = st; } EisMessage::AmpStart { v_hold } => { self.amp_points.clear();