From 4c550a479530c4c1b2569b194dae2be6afb66088 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期五, 13 三月 2020 16:22:01 +0800
Subject: [PATCH] 更新地图

---
 lib/src/main/cpp/driver_test.cpp            |    2 
 lib/src/main/cpp/test_common/car_sensor.h   |   35 +++++++++++
 lib/src/main/cpp/test_common/car_sensor.cpp |  117 +++++++++++++++++++++++++++++++++++++++
 3 files changed, 153 insertions(+), 1 deletions(-)

diff --git a/lib/src/main/cpp/driver_test.cpp b/lib/src/main/cpp/driver_test.cpp
index 80ccb06..1429252 100644
--- a/lib/src/main/cpp/driver_test.cpp
+++ b/lib/src/main/cpp/driver_test.cpp
@@ -437,7 +437,7 @@
                 RtkBuffer[index].mm, RtkBuffer[index].ss, RtkBuffer[index].dss);
 
         brief.qf = RtkBuffer[index].qf;
-        brief.map_id = 867;//GetMapId(CurrExamMapIndex, MapList, MapNum);
+        brief.map_id = GetMapId(CurrExamMapIndex, MapList, MapNum);
         brief.move = move;
         brief.speed = speed * 3.6;
         brief.heading = RtkBuffer[index].heading;
diff --git a/lib/src/main/cpp/test_common/car_sensor.cpp b/lib/src/main/cpp/test_common/car_sensor.cpp
new file mode 100644
index 0000000..73afdc4
--- /dev/null
+++ b/lib/src/main/cpp/test_common/car_sensor.cpp
@@ -0,0 +1,117 @@
+//
+// Created by fctom on 2020/2/13.
+//
+
+#include <pthread.h>
+#include "car_sensor.h"
+#include "../driver_test.h"
+#include "../defs.h"
+#include "../common/apptimer.h"
+#include "../jni_log.h"
+
+#define DEBUG(fmt, args...)     LOGD("<car_sensor> <%s>: " fmt, __func__, ##args)
+
+#define MAX_SENSOR_NUM          32
+
+static uint16_t gpioStore = 0;
+static int engine_rpm = 0;
+
+static struct sensor_cfg {
+    int gpioId;
+    int funId;
+    int validLvl;
+    int currValue;
+} SensorConfig[MAX_SENSOR_NUM];
+static int SensorNum = 0;
+
+static pthread_mutex_t sonser_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+void CarSensorInit(void)
+{
+    gpioStore = 0;
+    SensorNum = 0;
+    memset(SensorConfig, 0, sizeof(SensorConfig));
+
+    pthread_mutex_init(&sonser_mutex, NULL);
+}
+
+void SetSensorCfg(int (*sensor)[3], int sensorNum)
+{
+    DEBUG("鍔犲叆浼犳劅鍣ㄩ厤缃� sensorNum %d", sensorNum);
+
+    pthread_mutex_lock(&sonser_mutex);
+
+    SensorNum = sensorNum;
+    for (int i = 0; i < sensorNum; ++i) {
+        SensorConfig[i].gpioId = sensor[i][0];
+        SensorConfig[i].funId = sensor[i][1];
+        if (sensor[i][2] > 0) {
+            SensorConfig[i].validLvl = 1;
+        } else {
+            SensorConfig[i].validLvl = 0;
+        }
+        if (gpioStore & BV(SensorConfig[i].gpioId)) {
+            SensorConfig[i].currValue = 1;
+        } else {
+            SensorConfig[i].currValue = 0;
+        }
+    }
+
+    pthread_mutex_unlock(&sonser_mutex);
+}
+
+void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t engine)
+{
+    uint16_t chg = 0;
+
+    int reportSensor[MAX_SENSOR_NUM];
+    int reportValue[MAX_SENSOR_NUM];
+    int reportNum = 0;
+
+    pthread_mutex_lock(&sonser_mutex);
+
+    chg = gpioStore^gpio;
+    gpioStore = gpio;
+    engine_rpm = engine;
+
+    for (int i = 0; i < SensorNum; ++i) {
+        if (chg & BV(SensorConfig[i].gpioId)) {
+            if (gpio & BV(SensorConfig[i].gpioId)) {
+                SensorConfig[i].currValue = 1;
+            } else {
+                SensorConfig[i].currValue = 0;
+            }
+
+            reportSensor[reportNum] =  SensorConfig[i].funId;
+            reportValue[reportNum] =  (SensorConfig[i].validLvl == SensorConfig[i].currValue)?1:0;
+            reportNum++;
+        }
+    }
+
+    reportSensor[reportNum] = SENSOR_ENGINE_RPM;
+    reportValue[reportNum] = engine;
+    reportNum++;
+
+    pthread_mutex_unlock(&sonser_mutex);
+
+    SensorChanged(reportSensor, reportValue, reportNum);
+}
+
+int ReadSensor(uint16_t sensor_id)
+{
+    int ret = -1;
+
+    pthread_mutex_lock(&sonser_mutex);
+    for (int i = 0; i < SensorNum; ++i) {
+        if (sensor_id == SensorConfig[i].funId) {
+            ret = (SensorConfig[i].validLvl == SensorConfig[i].currValue)?1:0;
+        }
+    }
+
+    if (sensor_id == SENSOR_ENGINE_RPM) {
+        ret = engine_rpm;
+    }
+    pthread_mutex_unlock(&sonser_mutex);
+
+    return ret;
+}
diff --git a/lib/src/main/cpp/test_common/car_sensor.h b/lib/src/main/cpp/test_common/car_sensor.h
new file mode 100644
index 0000000..ef94afd
--- /dev/null
+++ b/lib/src/main/cpp/test_common/car_sensor.h
@@ -0,0 +1,35 @@
+//
+// Created by fctom on 2020/2/13.
+//
+
+#ifndef MYAPPLICATION2_COMM_TEST_H
+#define MYAPPLICATION2_COMM_TEST_H
+
+#include <cstdint>
+
+enum {
+    SENSOR_SEATBELT,
+    SENSOR_LEFT_TURN_SIGNAL,
+    SENSOR_RIGHT_TURN_SIGNAL,
+    SENSOR_HANDBREAK,
+    SENSOR_BREAK,
+    SENSOR_LIGHT,
+    SENSOR_FAR_LIGHT,
+    SENSOR_DOOR,
+    SENSOR_SHIFT_N,
+    SENSOR_SHIFT_1,
+    SENSOR_SHIFT_2,
+    SENSOR_SHIFT_3,
+    SENSOR_SHIFT_4,
+    SENSOR_SHIFT_5,
+    SENSOR_SHIFT_R,
+    SENSOR_ENGINE_START,
+    SENSOR_ENGINE_RPM
+};
+
+void CarSensorInit(void);
+int ReadSensor(uint16_t sensor_id);
+void UpdateSensor(uint16_t gpio, uint16_t speed, uint16_t engine);
+void SetSensorCfg(int (*sensor)[3], int sensorNum);
+
+#endif //MYAPPLICATION2_COMM_TEST_H

--
Gitblit v1.8.0