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