diff --git a/APP/main.c b/APP/main.c index 503f49f..b13af6f 100644 --- a/APP/main.c +++ b/APP/main.c @@ -206,9 +206,11 @@ int main(int argc, char *argv[]) { if (cJSON_IsString(idJS) && (idJS->valuestring != NULL)) { printf("id (JSON): %s\n", idJS->valuestring); - char VIN[17] = {0}; + char VIN[18] = {0}; - memcpy(VIN, idJS->valuestring, 5); + memset(VIN, '0', 17); + + memcpy(&VIN[17 - 5], idJS->valuestring, 5); // memcpy(&VIN[5], "1111111111", 10); EraGlonassMsdSetVIN(&msd, VIN, sizeof(VIN)); @@ -221,15 +223,22 @@ int main(int argc, char *argv[]) { return 1; } - cJSON_Delete(json); - uint8_t msdEncoded[512] = {0}; - size_t msdEncodedSize = EraGlonassMsdEncode(&msd, MSD_V_2, msdEncoded); + + msdEncoded[0] = 0; + msdEncoded[1] = 15; + memcpy(&msdEncoded[2], "000000000000000", 15); + msdEncoded[17] = strlen(phoneJS->valuestring); + memcpy(&msdEncoded[18], phoneJS->valuestring, strlen(phoneJS->valuestring)); + + msdEncoded[18 + strlen(phoneJS->valuestring)] = 0; + size_t msdEncodedSize = EraGlonassMsdEncode(&msd, MSD_V_2, &msdEncoded[20 + strlen(phoneJS->valuestring)]); + msdEncoded[19 + strlen(phoneJS->valuestring)] = msdEncodedSize; char egtsHexStr[1024] = {0}; size_t egtsHexStrLen = 0; - vAsciiStringAddBytesAsHex(egtsHexStr, &egtsHexStrLen, msdEncoded, msdEncodedSize); + vAsciiStringAddBytesAsHex(egtsHexStr, &egtsHexStrLen, msdEncoded, 20 + strlen(phoneJS->valuestring) + msdEncodedSize); FILE *output_file = fopen(argv[2], "w"); @@ -252,6 +261,9 @@ int main(int argc, char *argv[]) { fclose(output_file); fflush(stdout); + + cJSON_Delete(json); + return 0;