From bcb42cce828267f193afb7c5d5b5b7bf57fc97cc Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Sat, 28 Jan 2023 14:34:36 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BE=D1=82=D0=B5=D0=BD=D1=86?= =?UTF-8?q?=D0=B8=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D0=BE=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BE=D0=BA=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scheduler.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/scheduler.c b/scheduler.c index 40198f1..e455cab 100644 --- a/scheduler.c +++ b/scheduler.c @@ -240,29 +240,19 @@ void scheduler_main() // логика для того, чтобы роботы не столкнулись в начале if (robot1.dx.current_zone < robot1_border) { - robot2_lock_zone = -1; - robot1_lock_zone = robot1_border; if (robot1_code.PC < 0) { + robot2_lock_zone = -1; + robot1_lock_zone = robot1_border; robot1_code.barrel_id = -1; robot1_code.code[0] = ROBOT_CMD_DOWN(); robot1_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot1_border + 2); robot1_code.code[2] = ROBOT_CMD_END(); robot1_code.PC = 0; } - } else if (robot2.dx.current_zone < ZONE_DEGREASING) { - // начальная позиция робота 1 - обезжир - robot2_lock_zone = ZONE_DEGREASING; - if (robot2_code.PC < 0) { - robot2_code.barrel_id = -1; - robot2_code.code[0] = ROBOT_CMD_DOWN(); - robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING); - robot2_code.code[2] = ROBOT_CMD_END(); - robot2_code.PC = 0; - } } else if (robot2.dx.current_zone > robot2_border) { // это уже граница робота 2 - robot2_lock_zone = robot2_border - 2; if (robot2_code.PC < 0) { + robot2_lock_zone = robot2_border - 2; robot2_code.barrel_id = -1; robot2_code.code[0] = ROBOT_CMD_DOWN(); robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(robot2_border - 2); @@ -287,17 +277,29 @@ void scheduler_main() // и отдельно для второго (только если не в ночном режиме) if (robot2_code.PC < 0) { - for (short i = 0; i < BARRELS_COUNT; i++) { - // для каждой задачи: - tasks[i].start_zone = barrels[i].zone; - // определяем можно ли ее выполнить и что вообще нужно выполнить - tasks[i].dest_zone = can_move(barrels + i, 2); - if (tasks[i].dest_zone >= 0) { - tasks[i].priority = get_operation_priority(i); + if (robot2.dx.current_zone < ZONE_DEGREASING) { + // начальная позиция робота 1 - обезжир + robot2_lock_zone = ZONE_DEGREASING; + if (robot2_code.PC < 0) { + robot2_code.barrel_id = -1; + robot2_code.code[0] = ROBOT_CMD_DOWN(); + robot2_code.code[1] = ROBOT_CMD_MOVE_TO_ZONE(ZONE_DEGREASING); + robot2_code.code[2] = ROBOT_CMD_END(); + robot2_code.PC = 0; + } + } else { + for (short i = 0; i < BARRELS_COUNT; i++) { + // для каждой задачи: + tasks[i].start_zone = barrels[i].zone; + // определяем можно ли ее выполнить и что вообще нужно выполнить + tasks[i].dest_zone = can_move(barrels + i, 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, 2); + } } } }