yy1717
2021-02-03 026e1750503ec74bbe181bce3ece9931c244e367
lib/src/main/cpp/driver_test.cpp
@@ -147,7 +147,6 @@
static bool engineRuning = false;
const int ENGINE_MIN_ROTATE = 200;
static bool engineStart = false;
static bool engineStartTimeout = false;
exam_param_t examParam;
@@ -157,6 +156,9 @@
static rtk_info *RtkBuffer = NULL;
static int RtkBufferNum = 0, RtkBufferIn = 0;
static pthread_mutex_t clock_mutex = PTHREAD_MUTEX_INITIALIZER;
static struct RtkTime rtkClock;
static void SetExamParamDefault(void);
static void EngineStartHold(union sigval sig);
@@ -191,6 +193,8 @@
    RtkBuffer = (rtk_info *) malloc(RTK_BUFFER_SIZE * sizeof(rtk_info));
    RtkBufferNum = RtkBufferIn = 0;
    pthread_mutex_init(&clock_mutex, NULL);
}
static void SetExamParamDefault(void)
@@ -643,8 +647,7 @@
void UpdateRTKInfo(const rtk_info *s)
{
    struct RtkTime rtkClock;
    pthread_mutex_lock(&clock_mutex);
    rtkClock.YY = s->YY;
    rtkClock.MM = s->MM;
    rtkClock.DD = s->DD;
@@ -652,6 +655,7 @@
    rtkClock.mm = s->mm;
    rtkClock.ss = s->ss;
    rtkClock.mss = s->dss;
    pthread_mutex_unlock(&clock_mutex);
    if (ExamStart) {
        ExecuteExam(&rtkClock);     // 执行无需车辆定位的项目
@@ -845,8 +849,10 @@
    if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) {
        if (!engineStart) {
            DEBUG("检测到点火");
            engineStart = true;
            if (ReadCarStatus(GEAR) != GEAR_N) {
                DEBUG("不在空挡点火");
                // 不是空挡点火,不合格
                if (ExamType == TEST_TYPE_AREA)
                    AddExamFault(10105, rtkTime);
@@ -857,16 +863,9 @@
            AppTimer_add(EngineStartHold, examParam.hold_start_key_limit_time);
        }
    } else if (engineStart) {
        DEBUG("检测到关闭点火");
        engineStart = false;
        AppTimer_delete(EngineStartHold);
    }
    if (engineStartTimeout) {
        engineStartTimeout = false;
        // 不及时松开启动开关,扣10分
        if (ExamType == TEST_TYPE_AREA)
            AddExamFault(10201, rtkTime);
    }
    if (ExamType == TEST_TYPE_ROAD_DUMMY_LIGHT) {
@@ -911,9 +910,20 @@
static void EngineStartHold(union sigval sig) {
    AppTimer_delete(EngineStartHold);
    DEBUG("点火超时");
    if (ReadCarStatus(ENGINE_START) == ENGINE_START_ACTIVE) {
        engineStartTimeout = true;
        struct RtkTime rtkTime;
        pthread_mutex_lock(&clock_mutex);
        rtkTime = rtkClock;
        pthread_mutex_unlock(&clock_mutex);
        // 不及时松开启动开关,扣10分
        if (ExamType == TEST_TYPE_AREA) {
            AddExamFault(10201, &rtkTime);
        } else if (ExamType != TEST_TYPE_ROAD_CALIBRATE) {
            AddExamFault(40207, &rtkTime);
        }
    }
}
@@ -1260,5 +1270,16 @@
void PrepareOver(int res)
{
    DEBUG("上车准备结束 %d", res);
    if (res != 0) {
        struct RtkTime rtkTime;
        pthread_mutex_lock(&clock_mutex);
        rtkTime = rtkClock;
        pthread_mutex_unlock(&clock_mutex);
        AddExamFault(40101, &rtkTime);
    }
    exam_dummy_light = 2;
}