fctom1215
2020-08-29 d05c25aa4823e9d2aa812e9c0e3d1d66bb9861dd
lib/src/main/cpp/test_items2/operate_gear.cpp
@@ -47,9 +47,10 @@
    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;
@@ -89,49 +90,56 @@
        }
    } 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;
    }