| | |
| | | if (setup == 0) { |
| | | return true; |
| | | } else if (setup == 1) { |
| | | if (sensor.value != GEAR_N) |
| | | if (sensor.value != GEAR_N) { |
| | | oldGear = sensor.value; |
| | | |
| | | DEBUG("准备首次换挡 GEAR = %d", oldGear); |
| | | } |
| | | switch (sensor.value) { |
| | | case GEAR_1: { |
| | | expectGear = GEAR_2; |
| | |
| | | } |
| | | } else if (setup == 2) { |
| | | if (sensor.value == GEAR_N || sensor.value == oldGear) { |
| | | |
| | | DEBUG("等待首次换挡"); |
| | | } else if (sensor.value != expectGear) { |
| | | // 未按指令操作挡位,不合格 |
| | | DEBUG("未按指令操作挡位"); |
| | | DEBUG("首次换挡错误 GEAR %d 希望 %d", sensor.value, expectGear); |
| | | AddExamFault(31, rtkTime); |
| | | return false; |
| | | } else { |
| | | // 在此挡位行驶一定距离,再执行下一个 |
| | | DEBUG("首次换挡成功,下一个..."); |
| | | oldGear = expectGear; |
| | | shiftTime = *rtkTime; |
| | | setup = 3; |
| | | } |
| | | } else if (setup == 3) { |
| | | if (TimeGetDiff(&shiftTime, rtkTime) >= D_SEC(4)) { |
| | | if (TimeGetDiff(rtkTime, &shiftTime) >= D_SEC(3)) { |
| | | setup = 4; |
| | | char buff[128]; |
| | | expectGear += 0 - upDownShift; |
| | | sprintf(buff, "请%s到%d挡", upDownShift > 0 ? "减": "加", expectGear - GEAR_N); |
| | | PlayTTS(buff, NULL); |
| | | |
| | | DEBUG("%s", buff); |
| | | DEBUG("准备二次换挡 希望 %d", expectGear); |
| | | } |
| | | } |
| | | else if (setup == 4) { |
| | | if (sensor.value == GEAR_N || sensor.value == oldGear) { |
| | | |
| | | DEBUG("等待二次换挡"); |
| | | } else if (sensor.value != expectGear) { |
| | | // 未按指令操作挡位,不合格 |
| | | DEBUG("未按指令操作挡位"); |
| | | DEBUG("二次换挡错误 GEAR %d 希望 %d", sensor.value, expectGear); |
| | | AddExamFault(31, rtkTime); |
| | | return false; |
| | | } else { |
| | | // 在此挡位行驶一定距离,再执行下一个 |
| | | shiftTime = *rtkTime; |
| | | setup = 5; |
| | | DEBUG("二次换挡成功,下一个..."); |
| | | } |
| | | } else if (setup == 5) { |
| | | if (TimeGetDiff(&shiftTime, rtkTime) >= D_SEC(5)) { |
| | | if (TimeGetDiff(rtkTime, &shiftTime) >= D_SEC(3)) { |
| | | PlayTTS("加减挡位操作结束", NULL); |
| | | DEBUG("加减挡位操作结束"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if (ReadOdo() - maxMoveDistance > 120) { |
| | | // 未按指令操作挡位,不合格 |
| | | DEBUG("未按指令操作挡位"); |
| | | DEBUG("未按指令操作挡位,超时"); |
| | | AddExamFault(31, rtkTime); |
| | | return false; |
| | | } |