Немного поправлен код стайл
This commit is contained in:
parent
7bd6275bac
commit
cea2422977
91
scheduler.c
91
scheduler.c
@ -22,7 +22,7 @@ static short get_robot_barrel(char robot_id) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// TODO обновить метод
|
||||
// TODO обновить метод для работы с двумя роботами
|
||||
// вернет можно ли ехать и главное куда ехать, если можно (нельзя если вернулось значение < 0)
|
||||
// -1 вернет что перемещать нельзя
|
||||
// -2 вернет если требуется атомарная операция пассивации
|
||||
@ -347,6 +347,9 @@ void schedule_robot_1() {
|
||||
tasks[i].start_zone = barrels[i].zone;
|
||||
// определяем можно ли ее выполнить и что вообще нужно выполнить
|
||||
tasks[i].dest_zone = can_move(barrels + i);
|
||||
if (tasks[i].dest_zone >= 0) {
|
||||
tasks[i].priority = get_operation_priority(i);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO добавить вставку lock-point'ов на задачах на несколько роботов
|
||||
@ -362,9 +365,31 @@ void schedule_robot_1() {
|
||||
// первым делом добавляем команду опустить траверсу
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN;
|
||||
|
||||
if (tasks[target_task].start_zone != ZONE_WASHING_3B) {
|
||||
if (tasks[target_task].dest_zone == ZONE_PASSIVATION) {
|
||||
// пассивация, тут все просто
|
||||
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
|
||||
if (tasks[target_task].start_zone == 22) {
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | ZONE_WASHING_3B;
|
||||
}
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_PASSIVATION;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
|
||||
robot1_code.code[cmd_index++] = barrels[target_task].time_passivation;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_WASHING_4A;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
|
||||
robot1_code.code[cmd_index++] = barrels[target_task].time_washing_4a;
|
||||
} else {
|
||||
// любой другой случай
|
||||
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
|
||||
if (tasks[target_task].start_zone != 22) {
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | tasks[target_task].start_zone;
|
||||
} else {
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_OFF;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP;
|
||||
if (robot1.dx.current_zone != 21) {
|
||||
@ -373,13 +398,11 @@ void schedule_robot_1() {
|
||||
}
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_2;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | 22;
|
||||
} else {
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | tasks[target_task].start_zone;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
|
||||
|
||||
|
||||
// теперь надо определиться с тем, сколько ждать скапывания
|
||||
switch (tasks[target_task].start_zone) {
|
||||
case ZONE_DEGREASING:
|
||||
@ -430,11 +453,13 @@ void schedule_robot_1() {
|
||||
short tmp = -1;
|
||||
switch (tasks[target_task].dest_zone) {
|
||||
case ZONE_DEGREASING:
|
||||
tmp = barrels[target_task].time_degreasing; break;
|
||||
tmp = barrels[target_task].time_degreasing;
|
||||
break;
|
||||
|
||||
case ZONE_ETCHING_1:
|
||||
case ZONE_ETCHING_2:
|
||||
tmp = barrels[target_task].time_etching; break;
|
||||
tmp = barrels[target_task].time_etching;
|
||||
break;
|
||||
|
||||
case ZONE_GALVANIZING_1:
|
||||
case ZONE_GALVANIZING_2:
|
||||
@ -444,25 +469,34 @@ void schedule_robot_1() {
|
||||
case ZONE_GALVANIZING_6:
|
||||
case ZONE_GALVANIZING_7:
|
||||
case ZONE_GALVANIZING_8:
|
||||
tmp = barrels[target_task].time_galvanizing; break;
|
||||
tmp = barrels[target_task].time_galvanizing;
|
||||
break;
|
||||
|
||||
case ZONE_WASHING_1A:
|
||||
tmp = barrels[target_task].time_washing_1a; break;
|
||||
tmp = barrels[target_task].time_washing_1a;
|
||||
break;
|
||||
case ZONE_WASHING_2A:
|
||||
tmp = barrels[target_task].time_washing_2a; break;
|
||||
tmp = barrels[target_task].time_washing_2a;
|
||||
break;
|
||||
case ZONE_WASHING_3A:
|
||||
tmp = barrels[target_task].time_washing_3a; break;
|
||||
tmp = barrels[target_task].time_washing_3a;
|
||||
break;
|
||||
case ZONE_WASHING_4A:
|
||||
tmp = barrels[target_task].time_washing_4a; break;
|
||||
tmp = barrels[target_task].time_washing_4a;
|
||||
break;
|
||||
|
||||
case ZONE_WASHING_1B:
|
||||
tmp = barrels[target_task].time_washing_1b; break;
|
||||
tmp = barrels[target_task].time_washing_1b;
|
||||
break;
|
||||
case ZONE_WASHING_2B:
|
||||
tmp = barrels[target_task].time_washing_2b; break;
|
||||
tmp = barrels[target_task].time_washing_2b;
|
||||
break;
|
||||
case ZONE_WASHING_3B:
|
||||
tmp = barrels[target_task].time_washing_3b; break;
|
||||
tmp = barrels[target_task].time_washing_3b;
|
||||
break;
|
||||
case ZONE_WASHING_4B:
|
||||
tmp = barrels[target_task].time_washing_4b; break;
|
||||
tmp = barrels[target_task].time_washing_4b;
|
||||
break;
|
||||
}
|
||||
|
||||
if (tmp != -1) {
|
||||
@ -471,30 +505,11 @@ void schedule_robot_1() {
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// пассивация, тут все просто
|
||||
if (robot1.dx.current_zone != tasks[target_task].start_zone) {
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE | ZONE_WASHING_3B;
|
||||
}
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_PASSIVATION;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
|
||||
robot1_code.code[cmd_index++] = barrels[target_task].time_passivation;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_UP_WITH_BARREL;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_MOVE_TO_ZONE_WITH_BARREL | ZONE_WASHING_4A;
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_DOWN_WITH_BARREL;
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_TMR_SET;
|
||||
robot1_code.code[cmd_index++] = barrels[target_task].time_washing_4a;
|
||||
}
|
||||
|
||||
robot1_code.code[cmd_index++] = ROBOT_CMD_END;
|
||||
robot1_code.PC = 0;
|
||||
|
||||
|
||||
printf("INFO: code length is %d\n", cmd_index);
|
||||
debug_print_robot1_code();
|
||||
}
|
||||
|
Reference in New Issue
Block a user