| | |
| | | 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; |
| | |
| | | |
| | | 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); |
| | |
| | | |
| | | 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; |
| | |
| | | { |
| | | 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); |
| | | } |
| | | } |