in str/apps/src/Shinkansen.cpp [21:45]
bool Shinkansen::checkPass(std::int16_t distance)
{
if(isInFrontOf){
time_counter++;
// 新幹線を検知してからTO_PASS + PASS_THRESHOLD
if(time_counter > TO_PASS + PASS_THRESHOLD){
time_counter = 0;
isInFrontOf = false;
return true;
}
}else{
// 新幹線をDISTANCE_THRESHOLD連続で検知するとtime_counterを増やす
if(distance <= DISTANCE_THRESHOLD){
time_counter++;
}else{
time_counter = 0;
}
// time_counterがPASS_THRESHOLDを超えると、新幹線がいると判断する
if(time_counter > PASS_THRESHOLD){
time_counter = 0;
isInFrontOf = true;
}
}
return false;
}