| | |
| | | static bool occurSlide; |
| | | |
| | | static struct RtkTime crashGreenRunTime, crashGreenStartTime, stopTimepoint; |
| | | |
| | | static struct RtkTime gearChangeTimePoint; |
| | | static struct RtkTime gearErrorTimePoint; |
| | | static struct RtkTime gearNSlideTimePoint; |
| | | |
| | | static int gearChange; |
| | | |
| | | static car_sensor_value_t turnSignalStatus; |
| | | |
| | |
| | | occurSecondBreak = false; |
| | | } |
| | | |
| | | // 两次换挡不进 |
| | | static int prevGear = -1; |
| | | |
| | | int currGear = ReadCarStatus(GEAR); |
| | | if (currGear != GEAR_N && prevGear == GEAR_N) { |
| | | // 一次换挡 |
| | | if (gearChange == currGear && TimeGetDiff(rtkTime, &gearChangeTimePoint) < D_SEC(5)) { |
| | | AddExamFault(7, rtkTime); |
| | | } |
| | | |
| | | gearChange = currGear; |
| | | gearChangeTimePoint = *rtkTime; |
| | | } |
| | | prevGear = currGear; |
| | | |
| | | // 挡位匹配检测 |
| | | bool currGearError = false; |
| | | bool currGearNSlide = false; |
| | |
| | | |
| | | if (RoadMap.calibrate) { |
| | | if (currExamMapIndex < 0 && oldid >= 0) { |
| | | RoadChange(oldid, 0); |
| | | RoadChange(RoadMap.roads[oldid].id, 0); |
| | | } else if (currExamMapIndex >= 0) { |
| | | RoadChange(currExamMapIndex, 1); |
| | | RoadChange(RoadMap.roads[currExamMapIndex].id, 1); |
| | | } |
| | | } |
| | | Lane.guide = 0; |
| | |
| | | RoadExamItem[RoadExamStatus] = ROAD_EXAM_ITEM_EXECED; |
| | | if (RoadExamStatus == ROAD_EXAM_ITEM_CAR_START) { |
| | | freeRunExceptDistance = 60.0; |
| | | } else if (RoadExamStatus == ROAD_EXAM_ITEM_CAR_STOP) { |
| | | // 考试结束 |
| | | MA_SendExamStatus(1, 1); |
| | | } else { |
| | | freeRunExceptDistance = 2;//250.0; |
| | | } |
| | |
| | | } else if (RoadExamStatus == ROAD_EXAM_READY_NEXT && item == 2) { |
| | | StartOvertakeExam(Lane.no); |
| | | RoadExamStatus = ROAD_EXAM_ITEM_OVER_TAKE; |
| | | } else if (RoadExamStatus == ROAD_EXAM_READY_NEXT && item == 5) { |
| | | if (RoadExamItem[ROAD_EXAM_ITEM_STRAIGHT] == ROAD_EXAM_ITEM_EXECED && |
| | | RoadExamItem[ROAD_EXAM_ITEM_OP_GEAR] == ROAD_EXAM_ITEM_EXECED && |
| | | RoadExamItem[ROAD_EXAM_ITEM_CHANGE_LANE] == ROAD_EXAM_ITEM_EXECED && |
| | | RoadExamItem[ROAD_EXAM_ITEM_OVER_TAKE] == ROAD_EXAM_ITEM_EXECED) { |
| | | StartStopCarExam(); |
| | | RoadExamStatus = ROAD_EXAM_ITEM_CAR_STOP; |
| | | } |
| | | } |
| | | } |
| | | |