Добавлены два интерфейса ccu_candb_error_missing_rx_t ccu_candb_time_missing_rx_t
This commit is contained in:
parent
571e821ddf
commit
0a36a55574
|
|
@ -10,7 +10,8 @@
|
||||||
#ifdef __DEF_CCU_CANDB__
|
#ifdef __DEF_CCU_CANDB__
|
||||||
|
|
||||||
ccu_candb_rx_t ccu_candb_rx;
|
ccu_candb_rx_t ccu_candb_rx;
|
||||||
ccu_candb_error_rx_t ccu_candb_error_rx;
|
ccu_candb_error_missing_rx_t ccu_candb_error_missing_rx;
|
||||||
|
ccu_candb_time_missing_rx_t ccu_candb_time_missing_rx;
|
||||||
ccu_candb_tx_t ccu_candb_tx;
|
ccu_candb_tx_t ccu_candb_tx;
|
||||||
|
|
||||||
#endif // __DEF_CCU_CANDB__
|
#endif // __DEF_CCU_CANDB__
|
||||||
|
|
|
||||||
|
|
@ -79,9 +79,42 @@ typedef struct
|
||||||
uint8_t FIU_CCU1;
|
uint8_t FIU_CCU1;
|
||||||
uint8_t FIU_CCU2;
|
uint8_t FIU_CCU2;
|
||||||
uint8_t FIU_CCU3;
|
uint8_t FIU_CCU3;
|
||||||
uint8_t Diag_To_CCU;
|
} ccu_candb_error_missing_rx_t;
|
||||||
uint8_t Diag_Functional;
|
|
||||||
} ccu_candb_error_rx_t;
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t ESC_04;
|
||||||
|
uint32_t EMS_Veh;
|
||||||
|
uint32_t BCM_Powertrain;
|
||||||
|
uint32_t EMS_Veh_02;
|
||||||
|
uint32_t BCM_EEM;
|
||||||
|
uint32_t DMFR_Msg1;
|
||||||
|
uint32_t DMFL_Msg1;
|
||||||
|
uint32_t TM_Stat;
|
||||||
|
uint32_t TM_CP;
|
||||||
|
uint32_t HVC_CCU_Status_Msg;
|
||||||
|
uint32_t BCM_VEH_STATE;
|
||||||
|
uint32_t EMS_HVC_Req_Msg;
|
||||||
|
uint32_t HVC_Err_Status_Msg;
|
||||||
|
uint32_t BCM_CLIMATIC_DATA;
|
||||||
|
uint32_t VCU_CCU_Req;
|
||||||
|
uint32_t ESC_08;
|
||||||
|
uint32_t SMFL_status;
|
||||||
|
uint32_t SMFR_status;
|
||||||
|
uint32_t SMRL_status;
|
||||||
|
uint32_t SMRR_status;
|
||||||
|
uint32_t SDM_Cmd;
|
||||||
|
uint32_t VEH_VIN;
|
||||||
|
uint32_t OCUFL_MSG;
|
||||||
|
uint32_t OCUFR_MSG;
|
||||||
|
uint32_t OCURL_MSG;
|
||||||
|
uint32_t OCURR_MSG;
|
||||||
|
uint32_t DW_STATE;
|
||||||
|
uint32_t FIU_CCU1;
|
||||||
|
uint32_t FIU_CCU2;
|
||||||
|
uint32_t FIU_CCU3;
|
||||||
|
} ccu_candb_time_missing_rx_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
|
@ -104,7 +137,8 @@ uint32_t ccu_candb_Receive(ccu_candb_rx_t* m, const uint8_t* d, uint32_t msgid,
|
||||||
#ifdef __DEF_CCU_CANDB__
|
#ifdef __DEF_CCU_CANDB__
|
||||||
|
|
||||||
extern ccu_candb_rx_t ccu_candb_rx;
|
extern ccu_candb_rx_t ccu_candb_rx;
|
||||||
extern ccu_candb_error_rx_t ccu_candb_error_rx;
|
extern ccu_candb_error_missing_rx_t ccu_candb_error_missing_rx;
|
||||||
|
extern ccu_candb_time_missing_rx_t ccu_candb_time_missing_rx;
|
||||||
extern ccu_candb_tx_t ccu_candb_tx;
|
extern ccu_candb_tx_t ccu_candb_tx;
|
||||||
|
|
||||||
#endif // __DEF_CCU_CANDB__
|
#endif // __DEF_CCU_CANDB__
|
||||||
|
|
|
||||||
|
|
@ -17,40 +17,41 @@ typedef struct {
|
||||||
uint32_t can_id;
|
uint32_t can_id;
|
||||||
FrameMonitor_t *monitor;
|
FrameMonitor_t *monitor;
|
||||||
uint8_t *error_flag;
|
uint8_t *error_flag;
|
||||||
|
uint32_t *time_flag;
|
||||||
} CAN_MonitorEntry_t;
|
} CAN_MonitorEntry_t;
|
||||||
|
|
||||||
// Таблица всех мониторов
|
// Таблица всех мониторов
|
||||||
static const CAN_MonitorEntry_t g_can_monitors[] = {
|
static const CAN_MonitorEntry_t g_can_monitors[] = {
|
||||||
{ESC_04_CANID, &ccu_candb_rx.ESC_04.mon1, &ccu_candb_error_rx.ESC_04},
|
{ESC_04_CANID, &ccu_candb_rx.ESC_04.mon1, &ccu_candb_error_missing_rx.ESC_04, &ccu_candb_time_missing_rx.ESC_04},
|
||||||
{EMS_Veh_CANID, &ccu_candb_rx.EMS_Veh.mon1, &ccu_candb_error_rx.EMS_Veh},
|
{EMS_Veh_CANID, &ccu_candb_rx.EMS_Veh.mon1, &ccu_candb_error_missing_rx.EMS_Veh, &ccu_candb_time_missing_rx.EMS_Veh},
|
||||||
{BCM_Powertrain_CANID, &ccu_candb_rx.BCM_Powertrain.mon1, &ccu_candb_error_rx.BCM_Powertrain},
|
{BCM_Powertrain_CANID, &ccu_candb_rx.BCM_Powertrain.mon1, &ccu_candb_error_missing_rx.BCM_Powertrain, &ccu_candb_time_missing_rx.BCM_Powertrain},
|
||||||
{EMS_Veh_02_CANID, &ccu_candb_rx.EMS_Veh_02.mon1, &ccu_candb_error_rx.EMS_Veh_02},
|
{EMS_Veh_02_CANID, &ccu_candb_rx.EMS_Veh_02.mon1, &ccu_candb_error_missing_rx.EMS_Veh_02, &ccu_candb_time_missing_rx.EMS_Veh_02},
|
||||||
{BCM_EEM_CANID, &ccu_candb_rx.BCM_EEM.mon1, &ccu_candb_error_rx.BCM_EEM},
|
{BCM_EEM_CANID, &ccu_candb_rx.BCM_EEM.mon1, &ccu_candb_error_missing_rx.BCM_EEM, &ccu_candb_time_missing_rx.BCM_EEM},
|
||||||
{DMFR_Msg1_CANID, &ccu_candb_rx.DMFR_Msg1.mon1, &ccu_candb_error_rx.DMFR_Msg1},
|
{DMFR_Msg1_CANID, &ccu_candb_rx.DMFR_Msg1.mon1, &ccu_candb_error_missing_rx.DMFR_Msg1, &ccu_candb_time_missing_rx.DMFR_Msg1},
|
||||||
{DMFL_Msg1_CANID, &ccu_candb_rx.DMFL_Msg1.mon1, &ccu_candb_error_rx.DMFL_Msg1},
|
{DMFL_Msg1_CANID, &ccu_candb_rx.DMFL_Msg1.mon1, &ccu_candb_error_missing_rx.DMFL_Msg1, &ccu_candb_time_missing_rx.DMFL_Msg1},
|
||||||
{TM_Stat_CANID, &ccu_candb_rx.TM_Stat.mon1, &ccu_candb_error_rx.TM_Stat},
|
{TM_Stat_CANID, &ccu_candb_rx.TM_Stat.mon1, &ccu_candb_error_missing_rx.TM_Stat, &ccu_candb_time_missing_rx.TM_Stat},
|
||||||
{TM_CP_CANID, &ccu_candb_rx.TM_CP.mon1, &ccu_candb_error_rx.TM_CP},
|
{TM_CP_CANID, &ccu_candb_rx.TM_CP.mon1, &ccu_candb_error_missing_rx.TM_CP, &ccu_candb_time_missing_rx.TM_CP},
|
||||||
{HVC_CCU_Status_Msg_CANID, &ccu_candb_rx.HVC_CCU_Status_Msg.mon1, &ccu_candb_error_rx.HVC_CCU_Status_Msg},
|
{HVC_CCU_Status_Msg_CANID, &ccu_candb_rx.HVC_CCU_Status_Msg.mon1, &ccu_candb_error_missing_rx.HVC_CCU_Status_Msg, &ccu_candb_time_missing_rx.HVC_CCU_Status_Msg},
|
||||||
{BCM_VEH_STATE_CANID, &ccu_candb_rx.BCM_VEH_STATE.mon1, &ccu_candb_error_rx.BCM_VEH_STATE},
|
{BCM_VEH_STATE_CANID, &ccu_candb_rx.BCM_VEH_STATE.mon1, &ccu_candb_error_missing_rx.BCM_VEH_STATE, &ccu_candb_time_missing_rx.BCM_VEH_STATE},
|
||||||
{EMS_HVC_Req_Msg_CANID, &ccu_candb_rx.EMS_HVC_Req_Msg.mon1, &ccu_candb_error_rx.EMS_HVC_Req_Msg},
|
{EMS_HVC_Req_Msg_CANID, &ccu_candb_rx.EMS_HVC_Req_Msg.mon1, &ccu_candb_error_missing_rx.EMS_HVC_Req_Msg, &ccu_candb_time_missing_rx.EMS_HVC_Req_Msg},
|
||||||
{HVC_Err_Status_Msg_CANID, &ccu_candb_rx.HVC_Err_Status_Msg.mon1, &ccu_candb_error_rx.HVC_Err_Status_Msg},
|
{HVC_Err_Status_Msg_CANID, &ccu_candb_rx.HVC_Err_Status_Msg.mon1, &ccu_candb_error_missing_rx.HVC_Err_Status_Msg, &ccu_candb_time_missing_rx.HVC_Err_Status_Msg},
|
||||||
{BCM_CLIMATIC_DATA_CANID, &ccu_candb_rx.BCM_CLIMATIC_DATA.mon1, &ccu_candb_error_rx.BCM_CLIMATIC_DATA},
|
{BCM_CLIMATIC_DATA_CANID, &ccu_candb_rx.BCM_CLIMATIC_DATA.mon1, &ccu_candb_error_missing_rx.BCM_CLIMATIC_DATA, &ccu_candb_time_missing_rx.BCM_CLIMATIC_DATA},
|
||||||
{VCU_CCU_Req_CANID, &ccu_candb_rx.VCU_CCU_Req.mon1, &ccu_candb_error_rx.VCU_CCU_Req},
|
{VCU_CCU_Req_CANID, &ccu_candb_rx.VCU_CCU_Req.mon1, &ccu_candb_error_missing_rx.VCU_CCU_Req, &ccu_candb_time_missing_rx.VCU_CCU_Req},
|
||||||
{ESC_08_CANID, &ccu_candb_rx.ESC_08.mon1, &ccu_candb_error_rx.ESC_08},
|
{ESC_08_CANID, &ccu_candb_rx.ESC_08.mon1, &ccu_candb_error_missing_rx.ESC_08, &ccu_candb_time_missing_rx.ESC_08},
|
||||||
{SMFL_status_CANID, &ccu_candb_rx.SMFL_status.mon1, &ccu_candb_error_rx.SMFL_status},
|
{SMFL_status_CANID, &ccu_candb_rx.SMFL_status.mon1, &ccu_candb_error_missing_rx.SMFL_status, &ccu_candb_time_missing_rx.SMFL_status},
|
||||||
{SMFR_status_CANID, &ccu_candb_rx.SMFR_status.mon1, &ccu_candb_error_rx.SMFR_status},
|
{SMFR_status_CANID, &ccu_candb_rx.SMFR_status.mon1, &ccu_candb_error_missing_rx.SMFR_status, &ccu_candb_time_missing_rx.SMFR_status},
|
||||||
{SMRL_status_CANID, &ccu_candb_rx.SMRL_status.mon1, &ccu_candb_error_rx.SMRL_status},
|
{SMRL_status_CANID, &ccu_candb_rx.SMRL_status.mon1, &ccu_candb_error_missing_rx.SMRL_status, &ccu_candb_time_missing_rx.SMRL_status},
|
||||||
{SMRR_status_CANID, &ccu_candb_rx.SMRR_status.mon1, &ccu_candb_error_rx.SMRR_status},
|
{SMRR_status_CANID, &ccu_candb_rx.SMRR_status.mon1, &ccu_candb_error_missing_rx.SMRR_status, &ccu_candb_time_missing_rx.SMRR_status},
|
||||||
{SDM_Cmd_CANID, &ccu_candb_rx.SDM_Cmd.mon1, &ccu_candb_error_rx.SDM_Cmd},
|
{SDM_Cmd_CANID, &ccu_candb_rx.SDM_Cmd.mon1, &ccu_candb_error_missing_rx.SDM_Cmd, &ccu_candb_time_missing_rx.SDM_Cmd},
|
||||||
{VEH_VIN_CANID, &ccu_candb_rx.VEH_VIN.mon1, &ccu_candb_error_rx.VEH_VIN},
|
{VEH_VIN_CANID, &ccu_candb_rx.VEH_VIN.mon1, &ccu_candb_error_missing_rx.VEH_VIN, &ccu_candb_time_missing_rx.VEH_VIN},
|
||||||
{OCUFL_MSG_CANID, &ccu_candb_rx.OCUFL_MSG.mon1, &ccu_candb_error_rx.OCUFL_MSG},
|
{OCUFL_MSG_CANID, &ccu_candb_rx.OCUFL_MSG.mon1, &ccu_candb_error_missing_rx.OCUFL_MSG, &ccu_candb_time_missing_rx.OCUFL_MSG},
|
||||||
{OCUFR_MSG_CANID, &ccu_candb_rx.OCUFR_MSG.mon1, &ccu_candb_error_rx.OCUFR_MSG},
|
{OCUFR_MSG_CANID, &ccu_candb_rx.OCUFR_MSG.mon1, &ccu_candb_error_missing_rx.OCUFR_MSG, &ccu_candb_time_missing_rx.OCUFR_MSG},
|
||||||
{OCURL_MSG_CANID, &ccu_candb_rx.OCURL_MSG.mon1, &ccu_candb_error_rx.OCURL_MSG},
|
{OCURL_MSG_CANID, &ccu_candb_rx.OCURL_MSG.mon1, &ccu_candb_error_missing_rx.OCURL_MSG, &ccu_candb_time_missing_rx.OCURL_MSG},
|
||||||
{OCURR_MSG_CANID, &ccu_candb_rx.OCURR_MSG.mon1, &ccu_candb_error_rx.OCURR_MSG},
|
{OCURR_MSG_CANID, &ccu_candb_rx.OCURR_MSG.mon1, &ccu_candb_error_missing_rx.OCURR_MSG, &ccu_candb_time_missing_rx.OCURR_MSG},
|
||||||
{DW_STATE_CANID, &ccu_candb_rx.DW_STATE.mon1, &ccu_candb_error_rx.DW_STATE},
|
{DW_STATE_CANID, &ccu_candb_rx.DW_STATE.mon1, &ccu_candb_error_missing_rx.DW_STATE, &ccu_candb_time_missing_rx.DW_STATE},
|
||||||
{FIU_CCU1_CANID, &ccu_candb_rx.FIU_CCU1.mon1, &ccu_candb_error_rx.FIU_CCU1},
|
{FIU_CCU1_CANID, &ccu_candb_rx.FIU_CCU1.mon1, &ccu_candb_error_missing_rx.FIU_CCU1, &ccu_candb_time_missing_rx.FIU_CCU1},
|
||||||
{FIU_CCU2_CANID, &ccu_candb_rx.FIU_CCU2.mon1, &ccu_candb_error_rx.FIU_CCU2},
|
{FIU_CCU2_CANID, &ccu_candb_rx.FIU_CCU2.mon1, &ccu_candb_error_missing_rx.FIU_CCU2, &ccu_candb_time_missing_rx.FIU_CCU2},
|
||||||
{FIU_CCU3_CANID, &ccu_candb_rx.FIU_CCU3.mon1, &ccu_candb_error_rx.FIU_CCU3},
|
{FIU_CCU3_CANID, &ccu_candb_rx.FIU_CCU3.mon1, &ccu_candb_error_missing_rx.FIU_CCU3, &ccu_candb_time_missing_rx.FIU_CCU3},
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CAN_MONITOR_COUNT (sizeof(g_can_monitors) / sizeof(g_can_monitors[0]))
|
#define CAN_MONITOR_COUNT (sizeof(g_can_monitors) / sizeof(g_can_monitors[0]))
|
||||||
|
|
@ -86,6 +87,10 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env,
|
||||||
env->ccu_candb_rx_EMS_HVC_Req_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.EMS_HVC_Req_Msg), NULL);
|
env->ccu_candb_rx_EMS_HVC_Req_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.EMS_HVC_Req_Msg), NULL);
|
||||||
env->ccu_candb_rx_HVC_Err_Status_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.HVC_Err_Status_Msg), NULL);
|
env->ccu_candb_rx_HVC_Err_Status_Msg = osMessageQueueNew(1, sizeof(ccu_candb_rx.HVC_Err_Status_Msg), NULL);
|
||||||
*/
|
*/
|
||||||
|
env->ccu_candb_error_missing_rx = osMessageQueueNew(1, sizeof(ccu_candb_error_missing_rx_t), NULL);
|
||||||
|
env->ccu_candb_time_missing_rx = osMessageQueueNew(1, sizeof(ccu_candb_time_missing_rx_t), NULL);
|
||||||
|
|
||||||
|
|
||||||
env->ccu_candb_rx_LOCAL_HVAC_VIN = osMessageQueueNew(1, 17, NULL);
|
env->ccu_candb_rx_LOCAL_HVAC_VIN = osMessageQueueNew(1, 17, NULL);
|
||||||
env->ccu_candb_rx_LOCAL_HVAC_UDS_VIN = osMessageQueueNew(1, 17, NULL);
|
env->ccu_candb_rx_LOCAL_HVAC_UDS_VIN = osMessageQueueNew(1, 17, NULL);
|
||||||
env->ccu_candb_rx_TM_CP = osMessageQueueNew(1, sizeof(rtDW.TM_CP_model), NULL);
|
env->ccu_candb_rx_TM_CP = osMessageQueueNew(1, sizeof(rtDW.TM_CP_model), NULL);
|
||||||
|
|
@ -121,6 +126,9 @@ static void CheckAllCANMonitors(void) {
|
||||||
|
|
||||||
// Сохраняем ошибку
|
// Сохраняем ошибку
|
||||||
*(g_can_monitors[i].error_flag) = error;
|
*(g_can_monitors[i].error_flag) = error;
|
||||||
|
|
||||||
|
// Сохраняем время
|
||||||
|
*(g_can_monitors[i].time_flag) = mon->last_cycle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,7 +138,22 @@ static void set_CanSpamReceiver(tCanSpamReceiver *env, uint32_t recid) {
|
||||||
// ВСЕГДА проверяем все мониторы на таймаут
|
// ВСЕГДА проверяем все мониторы на таймаут
|
||||||
CheckAllCANMonitors();
|
CheckAllCANMonitors();
|
||||||
|
|
||||||
uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP);
|
|
||||||
|
uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_error_missing_rx);
|
||||||
|
if (countQueue_ccu_candb_rx) {
|
||||||
|
status = osMessageQueuePut(env->ccu_candb_error_missing_rx, &ccu_candb_error_missing_rx, 0, 0U);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_time_missing_rx);
|
||||||
|
if (countQueue_ccu_candb_rx) {
|
||||||
|
status = osMessageQueuePut(env->ccu_candb_time_missing_rx, &ccu_candb_time_missing_rx, 0, 0U);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP);
|
||||||
if ((countQueue_ccu_candb_rx) && (recid == TM_CP_CANID)) {
|
if ((countQueue_ccu_candb_rx) && (recid == TM_CP_CANID)) {
|
||||||
status = osMessageQueuePut(env->ccu_candb_rx_TM_CP, &ccu_candb_rx.TM_CP, 0, 0U);
|
status = osMessageQueuePut(env->ccu_candb_rx_TM_CP, &ccu_candb_rx.TM_CP, 0, 0U);
|
||||||
return;
|
return;
|
||||||
|
|
@ -294,11 +317,27 @@ bool get_is_NoNull_CanSpam_BCM_PowerTrain_Receiver(tCanSpamReceiver *env) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN) {
|
void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) {
|
||||||
|
|
||||||
osStatus_t status = osOK;
|
osStatus_t status = osOK;
|
||||||
|
|
||||||
uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP);
|
|
||||||
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
uint32_t countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_error_missing_rx);
|
||||||
|
if (countQueue_ccu_candb_rx == 0) {
|
||||||
|
status = osMessageQueueGet(env->ccu_candb_error_missing_rx, CAN_ERROR_MISSLE, 0, 0U);
|
||||||
|
}
|
||||||
|
|
||||||
|
countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_time_missing_rx);
|
||||||
|
if (countQueue_ccu_candb_rx == 0) {
|
||||||
|
status = osMessageQueueGet(env->ccu_candb_time_missing_rx, CAN_TIME_MISSLE, 0, 0U);
|
||||||
|
}
|
||||||
|
|
||||||
|
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
|
|
||||||
|
countQueue_ccu_candb_rx = osMessageQueueGetSpace(env->ccu_candb_rx_TM_CP);
|
||||||
if (countQueue_ccu_candb_rx == 0) {
|
if (countQueue_ccu_candb_rx == 0) {
|
||||||
status = osMessageQueueGet(env->ccu_candb_rx_TM_CP, &rtDW.TM_CP_model, 0, 0U);
|
status = osMessageQueueGet(env->ccu_candb_rx_TM_CP, &rtDW.TM_CP_model, 0, 0U);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,8 @@ typedef struct {
|
||||||
bool getVIN1;
|
bool getVIN1;
|
||||||
bool getVIN2;
|
bool getVIN2;
|
||||||
|
|
||||||
|
osMessageQueueId_t ccu_candb_error_missing_rx;
|
||||||
|
osMessageQueueId_t ccu_candb_time_missing_rx;
|
||||||
|
|
||||||
osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_VIN;
|
osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_VIN;
|
||||||
osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_UDS_VIN;
|
osMessageQueueId_t ccu_candb_rx_LOCAL_HVAC_UDS_VIN;
|
||||||
|
|
@ -88,7 +90,7 @@ void CanSpamReceiver_Init(tCanSpamReceiver *env, tSerialPortFrameIO *ioCanFrame,
|
||||||
|
|
||||||
void CanSpamReceiver_StartThread(tCanSpamReceiver *env);
|
void CanSpamReceiver_StartThread(tCanSpamReceiver *env);
|
||||||
|
|
||||||
void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN);
|
void get_CanSpamReceiver(tCanSpamReceiver *env, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE);
|
||||||
|
|
||||||
bool get_CanSpamReceiverUDS(tCanSpamReceiver *env, char *VIN, func_update_func update_func, void *update_func_env,
|
bool get_CanSpamReceiverUDS(tCanSpamReceiver *env, char *VIN, func_update_func update_func, void *update_func_env,
|
||||||
uint32_t timeout, uint32_t count);
|
uint32_t timeout, uint32_t count);
|
||||||
|
|
|
||||||
|
|
@ -650,7 +650,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
|
||||||
|
|
||||||
|
|
||||||
//начало--------------------------------------------------ВХОД МОДЕЛИ CAN-----------------------------------------------
|
//начало--------------------------------------------------ВХОД МОДЕЛИ CAN-----------------------------------------------
|
||||||
get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN);
|
get_CanSpamReceiver(env->canSpamReceiver, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE);
|
||||||
|
|
||||||
// Если был захват в UDS (подмена)
|
// Если был захват в UDS (подмена)
|
||||||
if (model_Status_Set_For_Model_output.EMS == 1) {
|
if (model_Status_Set_For_Model_output.EMS == 1) {
|
||||||
|
|
@ -864,7 +864,7 @@ static _Noreturn void ModelTask_Thread(tModelTask *env) {
|
||||||
|
|
||||||
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------
|
//начало--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC------------------------------------------
|
||||||
memcpy(env->dtc_state_error, rtY.dtc_state_error_model, sizeof(env->dtc_state_error));
|
memcpy(env->dtc_state_error, rtY.dtc_state_error_model, sizeof(env->dtc_state_error));
|
||||||
set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, env->GET_HVAC_VIN);
|
set_Dtc_state(env->diagnostic, &env->ccu_candb_tx.CCU_Errors, env->dtc_state_error, env->GET_HVAC_VIN, &env->CAN_ERROR_MISSLE, &env->CAN_TIME_MISSLE);
|
||||||
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC-------------------------------------------
|
//конец--------------------------------------------------ВЫХОД МОДЕЛИ ДЛЯ DTC-------------------------------------------
|
||||||
|
|
||||||
memcpy(&env->ccu_candb_tx.CCU_Stat1, &rtY.CCU_Stat1_model, sizeof(env->ccu_candb_tx.CCU_Stat1));
|
memcpy(&env->ccu_candb_tx.CCU_Stat1, &rtY.CCU_Stat1_model, sizeof(env->ccu_candb_tx.CCU_Stat1));
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,9 @@ typedef struct {
|
||||||
osMutexId_t access;
|
osMutexId_t access;
|
||||||
|
|
||||||
char GET_HVAC_VIN[17];
|
char GET_HVAC_VIN[17];
|
||||||
|
ccu_candb_error_missing_rx_t CAN_ERROR_MISSLE;
|
||||||
|
ccu_candb_time_missing_rx_t CAN_TIME_MISSLE;
|
||||||
|
|
||||||
|
|
||||||
uint8_t dtc_state_error[127];
|
uint8_t dtc_state_error[127];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -154,8 +154,8 @@ static bool isVINError(char *VIN) {
|
||||||
return false; // NULL — не ошибка (ещё нет данных)
|
return false; // NULL — не ошибка (ещё нет данных)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Пустой VIN (нули) — ещё не собран → НЕ ошибка
|
// Пустой VIN (пробелы) — ещё не собран → НЕ ошибка
|
||||||
if (memcmp(VIN, "00000000000000000", 17) == 0) {
|
if (memcmp(VIN, " ", 17) == 0) {
|
||||||
return false; // НЕ ошибка!
|
return false; // НЕ ошибка!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,10 +168,10 @@ static bool isVINError(char *VIN) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN) {
|
void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE) {
|
||||||
if (osMutexAcquire(env->access, 5000) == osOK) {
|
if (osMutexAcquire(env->access, 5000) == osOK) {
|
||||||
|
|
||||||
bool vin_timeout = ccu_candb_error_rx.VEH_VIN;
|
bool vin_timeout = CAN_ERROR_MISSLE->VEH_VIN;
|
||||||
bool vin_error = isVINError(VIN);
|
bool vin_error = isVINError(VIN);
|
||||||
|
|
||||||
// DTC = 1 только если:
|
// DTC = 1 только если:
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ typedef struct {
|
||||||
|
|
||||||
void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger);
|
void Diagnostic_Init(tDiagnostic *env, tLoggerInterface *logger);
|
||||||
void set_NoBitsDTC(tDiagnostic *env, bool noBitsDTC);
|
void set_NoBitsDTC(tDiagnostic *env, bool noBitsDTC);
|
||||||
void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN);
|
void set_Dtc_state(tDiagnostic *env, CCU_Errors_t *CCU_Errors, uint8_t *dtc_state_error_model, char *VIN, ccu_candb_error_missing_rx_t *CAN_ERROR_MISSLE, ccu_candb_time_missing_rx_t *CAN_TIME_MISSLE);
|
||||||
|
|
||||||
uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env);
|
uint32_t diagnostic_ClearDiagnosticInformation_14(tDiagnostic *env);
|
||||||
uint32_t diagnostic_UDS_ReadDTCInformation_19_count(tDiagnostic *env, tDiagnosticDTC *diagnosticDTC);
|
uint32_t diagnostic_UDS_ReadDTCInformation_19_count(tDiagnostic *env, tDiagnosticDTC *diagnosticDTC);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue