diff --git a/CanUds.c b/CanUds.c index 3386b04..dfc45a8 100644 --- a/CanUds.c +++ b/CanUds.c @@ -114,8 +114,10 @@ void ReceivedTP_func(void *arg, tCanTP_data *data) { osStatus_t status = osMessageQueuePut(env->queue, data, 0, 0U); +// LoggerFormatInfo(LOGGER, LOG_SIGN, "Add queue (UDS): %d", data[0]) + if (status != osOK) { - LoggerInfoStatic(LOGGER, LOG_SIGN, "Ошибка добавления в очередь addCommandQueue") + LoggerInfoStatic(LOGGER, LOG_SIGN, "Error addCommandQueue") } } @@ -334,7 +336,7 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) { if (uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data != NULL) { uint16_t size = uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].size; - if (env->data.len != size + 4) { + if ((env->data.data[3] == UDS_io_shortTermAdjustment) && (env->data.len != size + 4)) { return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_incorrectMessageLengthOrInvalidFormat); } @@ -610,8 +612,8 @@ static uint16_t Routine_Control_31(tCanUds *env) { } eUdsRoutineControlType udsRoutineControlType = env->data.data[1]; - uint8_t routineIdentifier_hi = env->data.data[1]; - uint8_t routineIdentifier_lo = env->data.data[2]; + uint8_t routineIdentifier_hi = env->data.data[2]; + uint8_t routineIdentifier_lo = env->data.data[3]; uint16_t routineIdentifier = (routineIdentifier_hi << 8) | routineIdentifier_lo; if ((udsRoutineControlType != UDS_routine_StartRoutine) && (udsRoutineControlType != UDS_routine_StopRoutine) && @@ -620,9 +622,9 @@ static uint16_t Routine_Control_31(tCanUds *env) { } env->dataResponse[0] = UDS_RoutineControl | 0b1000000; - env->dataResponse[1] = routineIdentifier_hi; - env->dataResponse[2] = routineIdentifier_lo; - env->dataResponse[3] = env->data.data[3]; + env->dataResponse[1] = env->data.data[1]; // eUdsRoutineControlType + env->dataResponse[2] = routineIdentifier_hi; + env->dataResponse[3] = routineIdentifier_lo; switch (routineIdentifier) { case UDS_routine_VIN_learn: @@ -1069,8 +1071,8 @@ void CanUds_Init( env->filterReqId[5] = 0; env->filterReqId[6] = 0; - env->filterRespId[0] = 0; - env->filterRespId[1] = 0; + env->filterRespId[0] = Diag_From_CCU_CANID; + env->filterRespId[1] = Diag_From_CCU_CANID; env->filterRespId[2] = 0; env->filterRespId[3] = 0; env->filterRespId[4] = 0; @@ -1083,7 +1085,7 @@ void CanUds_Init( env->filterDirReq[2] = 0; env->filterDirReq[3] = 0; env->filterDirReq[4] = 0; - env->filterDirReq[5] = 1; + env->filterDirReq[5] = 0; env->filterDirReq[6] = 0;