HVAC_M7_MONO/MODULES/HVAC_M7_DataNonVolatile/VIN_DATA.c

77 lines
2.1 KiB
C

//
// Created by cfif on 31.08.2026.
//
#include <stdint.h>
#include "VIN_DATA.h"
static uint8_t getVehicleTypeFromVin(const char* vin) {
// Преобразуем два байта в 16-битное значение
uint16_t typeCode = ((uint16_t)(unsigned char)vin[3] << 8) | (unsigned char)vin[4];
// Определяем Vehicle TYPE по коду
switch (typeCode) {
// Vehicle TYPE = 1
case VEHICLE_SEDAN_NON_ARMORED:
case VEHICLE_CABRIO:
case VEHICLE_SEDAN_4X2:
case VEHICLE_SEDAN_LONG:
case VEHICLE_CABRIO_SHOW:
return 1;
// Vehicle TYPE = 2
case VEHICLE_SEDAN_ARMORED:
case VEHICLE_SEDAN_LONG_ARMORED:
return 2;
// Vehicle TYPE = 3
case VEHICLE_LIMO_ARMORED_V12:
case VEHICLE_LIMO_ARMORED_V8:
case VEHICLE_LIMO_ARMORED_V8_CIVIL:
return 3;
// Vehicle TYPE = 4
case VEHICLE_SUV_NON_ARMORED:
case VEHICLE_SUV_ARMORED:
return 4;
// Vehicle TYPE = 5
case VEHICLE_MPV_NON_ARMORED_4SEAT:
case VEHICLE_MPV_ARMORED_8SEAT:
case VEHICLE_MPV_NON_ARMORED_9SEAT:
case VEHICLE_MPV_ARMORED_9SEAT:
case VEHICLE_MPV_ARMORED_4SEAT:
case VEHICLE_MPV_ORBITA:
case VEHICLE_MPV_TABLETKA:
return 5;
default:
return 0; // Неизвестный тип
}
}
uint8_t setVehicleTypeFromVinToCalib(const char* vin) {
uint8_t Vehicle_TYPE = getVehicleTypeFromVin(vin);
// Определяем Vehicle TYPE по коду
switch (Vehicle_TYPE) {
case 1:
Rs_Cal_0_SedanL();
return 1;
case 2:
Rs_Cal_1_SedanH();
return 2;
case 3:
Rs_Cal_2_Limo();
return 3;
case 4:
Rs_Cal_3_Suv();
return 4;
case 5:
Rs_Cal_4_Mpv();
return 5;
default:
Rs_Cal_0_SedanL();
return 0; // Неизвестный тип
}
}