|
7 | 7 | //! - Serves the static UI files (port 8080) |
8 | 8 | //! |
9 | 9 | //! Replaces both ws_server.py and the Python HTTP server. |
| 10 | +#![allow(dead_code)] |
10 | 11 |
|
11 | 12 | mod adaptive_classifier; |
12 | 13 | pub mod cli; |
@@ -1658,9 +1659,11 @@ async fn windows_wifi_task(state: SharedState, tick_ms: u64) { |
1658 | 1659 |
|
1659 | 1660 | // Populate persons from the sensing update (Kalman-smoothed via tracker). |
1660 | 1661 | let raw_persons = derive_pose_from_sensing(&update); |
| 1662 | + let mut last_tracker_instant = s.last_tracker_instant.take(); |
1661 | 1663 | let tracked = tracker_bridge::tracker_update( |
1662 | | - &mut s.pose_tracker, &mut s.last_tracker_instant, raw_persons, |
| 1664 | + &mut s.pose_tracker, &mut last_tracker_instant, raw_persons, |
1663 | 1665 | ); |
| 1666 | + s.last_tracker_instant = last_tracker_instant; |
1664 | 1667 | if !tracked.is_empty() { |
1665 | 1668 | update.persons = Some(tracked); |
1666 | 1669 | } |
@@ -1794,9 +1797,11 @@ async fn windows_wifi_fallback_tick(state: &SharedState, seq: u32) { |
1794 | 1797 | }; |
1795 | 1798 |
|
1796 | 1799 | let raw_persons = derive_pose_from_sensing(&update); |
| 1800 | + let mut last_tracker_instant = s.last_tracker_instant.take(); |
1797 | 1801 | let tracked = tracker_bridge::tracker_update( |
1798 | | - &mut s.pose_tracker, &mut s.last_tracker_instant, raw_persons, |
| 1802 | + &mut s.pose_tracker, &mut last_tracker_instant, raw_persons, |
1799 | 1803 | ); |
| 1804 | + s.last_tracker_instant = last_tracker_instant; |
1800 | 1805 | if !tracked.is_empty() { |
1801 | 1806 | update.persons = Some(tracked); |
1802 | 1807 | } |
@@ -3224,7 +3229,7 @@ async fn adaptive_status(State(state): State<SharedState>) -> Json<serde_json::V |
3224 | 3229 | "trained_frames": model.trained_frames, |
3225 | 3230 | "accuracy": model.training_accuracy, |
3226 | 3231 | "version": model.version, |
3227 | | - "classes": adaptive_classifier::CLASSES, |
| 3232 | + "classes": model.class_names, |
3228 | 3233 | "class_stats": model.class_stats, |
3229 | 3234 | })), |
3230 | 3235 | None => Json(serde_json::json!({ |
@@ -3610,9 +3615,9 @@ async fn udp_receiver_task(state: SharedState, udp_port: u16) { |
3610 | 3615 | }; |
3611 | 3616 |
|
3612 | 3617 | // Feed field model calibration if active (use per-node history for ESP32). |
3613 | | - if let Some(ref mut fm) = s.field_model { |
3614 | | - if let Some(ns) = s.node_states.get(&node_id) { |
3615 | | - field_bridge::maybe_feed_calibration(fm, &ns.frame_history); |
| 3618 | + if let Some(frame_history) = s.node_states.get(&node_id).map(|ns| ns.frame_history.clone()) { |
| 3619 | + if let Some(ref mut fm) = s.field_model { |
| 3620 | + field_bridge::maybe_feed_calibration(fm, &frame_history); |
3616 | 3621 | } |
3617 | 3622 | } |
3618 | 3623 |
|
@@ -3695,9 +3700,11 @@ async fn udp_receiver_task(state: SharedState, udp_port: u16) { |
3695 | 3700 | }; |
3696 | 3701 |
|
3697 | 3702 | let raw_persons = derive_pose_from_sensing(&update); |
| 3703 | + let mut last_tracker_instant = s.last_tracker_instant.take(); |
3698 | 3704 | let tracked = tracker_bridge::tracker_update( |
3699 | | - &mut s.pose_tracker, &mut s.last_tracker_instant, raw_persons, |
| 3705 | + &mut s.pose_tracker, &mut last_tracker_instant, raw_persons, |
3700 | 3706 | ); |
| 3707 | + s.last_tracker_instant = last_tracker_instant; |
3701 | 3708 | if !tracked.is_empty() { |
3702 | 3709 | update.persons = Some(tracked); |
3703 | 3710 | } |
@@ -3858,9 +3865,9 @@ async fn udp_receiver_task(state: SharedState, udp_port: u16) { |
3858 | 3865 | }; |
3859 | 3866 |
|
3860 | 3867 | // Feed field model calibration if active (use per-node history for ESP32). |
3861 | | - if let Some(ref mut fm) = s.field_model { |
3862 | | - if let Some(ns) = s.node_states.get(&node_id) { |
3863 | | - field_bridge::maybe_feed_calibration(fm, &ns.frame_history); |
| 3868 | + if let Some(frame_history) = s.node_states.get(&node_id).map(|ns| ns.frame_history.clone()) { |
| 3869 | + if let Some(ref mut fm) = s.field_model { |
| 3870 | + field_bridge::maybe_feed_calibration(fm, &frame_history); |
3864 | 3871 | } |
3865 | 3872 | } |
3866 | 3873 |
|
@@ -3905,9 +3912,11 @@ async fn udp_receiver_task(state: SharedState, udp_port: u16) { |
3905 | 3912 | }; |
3906 | 3913 |
|
3907 | 3914 | let raw_persons = derive_pose_from_sensing(&update); |
| 3915 | + let mut last_tracker_instant = s.last_tracker_instant.take(); |
3908 | 3916 | let tracked = tracker_bridge::tracker_update( |
3909 | | - &mut s.pose_tracker, &mut s.last_tracker_instant, raw_persons, |
| 3917 | + &mut s.pose_tracker, &mut last_tracker_instant, raw_persons, |
3910 | 3918 | ); |
| 3919 | + s.last_tracker_instant = last_tracker_instant; |
3911 | 3920 | if !tracked.is_empty() { |
3912 | 3921 | update.persons = Some(tracked); |
3913 | 3922 | } |
@@ -4041,9 +4050,11 @@ async fn simulated_data_task(state: SharedState, tick_ms: u64) { |
4041 | 4050 |
|
4042 | 4051 | // Populate persons from the sensing update (Kalman-smoothed via tracker). |
4043 | 4052 | let raw_persons = derive_pose_from_sensing(&update); |
| 4053 | + let mut last_tracker_instant = s.last_tracker_instant.take(); |
4044 | 4054 | let tracked = tracker_bridge::tracker_update( |
4045 | | - &mut s.pose_tracker, &mut s.last_tracker_instant, raw_persons, |
| 4055 | + &mut s.pose_tracker, &mut last_tracker_instant, raw_persons, |
4046 | 4056 | ); |
| 4057 | + s.last_tracker_instant = last_tracker_instant; |
4047 | 4058 | if !tracked.is_empty() { |
4048 | 4059 | update.persons = Some(tracked); |
4049 | 4060 | } |
|
0 commit comments