From 71851c7bc8392af9eb6042bdd0c0230b8f3c964a Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Mon, 5 Dec 2022 13:16:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=B8=D0=B7=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=9F=D0=9B?= =?UTF-8?q?=D0=9A=20=D1=81=20=D1=8D=D1=82=D0=B8=D0=BC=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- emulator.cpp | 6 +++--- emulator.h | 7 ++----- scheduler.c | 16 +++++++++------- utils.h | 4 ++++ 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/emulator.cpp b/emulator.cpp index 86fae14..cbf415d 100644 --- a/emulator.cpp +++ b/emulator.cpp @@ -11,8 +11,8 @@ struct robot_regs robot1; struct robot_regs robot2; -char schedulerSoftwareTimer = 0; -char schedulerOneRobotMode = 1; +char _scheduler_software_timer = 0; +char _scheduler_one_robot_mode = 1; // кнопка загрузки в зоне 0, означает что барабан надо изъять из этой загрузки (а перед этим создать) char button_load = 0; @@ -194,7 +194,7 @@ int main() { current_tic = 0; const char* message = nullptr; while (true) { - schedulerSoftwareTimer = 1; + _scheduler_software_timer = 1; robot_main(); scheduler_main(); send_str("\033c"); diff --git a/emulator.h b/emulator.h index 422dfab..5f628a4 100644 --- a/emulator.h +++ b/emulator.h @@ -7,11 +7,8 @@ extern "C" { #endif -extern struct robot_regs robot1; -extern struct robot_regs robot2; - -extern char schedulerSoftwareTimer; -extern char schedulerOneRobotMode; +extern char _scheduler_software_timer; +extern char _scheduler_one_robot_mode; extern short etching_zone, galvanizing_zone; diff --git a/scheduler.c b/scheduler.c index 575e8ef..fe923e7 100644 --- a/scheduler.c +++ b/scheduler.c @@ -15,7 +15,7 @@ char zone_is_busy(short zone) { return 0; } -static short get_robot_barrel(char robot_id) { +short get_robot_barrel(char robot_id) { for (short i = 0; i < BARRELS_COUNT; i++) { if (barrels[i].flags.robot == robot_id) { return i; @@ -43,7 +43,7 @@ short can_move(struct barrel* bar) { } #ifdef EMULATOR - if (!schedulerOneRobotMode) { + if (!_scheduler_one_robot_mode) { printf("WARMING: нет проверки того, что для перемещения барабана не мешает второй робот\n"); } #endif @@ -163,7 +163,7 @@ short can_move(struct barrel* bar) { case ZONE_UNLOAD: // последняя промывка, нужно разрешение на выгрузку - if (schedulerOneRobotMode && button_unload) { + if (_scheduler_one_robot_mode && button_unload) { // нужно промывку загрузку 0 if (!zone_is_busy(ZONE_LOAD_1)) { return ZONE_LOAD_1; @@ -271,7 +271,7 @@ struct barrel makeBarrel(short flags, short zone, short timer) { } -static short scheduler_find_task(struct scheduler_task* tasks, const short curr_pos) { +short scheduler_find_task(struct scheduler_task* tasks, const short curr_pos) { // TODO добавить поддержку ночного режима и режима двух роботов // для начала надо найти максимальный приоритет у операций short max_priority = -1; @@ -601,7 +601,7 @@ void schedule_robot_1() { // TODO добавить вставку lock-point'ов на задачах на несколько роботов // найти подходящую задачу - if (schedulerOneRobotMode) { + if (_scheduler_one_robot_mode) { short target_task = scheduler_find_task(tasks, robot1.dx.current_zone); if (target_task >= 0) { @@ -612,7 +612,9 @@ void schedule_robot_1() { #endif } } else { +#ifdef EMULATOR printf("WARMING: support only one robot mode\n"); +#endif } } @@ -682,8 +684,8 @@ void scheduler_main() { button_load = create_barrel_in_load(); } - if (schedulerSoftwareTimer) { - schedulerSoftwareTimer = 0; + if (_scheduler_software_timer) { + _scheduler_software_timer = 0; for (int i = 0; i < 10; i++) { if (barrels[i].software_timer > -9999) { barrels[i].software_timer--; diff --git a/utils.h b/utils.h index d39c65e..eec7a80 100644 --- a/utils.h +++ b/utils.h @@ -134,8 +134,12 @@ extern "C" { #ifdef EMULATOR extern struct barrel barrels[BARRELS_COUNT]; +extern struct robot_regs robot1; +extern struct robot_regs robot2; #else #define barrels ((struct barrel*)&barrels_array) +#define robot1 (*((struct robot_regs*)&robot1_reg_dx)) +#define robot2 (*((struct robot_regs*)&robot2_reg_dz)) #endif // почему-то компилер говорит что размер структуру сраный