Files
QDAC-firmware/app/gl_barrier.c
2024-03-24 16:07:39 +08:00

67 lines
1.4 KiB
C

#include "zf_common_headfile.h"
#include "gl_headfile.h"
enum barrier_type_e barrier_type = BARRIER_NONE;
void CheckBarrier() {
if (barrier_type == BARRIER_NONE && Lpt0_found_barrier_in && !Lpt1_found_barrier_in && is_straight1) {
barrier_type = BARRIER_LEFT_BEGIN;
}
if (barrier_type == BARRIER_NONE && !Lpt0_found_barrier_in && Lpt1_found_barrier_in && is_straight0) {
barrier_type = BARRIER_RIGHT_BEGIN;
}
}
void RunBarrier() {
if (barrier_type == BARRIER_LEFT_BEGIN)
{
track_type = TRACK_RIGHT;
if (Lpt0_found)
{
Lpt0_found_count++;
}
if (Lpt0_found_count >= 1)
{
Lpt0_found_count = 0;
barrier_type = BARRIER_LEFT_RUNNING;
track_type = TRACK_RIGHT;
}
}
else if (barrier_type == BARRIER_LEFT_RUNNING)
{
track_type = TRACK_RIGHT;
if (Lpt0_found)
{
barrier_type = BARRIER_NONE;
track_type = TRACK_RIGHT;
}
}
if (barrier_type == BARRIER_RIGHT_BEGIN)
{
track_type = TRACK_LEFT;
if (Lpt1_found)
{
Lpt1_found_count++;
}
if (Lpt1_found_count >= 1)
{
Lpt1_found_count = 0;
barrier_type = BARRIER_RIGHT_RUNNING;
track_type = TRACK_LEFT;
}
}
else if (barrier_type == BARRIER_RIGHT_RUNNING)
{
track_type = TRACK_LEFT;
if (Lpt1_found)
{
barrier_type = BARRIER_NONE;
track_type = TRACK_LEFT;
}
}
}