Обновление

This commit is contained in:
cfif 2026-01-29 13:11:32 +03:00
parent 30dd1b6f4a
commit e0e3553e32
4 changed files with 618 additions and 9 deletions

View File

@ -25,19 +25,56 @@ void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger) {
osPriorityNormal);
}
void diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env) {
static uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env, void *extEnv) {
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
// Тест DTC не был выполнен в текущем цикле работы
dtc_state_error[i] = UDS_dtc_mask_testNotCompletedThisOperationCycle;
// Тест DTC не был выполнен с момента последней очистки
dtc_state_error[i] |= UDS_dtc_mask_testNotCompletedSinceLastClear;
}
return 0;
}
static uint32_t diagnostic_UDS_ReadDTCInformation_19_1(tDiagnostic *env, void *extEnv) {
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
uint32_t countDTC = 0;
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
if (dtc_state_error[i] & (~diagnosticDTC->mask)) {
++countDTC;
}
}
return countDTC;
}
static uint32_t diagnostic_UDS_ReadDTCInformation_19_2(tDiagnostic *env, void *extEnv) {
tDiagnosticDTC *diagnosticDTC = (tDiagnosticDTC *) extEnv;
uint32_t size = 0;
for (uint8_t i = 0; i < COUNT_DTC_CODE_ERROR; ++i) {
if (dtc_state_error[i] & (~diagnosticDTC->mask)) {
diagnosticDTC->dataResponse[size] = dtc_codes[i].DTCHighByte;
diagnosticDTC->dataResponse[size + 1] = dtc_codes[i].DTCMiddleByte;
diagnosticDTC->dataResponse[size + 2] = dtc_codes[i].DTCLowByte;
diagnosticDTC->dataResponse[size + 3] = dtc_state_error[i] & (~diagnosticDTC->mask);
size += 4;
}
}
return size;
}
const eDiagnosticState diagnostic_com[] = {
{diagnostic_ClearDiagnosticInformation_14, "DIAGNOSTIC_SET_UDS_ClearDiagnosticInformation_14"},
{NULL, ""},
{NULL, ""},
{diagnostic_ClearDiagnosticInformation_14, "diagnostic_ClearDiagnosticInformation_14"},
{diagnostic_UDS_ReadDTCInformation_19_1, "diagnostic_UDS_ReadDTCInformation_19_1"},
{diagnostic_UDS_ReadDTCInformation_19_2, "diagnostic_UDS_ReadDTCInformation_19_2"},
{NULL, ""},
{NULL, ""},
{NULL, ""},
@ -293,18 +330,21 @@ const eDiagnosticState diagnostic_com[] = {
{NULL, ""}
};
void setDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType) {
uint32_t SetGetDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType, void *extEnv) {
uint32_t ret = 0;
if (diagnostic_com[diagnosticType].func != NULL) {
if (osMutexAcquire(env->access, 1000) == osOK) {
diagnostic_com[diagnosticType].func(env);
ret = diagnostic_com[diagnosticType].func(env, extEnv);
osMutexRelease(env->access);
}
}
return ret;
}
static _Noreturn void Diagnostic_Thread(tDiagnostic *env) {
for (;;) {

View File

@ -11,9 +11,16 @@
#define DIAGNOSTIC_QUEUE_SIZE 10
typedef enum {
DIAGNOSTIC_SET_UDS_ClearDiagnosticInformation_14 = 0x00
DIAGNOSTIC_UDS_ClearDiagnosticInformation_14 = 0x00,
DIAGNOSTIC_UDS_ReadDTCInformation_19_1 = 0x01,
DIAGNOSTIC_UDS_ReadDTCInformation_19_2 = 0x2
} eDiagnosticType;
typedef struct {
uint8_t mask;
uint8_t *dataResponse;
} tDiagnosticDTC;
typedef struct {
osMutexId_t access;
osMessageQueueId_t queue;
@ -29,7 +36,7 @@ typedef struct {
} tDiagnostic;
typedef void (*diagnostic_func_ptr)(tDiagnostic *env);
typedef uint32_t (*diagnostic_func_ptr)(tDiagnostic *env, void *extEnv);
typedef struct {
diagnostic_func_ptr func;
@ -40,6 +47,6 @@ void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger);
void Diagnostic_StartThread(tDiagnostic *env);
void setDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType);
uint32_t SetGetDiagnosticData(tDiagnostic *env, eDiagnosticType diagnosticType, void *extEnv);
#endif //HVAC_M7_DIAGNOSTICTASK_H

View File

@ -523,4 +523,556 @@ const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_F1[256] =
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""}
};
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
//------------------------------------------------------------WRITE--------------------------------------------------------------------------------------------
const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_CF[256] = {
{&statusData.Status_CCU_Configuration, sizeof(statusData.Status_CCU_Configuration), "0xCF00 : Status_CCU_Configuration"},
{&statusData.Status_Sensor, sizeof(statusData.Status_Sensor), "0xCF01 : Status_Sensor"},
{&statusData.Status_Actuator_DoorsActuator_FB, sizeof(statusData.Status_Actuator_DoorsActuator_FB), "0xCF02 : Status_Actuator_DoorsActuator_FB"},
{&statusData.Status_Duct_Tgt, sizeof(statusData.Status_Duct_Tgt), "0xCF03 : Status_Duct_Tgt"},
{&statusData.Status_Eva_Tgt, sizeof(statusData.Status_Eva_Tgt), "0xCF04 : Status_Eva_Tgt"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{&statusData.Status_Actuator_DoorsActuator, sizeof(statusData.Status_Actuator_DoorsActuator), "0xCF50 : Status_Actuator_DoorsActuator"},
{&statusData.Status_IO, sizeof(statusData.Status_IO), "0xCF51 : Status_IO"},
{&statusData.Status_Pwm, sizeof(statusData.Status_Pwm), "0xCF52 : Status_Pwm"},
{&statusData.Status_eComp, sizeof(statusData.Status_eComp), "0xCF53 : Status_eComp"},
{&statusData.Status_External, sizeof(statusData.Status_External), "0xCF54 : Status_External"},
{&statusData.Status_EMS, sizeof(statusData.Status_EMS), "0xCF55 : Status_EMS"},
{&statusData.Status_Ionizer_Aroma, sizeof(statusData.Status_Ionizer_Aroma), "0xCF56 : Status_Ionizer_Aroma"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{&statusData.Status_Actuator_DoorsActuator, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Def), "0xCF60 : Status_Actuator_DoorsActuator.Motor_Def"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 2, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFL), "0xCF61 : Status_Actuator_DoorsActuator.Motor_Vent_SFL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 4, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFL), "0xCF62 : Status_Actuator_DoorsActuator.Motor_Vent_CFL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 6, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FL), "0xCF63 : Status_Actuator_DoorsActuator.Motor_Foot_1FL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 8, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FL), "0xCF64 : Status_Actuator_DoorsActuator.Motor_Foot_2FL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 10, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CFR), "0xCF65 : Status_Actuator_DoorsActuator.Motor_Vent_CFR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 12, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SFR), "0xCF66 : Status_Actuator_DoorsActuator.Motor_Vent_SFR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 14, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_1FR), "0xCF67 : Status_Actuator_DoorsActuator.Motor_Foot_1FR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 16, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_2FR), "0xCF68 : Status_Actuator_DoorsActuator.Motor_Foot_2FR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 18, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRL), "0xCF69 : Status_Actuator_DoorsActuator.Motor_Vent_SRL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 20, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRL), "0xCF6A : Status_Actuator_DoorsActuator.Motor_Vent_CRL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 22, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RL), "0xCF6B : Status_Actuator_DoorsActuator.Motor_Foot_RL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 24, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_CRR), "0xCF6C : Status_Actuator_DoorsActuator.Motor_Vent_CRR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 26, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Vent_SRR), "0xCF6D : Status_Actuator_DoorsActuator.Motor_Vent_SRR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 28, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Foot_RR), "0xCF6E : Status_Actuator_DoorsActuator.Motor_Foot_RR"},
{NULL, 0, ""},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 30, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FL), "0xCF70 : Status_Actuator_DoorsActuator.Motor_Temp1_FL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 32, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FL), "0xCF71 : Status_Actuator_DoorsActuator.Motor_Temp2_FL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 34, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp1_FR), "0xCF72 : Status_Actuator_DoorsActuator.Motor_Temp1_FR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 36, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp2_FR), "0xCF73 : Status_Actuator_DoorsActuator.Motor_Temp2_FR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 38, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RL), "0xCF74 : Status_Actuator_DoorsActuator.Motor_Temp_RL"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 40, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_Temp_RR), "0xCF75 : Status_Actuator_DoorsActuator.Motor_Temp_RR"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 42, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_REC), "0xCF76 : Status_Actuator_DoorsActuator.Motor_REC"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 44, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_OSA), "0xCF77 : Status_Actuator_DoorsActuator.Motor_OSA"},
{(uint8_t *)&statusData.Status_Actuator_DoorsActuator + 46, sizeof(statusData.Status_Actuator_DoorsActuator.Motor_SealingValve), "0xCF78 : Status_Actuator_DoorsActuator.Motor_SealingValve"},
{&statusData.Status_Duct_Select, sizeof(statusData.Status_Duct_Select), "0xCF79 : Status_Duct_Select"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{&statusData.Status_Activated_Cal_Num, sizeof(statusData.Status_Activated_Cal_Num), "0xCFFE : Status_Activated_Cal_Num"},
{&statusData.Internal_SW_Version, sizeof(statusData.Internal_SW_Version), "Internal_SW_Version"}
};
const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_F1[256] = {
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{statusData.Software_classification_identification, sizeof(statusData.Software_classification_identification), "0xF151 : Software classification identification"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{&statusData.Tester_Fingerprint, sizeof(statusData.Tester_Fingerprint), "0xF15A : Tester_Fingerprint"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{&statusData.Boot_SW_Fingerprint, sizeof(statusData.Boot_SW_Fingerprint), "0xF183 : Boot SW Fingerprint"},
{&statusData.Application_SW_Fingerprint, sizeof(statusData.Application_SW_Fingerprint), "0xF184 : Application SW Fingerprint"},
{NULL, 0, ""},
{&statusData.Status_Active_Diagnostic_Session, sizeof(statusData.Status_Active_Diagnostic_Session), "0xF186 : Active Diagnostic Session"},
{NULL, 0, "0xF187 : Spare Part Number"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{statusData.Serial_Number, sizeof(statusData.Serial_Number), "0xF18C : Serial Number"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{statusData.Vehicle_Identification, sizeof(statusData.Vehicle_Identification), "0xF190 : Vehicle Identification"},
{statusData.ECU_hardware_number_NAMI, sizeof(statusData.ECU_hardware_number_NAMI), "0xF191 : ECU hardware number (NAMI)"},
{statusData.ECU_hardware_number_ECU_supplier, sizeof(statusData.ECU_hardware_number_ECU_supplier), "0xF192 : ECU hardware number (ECU supplier)"},
{NULL, 0, ""},
{statusData.ECU_software_number_ECU_supplier, sizeof(statusData.ECU_software_number_ECU_supplier), "0xF194 : ECU software number (ECU supplier)"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{statusData.ECU_boot_software_identification_ECU_supplier, sizeof(statusData.ECU_boot_software_identification_ECU_supplier), "0xF1F4 : ECU boot software identification (ECU supplier)"},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""},
{NULL, 0, ""}
};

View File

@ -279,7 +279,17 @@ typedef struct {
char *desc;
} eUds_ReadDataByIdentifier_22_com;
typedef struct {
void *data;
uint8_t size;
char *desc;
} eUds_WriteDataByIdentifier_2E_com;
extern const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_CF[256];
extern const eUds_ReadDataByIdentifier_22_com uds_ReadDataByIdentifier_22_com_F1[256];
extern const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_CF[256];
extern const eUds_WriteDataByIdentifier_2E_com uds_WriteDataByIdentifier_2E_com_F1[256];
#endif //HVAC_M7_STATUSDATA_H