Skip to content

Commit

Permalink
Reset FreeKickSignalFilter outside of KickIn and PushingFreeKick
Browse files Browse the repository at this point in the history
  • Loading branch information
ThagonDuarte committed Jan 29, 2025
1 parent 6b795dd commit f32c27a
Showing 1 changed file with 25 additions and 7 deletions.
32 changes: 25 additions & 7 deletions crates/control/src/free_kick_signal_filter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize};
use context_attribute::context;
use framework::{AdditionalOutput, MainOutput, PerceptionInput};
use hardware::NetworkInterface;
use spl_network_messages::{HulkMessage, PlayerNumber, Team, VisualRefereeMessage};
use spl_network_messages::{HulkMessage, PlayerNumber, SubState, Team, VisualRefereeMessage};
use types::{
cycle_time::CycleTime,
field_dimensions::GlobalFieldSide,
Expand All @@ -25,6 +25,7 @@ use types::{
pub struct FreeKickSignalFilter {
free_kick_signal_detection_times: Players<Option<TimeTaggedKickingTeamDetections>>,
detected_free_kick_detections_queue: VecDeque<Team>,
has_sent_free_kick_signal_message: bool,
}

#[context]
Expand Down Expand Up @@ -73,6 +74,7 @@ impl FreeKickSignalFilter {
*context.referee_pose_queue_length,
),
free_kick_signal_detection_times: Default::default(),
has_sent_free_kick_signal_message: false,
})
}

Expand Down Expand Up @@ -104,6 +106,20 @@ impl FreeKickSignalFilter {
&mut self,
context: &CycleContext<impl NetworkInterface>,
) -> Result<FreeKickSignalDetectionResult> {
if !matches!(
context.game_controller_state.sub_state,
Some(SubState::KickIn) | Some(SubState::PushingFreeKick)
) {
self.detected_free_kick_detections_queue = Default::default();
self.free_kick_signal_detection_times = Default::default();
self.has_sent_free_kick_signal_message = false;

return Ok(FreeKickSignalDetectionResult {
did_detect_any_free_kick_signal_this_cycle: false,
detected_free_kick_kicking_team: None,
});
}

let time_tagged_persistent_messages =
unpack_message_tree(&context.network_message.persistent);

Expand Down Expand Up @@ -149,12 +165,14 @@ impl FreeKickSignalFilter {
time: context.cycle_time.start_time,
detected_kicking_team: own_detected_kicking_team,
});

send_own_detection_message(
context.hardware_interface.clone(),
*context.player_number,
Some(own_detected_kicking_team),
)?;
if self.has_sent_free_kick_signal_message {
send_own_detection_message(
context.hardware_interface.clone(),
*context.player_number,
Some(own_detected_kicking_team),
)?;
self.has_sent_free_kick_signal_message = true;
}
}

let majority_voted_kicking_team_detection = majority_vote_free_kick_signal(
Expand Down

0 comments on commit f32c27a

Please sign in to comment.