yy1717
2020-09-29 2cfc22e1ea5140861499ee5b7142766fb8f754f7
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("内置单片机rom %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);
    }
}