Skip to content

Commit 18946b8

Browse files
committed
feat: send test ack with snapshot data
1 parent afe46f5 commit 18946b8

File tree

6 files changed

+42
-12
lines changed

6 files changed

+42
-12
lines changed

src/rfid.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ pub async fn rfid_task(
150150
}
151151

152152
#[cfg(feature = "e2e")]
153-
crate::ws::send_test_ack().await;
153+
crate::ws::send_test_ack(&global_state).await;
154154

155155
#[cfg(not(feature = "e2e"))]
156156
{

src/stackmat.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ pub async fn stackmat_task(
204204

205205
#[cfg(feature = "e2e")]
206206
if send_ack {
207-
crate::ws::send_test_ack().await;
207+
crate::ws::send_test_ack(&global_state).await;
208208
}
209209

210210
global_state.timer_signal.signal(parsed.1);

src/state.rs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1+
use crate::{structs::PossibleGroup, utils::signaled_mutex::SignaledMutex};
12
use alloc::{rc::Rc, string::String, vec::Vec};
23
use embassy_sync::{blocking_mutex::raw::CriticalSectionRawMutex, signal::Signal};
34
use embassy_time::{Duration, Instant, Timer};
45
use esp_hal_wifimanager::Nvs;
56
use serde::{Deserialize, Serialize};
67

7-
use crate::{structs::PossibleGroup, utils::signaled_mutex::SignaledMutex};
8-
98
pub static mut EPOCH_BASE: u64 = 0;
109
pub static mut SLEEP_STATE: bool = false;
1110
pub static mut DEEPER_SLEEP: bool = false;
@@ -342,6 +341,26 @@ impl SignaledGlobalStateInner {
342341
Some(false) => false,
343342
}
344343
}
344+
345+
#[cfg(feature = "e2e")]
346+
pub fn snapshot_data(&self) -> crate::structs::SnapshotData {
347+
let inspection_time = self
348+
.inspection_end
349+
.zip(self.inspection_start)
350+
.map(|(end, start)| (end - start).as_millis());
351+
352+
crate::structs::SnapshotData {
353+
scene: self.scene.to_index(),
354+
inspection_time,
355+
penalty: self.penalty,
356+
solve_time: self.solve_time,
357+
current_judge: self.current_judge,
358+
current_competitor: self.current_competitor,
359+
group_selected_idx: self.group_selected_idx,
360+
time_confirmed: self.time_confirmed,
361+
possible_groups: self.possible_groups.len(),
362+
}
363+
}
345364
}
346365

347366
#[cfg(not(feature = "e2e"))]

src/structs.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,11 @@ pub enum TimerPacketInner {
8282
current_epoch: u64,
8383
},
8484
// packet for end to end testing
85-
//Snapshot(SnapshotData),
8685
#[cfg(feature = "e2e")]
8786
TestPacket(TestPacketData),
8887

8988
#[cfg(feature = "e2e")]
90-
TestAck,
89+
TestAck(SnapshotData),
9190
}
9291

9392
#[cfg(feature = "e2e")]
@@ -100,7 +99,20 @@ pub enum TestPacketData {
10099
ButtonPress { pin: u8, press_time: u64 },
101100
StackmatTime(u64),
102101
StackmatReset,
103-
Snapshot,
102+
}
103+
104+
#[cfg(feature = "e2e")]
105+
#[derive(Debug, Clone, Deserialize, Serialize)]
106+
pub struct SnapshotData {
107+
pub scene: usize,
108+
pub inspection_time: Option<u64>,
109+
pub solve_time: Option<u64>,
110+
pub penalty: Option<i8>,
111+
pub time_confirmed: bool,
112+
pub possible_groups: usize,
113+
pub group_selected_idx: usize,
114+
pub current_competitor: Option<u64>,
115+
pub current_judge: Option<u64>,
104116
}
105117

106118
#[derive(Debug, Serialize, Deserialize, Clone)]

src/utils/buttons.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ impl ButtonsHandler {
138138

139139
#[cfg(feature = "e2e")]
140140
if send_ack {
141-
crate::ws::send_test_ack().await;
141+
crate::ws::send_test_ack(&state).await;
142142
send_ack = false;
143143
}
144144
}

src/ws.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ async fn parse_test_packet(
384384
.stackmat_sig
385385
.signal((crate::utils::stackmat::StackmatTimerState::Reset, 0));
386386

387-
send_test_ack().await;
387+
send_test_ack(&global_state).await;
388388
}
389389
crate::structs::TestPacketData::HardStateReset => {
390390
global_state.state.lock().await.hard_state_reset().await;
@@ -406,15 +406,14 @@ async fn parse_test_packet(
406406
.stackmat_sig
407407
.signal((crate::utils::stackmat::StackmatTimerState::Reset, 0));
408408
}
409-
crate::structs::TestPacketData::Snapshot => todo!(),
410409
}
411410
}
412411

413412
#[cfg(feature = "e2e")]
414-
pub async fn send_test_ack() {
413+
pub async fn send_test_ack(global_state: &GlobalState) {
415414
send_packet(TimerPacket {
416415
tag: None,
417-
data: TimerPacketInner::TestAck,
416+
data: TimerPacketInner::TestAck(global_state.state.value().await.snapshot_data()),
418417
})
419418
.await;
420419
}

0 commit comments

Comments
 (0)