From e0e3553e3257b3dc0d5cdbb4d07847c9b05f5089 Mon Sep 17 00:00:00 2001 From: cfif Date: Thu, 29 Jan 2026 13:11:32 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DiagnosticTask.c | 52 ++++- DiagnosticTask.h | 13 +- StatusData.c | 552 +++++++++++++++++++++++++++++++++++++++++++++++ StatusData.h | 10 + 4 files changed, 618 insertions(+), 9 deletions(-) diff --git a/DiagnosticTask.c b/DiagnosticTask.c index 94d6159..ef32a08 100644 --- a/DiagnosticTask.c +++ b/DiagnosticTask.c @@ -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 (;;) { diff --git a/DiagnosticTask.h b/DiagnosticTask.h index 8c3a4aa..ad0993f 100644 --- a/DiagnosticTask.h +++ b/DiagnosticTask.h @@ -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 diff --git a/StatusData.c b/StatusData.c index 5983a5b..1687aab 100644 --- a/StatusData.c +++ b/StatusData.c @@ -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, ""} }; \ No newline at end of file diff --git a/StatusData.h b/StatusData.h index 59714e0..01e4bda 100644 --- a/StatusData.h +++ b/StatusData.h @@ -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