From 2cfc22e1ea5140861499ee5b7142766fb8f754f7 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期二, 29 九月 2020 15:53:20 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/rtk_platform/platform.cpp |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/lib/src/main/cpp/rtk_platform/platform.cpp b/lib/src/main/cpp/rtk_platform/platform.cpp
index 6060868..a3b0098 100644
--- a/lib/src/main/cpp/rtk_platform/platform.cpp
+++ b/lib/src/main/cpp/rtk_platform/platform.cpp
@@ -63,6 +63,13 @@
     void *data;
 };
 
+struct default_mcu_rom_t {
+    int more;
+    char verCode[70];
+    uint8_t *rom;
+    int length;
+} defaultMcuRom;
+
 static struct event_queue_t {
     struct event_t event;
     struct event_queue_t *next;
@@ -174,6 +181,7 @@
 
     memset(&gbf, 0, sizeof(gbf));
     memset(&rbf, 0, sizeof(rbf));
+    memset(&defaultMcuRom, 0, sizeof(defaultMcuRom));
 
     pthread_mutex_init(&platform_tx_mutex, NULL);
     pthread_mutex_init(&events_mutex, NULL);
@@ -420,7 +428,31 @@
 
         MA_SendMcuBrief(&brief);
 
+        if (defaultMcuRom.more > 0) {
+            char str[64] = {0};
+
+            memcpy(str, data, 32);
+
+            vector<string> ver = split(str, "_");
+
+            if (strlen(defaultMcuRom.verCode) > 0 && ver.size() >= 4 && strcmp(defaultMcuRom.verCode, ver[3].c_str()) != 0 && defaultMcuRom.rom != NULL) {
+                UploadDfuFile(defaultMcuRom.rom, defaultMcuRom.length);
+                delete []defaultMcuRom.rom;
+                defaultMcuRom.rom = NULL;
+            }
+            defaultMcuRom.more = 0;
+        }
 //        UpdateSensor(brief.gpio, brief.speed, brief.engine);
+    }
+    if (events & CAN_UPDATE_EVT) {
+        struct canBrief brief;
+
+        brief.gpio = BUILD_UINT16(data[1], data[0]);
+        brief.rpm = BUILD_UINT16(data[3], data[2]);
+        brief.speed = (double) BUILD_UINT16(data[5], data[4]) / 10.0;
+        brief.voltage = (double) BUILD_UINT16(data[7], data[6]) / 10.0;
+
+        MA_SendCanStatus(&brief);
     }
     if (events & CAR_SENSOR_UPDATE_EVT) {
         struct carSensorBrief brief;
@@ -735,3 +767,19 @@
 {
     SendRTKStop();
 }
+
+void LoadDefaultMcuRom(const char *verCode, const uint8_t *rom, int length)
+{
+    DEBUG("鍐呯疆鍗曠墖鏈簉om %s len %ld", verCode, length);
+    strcpy(defaultMcuRom.verCode, verCode);
+
+    if (length > 0 && rom != NULL) {
+        defaultMcuRom.length = length;
+        if (defaultMcuRom.rom != NULL)
+            delete []defaultMcuRom.rom;
+
+        defaultMcuRom.more = 1;
+        defaultMcuRom.rom = new uint8_t[length];
+        memcpy(defaultMcuRom.rom, rom, length);
+    }
+}

--
Gitblit v1.8.0