yy1717
2021-02-03 026e1750503ec74bbe181bce3ece9931c244e367
适配模拟灯光。
9个文件已修改
86 ■■■■ 已修改文件
lib/build.gradle 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/driver_test.cpp 47 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/master/comm_if.cpp 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/rtk_module/virtual_rtk.cpp 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/rtk_platform/platform.cpp 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/test_items2/dummy_light.cpp 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/test_items2/prepare.cpp 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/test_items2/prepare.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/src/main/cpp/test_items2/road_exam.cpp 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lib/build.gradle
@@ -15,6 +15,7 @@
        externalNativeBuild {
            cmake {
                cppFlags "-std=c++11 -frtti -fexceptions"
//                cppFlags += "-DAY_DEVICE"
            }
        }
        ndk {
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;
}
lib/src/main/cpp/master/comm_if.cpp
@@ -141,6 +141,7 @@
                pthread_mutex_unlock(&msg_mutex);
            } else {
                // 延迟重发
                DEBUG("发送失败");
                usleep(500000);
                sem_post(&sem_msg_income);
            }
lib/src/main/cpp/rtk_module/virtual_rtk.cpp
@@ -35,6 +35,7 @@
static void TcpDataCallback2(void *buffer, int length, void *p, void *context);
static void ConnectLater(union sigval sig);
static void ConnectLater2(union sigval sig);
void InitVirtualDevice(const char *domain_name, int port)
{
@@ -87,14 +88,17 @@
static void ConnectLater(union sigval sig) {
    AppTimer_delete(ConnectLater);
    if (sig.sival_int == 1) {
        if (ctp != NULL) {
            ctp->OpenTcpPort(VAddr.domain_name, VAddr.port);
        }
    } else {
}
static void ConnectLater2(union sigval sig)
{
    AppTimer_delete(ConnectLater2);
        if (ctp2 != NULL) {
            ctp2->OpenTcpPort(VAddr.domain_name, VAddr.port + 1);
        }
    }
}
@@ -155,7 +159,7 @@
        connectCnt2++;
        if (connectCnt2 < 3) {
            AppTimer_add(ConnectLater, D_SEC(3), 2);
            AppTimer_add(ConnectLater2, D_SEC(3), 2);
        }
        PlayTTS("灯光模拟器断开", NULL);
    }
lib/src/main/cpp/rtk_platform/platform.cpp
@@ -516,6 +516,7 @@
            break;
        }
        case CAR_SENSOR_UPDATE_EVT: {
            DEBUG("CAR_SENSOR_UPDATE_EVT");
            struct carSensorBrief brief;
            int x = 20;
@@ -585,6 +586,8 @@
            if (sensor.clutch == 1)
                sensor.gear = 0;
            DEBUG("电池电压 %f", sensor.cellVolt);
            UpdateSensor(&sensor);
            break;
        }
lib/src/main/cpp/test_items2/dummy_light.cpp
@@ -37,6 +37,12 @@
        for (int i = 0; i < contentNum; ++i) {
            DEBUG("灯光项目 <%d> item %d, TTS %s", i, content[i].item, content[i].tts.c_str());
            for (int j = 0; j < content[i].process.size(); ++j) {
                DEBUG("灯光过程解<%d> %d - %d", i, (content[i].process[j] >> 8) & 0xFF, content[i].process[j] & 0xFF);
            }
            for (int j = 0; j < content[i].solution.size(); ++j) {
                DEBUG("灯光最终解<%d> %d - %d", i, (content[i].solution[j] >> 8) & 0xFF, content[i].solution[j] & 0xFF);
            }
        }
        testing = true;
@@ -63,6 +69,7 @@
        for (int i = 0; i < content[question].process.size(); ++i) {
            if (ReadCarStatus((content[question].process[i]>>8) & 0xFF) == content[question].process[i] & 0xFF) {
                process.push_back(content[question].process[i]);
                DEBUG("灯光操作过程解1<%d> %d - %d", question, (content[question].process[i]>>8) & 0xFF, content[question].process[i] & 0xFF);
            }
        }
@@ -83,6 +90,7 @@
    if (testing) {
        for (int i = 0; i < content[question].process.size(); ++i) {
            if (id == ((content[question].process[i] >> 8) & 0xFF) && value == (content[question].process[i] & 0xFF)) {
                DEBUG("灯光操作过程解2<%d> %d - %d", question, (content[question].process[i]>>8) & 0xFF, content[question].process[i] & 0xFF);
                if (process.size() == 0 || process.back() != content[question].process[i]) {
                    process.push_back(content[question].process[i]);
                }
@@ -113,6 +121,7 @@
    for (int i = 0; i < content[question].solution.size(); ++i) {
        if (ReadCarStatus((content[question].solution[i]>>8)&0xFF) != (content[question].solution[i] & 0xFF)) {
            DEBUG("灯光确认不合格<%d> %d != %d", question, (content[question].solution[i]>>8) & 0xFF, content[question].solution[i] & 0xFF);
            AddExamFault(content[question].wrongCode, &currRtkTime);
            break;
        }
lib/src/main/cpp/test_items2/prepare.cpp
@@ -27,6 +27,13 @@
    DEBUG("开始上车准备");
}
void TerminatePrepare(void)
{
    exec = false;
    AppTimer_delete(PrepareTimeout);
    AppTimer_delete(PrepareTimeout2);
}
void handlePrepare(uint16_t sensor_id, int value)
{
    if (!exec)
lib/src/main/cpp/test_items2/prepare.h
@@ -8,6 +8,7 @@
#include <cstdint>
void StartPrepare(void);
void TerminatePrepare(void);
void handlePrepare(uint16_t sensor_id, int value);
void PrepareOver(int res);
lib/src/main/cpp/test_items2/road_exam.cpp
@@ -19,6 +19,7 @@
#include "car_start.h"
#include "overtake.h"
#include "change_lane.h"
#include "prepare.h"
#include <cmath>
#include <vector>
@@ -202,9 +203,7 @@
void TerminateRoadExam(void)
{
    TerminateDummyLightExam();
//    TerminateStopCarExam();
//    TerminateOperateGearExam();
//    TerminateDriveStraightExam();
    TerminatePrepare();
}
/*********************************************************************