| | |
| | | #define MAP_LIST_SIZE 32 |
| | | |
| | | enum { |
| | | TEST_NONE, |
| | | TEST_PARK_EDGE, |
| | | TEST_PARK_BOTTOM, |
| | | TEST_TUNE_90, |
| | | TEST_S_CURVE, |
| | | TEST_SLOPE, |
| | | TEST_SIMPLE, |
| | | TEST_END |
| | | }; |
| | | |
| | | enum { |
| | | TEST_TYPE_AREA = 2, |
| | | TEST_TYPE_ROAD_DUMMY_LIGHT, |
| | | TEST_TYPE_ROAD_TRUE_LIGHT |
| | |
| | | |
| | | if (map.triggerLine != NULL) { |
| | | for (int j = 0; j < map.triggerLineNum; ++j) { |
| | | if (map.triggerLine[j].point != NULL) |
| | | free(map.triggerLine[j].point); |
| | | if (map.triggerLine[j].line.point != NULL) |
| | | free(map.triggerLine[j].line.point); |
| | | } |
| | | free(map.triggerLine); |
| | | } |
| | |
| | | newMap.redLine[i].point[j] = RoadMapPoints.point[redLines[i][j]]; |
| | | } |
| | | } |
| | | } else { |
| | | newMap.redLine = NULL; |
| | | } |
| | | |
| | | if ((newMap.redAreaNum = redAreas.size()) > 0) { |
| | |
| | | newMap.redArea[i].point[j] = RoadMapPoints.point[redAreas[i][j]]; |
| | | } |
| | | } |
| | | } else { |
| | | newMap.redArea = NULL; |
| | | } |
| | | |
| | | if ((newMap.greenLineNum = greenLines.size()) > 0) { |
| | |
| | | newMap.greenLine[i].point[j] = RoadMapPoints.point[greenLines[i][j]]; |
| | | } |
| | | } |
| | | } else { |
| | | newMap.greenLine = NULL; |
| | | } |
| | | |
| | | if ((newMap.triggerLineNum = triggerLines.size()) > 0) { |
| | | newMap.triggerLine = (Polygon *) malloc(sizeof(Polygon) * newMap.triggerLineNum); |
| | | newMap.triggerLine = (struct trigger_line_t *) malloc(sizeof(struct trigger_line_t) * newMap.triggerLineNum); |
| | | |
| | | for (int i = 0; i < newMap.triggerLineNum; ++i) { |
| | | newMap.triggerLine[i].num = triggerLines[i].size(); |
| | | newMap.triggerLine[i].point = (PointF *) malloc(sizeof(PointF) * newMap.triggerLine[i].num); |
| | | newMap.triggerLine[i].line.num = triggerLines[i].size() - 1; |
| | | newMap.triggerLine[i].line.point = (PointF *) malloc(sizeof(PointF) * newMap.triggerLine[i].line.num); |
| | | |
| | | for (int j = 0; j < newMap.triggerLine[i].num; ++j) { |
| | | newMap.triggerLine[i].point[j] = RoadMapPoints.point[triggerLines[i][j]]; |
| | | newMap.triggerLine[i].triggerMapId = triggerLines[i][0]; |
| | | for (int j = 0; j < newMap.triggerLine[i].line.num; ++j) { |
| | | newMap.triggerLine[i].line.point[j] = RoadMapPoints.point[triggerLines[i][j+1]]; |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | newMap.triggerLine = NULL; |
| | | }; |
| | | |
| | | RoadMapList.push_back(newMap); |
| | | } |
| | |
| | | return; |
| | | } |
| | | |
| | | if (MapNum == 0) { |
| | | if (MapNum == 0 && type == TEST_TYPE_AREA) { |
| | | err = true; |
| | | MA_SendExamStatus(0, -1); |
| | | } |
| | |
| | | if (DummyLightContent == NULL && type == TEST_TYPE_ROAD_DUMMY_LIGHT) { |
| | | err = true; |
| | | MA_SendExamStatus(0, -3); |
| | | } |
| | | if (type != TEST_TYPE_AREA && (RoadMapPoints.num == 0 || RoadMapPoints.point == NULL || RoadMapList.size() == 0)) { |
| | | err = true; |
| | | MA_SendExamStatus(0, -1); |
| | | } |
| | | |
| | | if (!err) { |
| | |
| | | if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) { |
| | | if (!engineStart) { |
| | | engineStart = true; |
| | | if (ReadCarStatus(SHIFT) != 'N') { |
| | | if (ReadCarStatus(GEAR) != 'N') { |
| | | // 不是空挡点火,不合格 |
| | | if (ExamType == TEST_TYPE_AREA) |
| | | AddExamFault(3, rtkTime); |