Исправлен перехват барабана, обнаружение отключенных зон, мелкий рефакторинг
This commit is contained in:
30
scheduler.c
30
scheduler.c
@@ -211,10 +211,10 @@ void scheduler_main()
|
||||
}
|
||||
|
||||
// автоматический инкремент зон травления и цинкования
|
||||
if (etching_zone < 0) {
|
||||
if (!is_accessible_zone(ROBOT_ZONE_ETCH)) {
|
||||
increment_zone(ROBOT_ZONE_ETCH);
|
||||
}
|
||||
if (galvanizing_zone < 0) {
|
||||
if (!is_accessible_zone(ROBOT_ZONE_GAL)) {
|
||||
increment_zone(ROBOT_ZONE_GAL);
|
||||
}
|
||||
|
||||
@@ -224,16 +224,16 @@ void scheduler_main()
|
||||
|
||||
if (one_robot_mode) {
|
||||
// режим одного робота
|
||||
char robot_id = 0;
|
||||
char robot_id = ROBOT_NONE;
|
||||
if (hla_robot1_en && robot1_code.PC < 0) {
|
||||
robot_id = 1;
|
||||
robot_id = ROBOT_1;
|
||||
} else if (hla_robot2_en && robot2_code.PC < 0) {
|
||||
robot_id = 2;
|
||||
robot_id = ROBOT_2;
|
||||
}
|
||||
|
||||
if (robot_id != 0) {
|
||||
if ((robot_id == 1 && robot1.dx.current_zone < ZONE_WASHING_1A) ||
|
||||
(robot_id == 2 && robot2.dx.current_zone < ZONE_WASHING_1A)) {
|
||||
if (robot_id != ROBOT_NONE) {
|
||||
if ((robot_id == ROBOT_1 && robot1.dx.current_zone < ZONE_WASHING_1A) ||
|
||||
(robot_id == ROBOT_2 && robot2.dx.current_zone < ZONE_WASHING_1A)) {
|
||||
if (robot_id == 1) {
|
||||
robot1_code.barrel_id = -1;
|
||||
robot1_code.code[0] = ROBOT_CMD_DOWN();
|
||||
@@ -258,10 +258,10 @@ void scheduler_main()
|
||||
}
|
||||
}
|
||||
|
||||
if (robot_id == 1) {
|
||||
schedule_one_robot(tasks, &robot1, &robot1_code, 1);
|
||||
if (robot_id == ROBOT_1) {
|
||||
schedule_one_robot(tasks, &robot1, &robot1_code, ROBOT_1);
|
||||
} else {
|
||||
schedule_one_robot(tasks, &robot2, &robot2_code, 2);
|
||||
schedule_one_robot(tasks, &robot2, &robot2_code, ROBOT_2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -306,13 +306,13 @@ void scheduler_main()
|
||||
// для каждой задачи:
|
||||
tasks[i].start_zone = barrels[i].zone;
|
||||
// определяем можно ли ее выполнить и что вообще нужно выполнить
|
||||
tasks[i].dest_zone = can_move(barrels + i, 1);
|
||||
tasks[i].dest_zone = can_move(barrels + i, ROBOT_1);
|
||||
if (tasks[i].dest_zone >= 0) {
|
||||
tasks[i].priority = get_operation_priority(i);
|
||||
}
|
||||
}
|
||||
|
||||
schedule_one_robot(tasks, &robot1, &robot1_code, 1);
|
||||
schedule_one_robot(tasks, &robot1, &robot1_code, ROBOT_1);
|
||||
}
|
||||
|
||||
// и отдельно для второго (только если не в ночном режиме)
|
||||
@@ -332,13 +332,13 @@ void scheduler_main()
|
||||
// для каждой задачи:
|
||||
tasks[i].start_zone = barrels[i].zone;
|
||||
// определяем можно ли ее выполнить и что вообще нужно выполнить
|
||||
tasks[i].dest_zone = can_move(barrels + i, 2);
|
||||
tasks[i].dest_zone = can_move(barrels + i, ROBOT_2);
|
||||
if (tasks[i].dest_zone >= 0) {
|
||||
tasks[i].priority = get_operation_priority(i);
|
||||
}
|
||||
}
|
||||
|
||||
schedule_one_robot(tasks, &robot2, &robot2_code, 2);
|
||||
schedule_one_robot(tasks, &robot2, &robot2_code, ROBOT_2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user