Обновление
This commit is contained in:
parent
8b9d584815
commit
d23bfa381e
132
CanUds.c
132
CanUds.c
|
|
@ -467,13 +467,135 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
env->dataResponse[1] = dataIdentifier_hi;
|
env->dataResponse[1] = dataIdentifier_hi;
|
||||||
env->dataResponse[2] = dataIdentifier_lo;
|
env->dataResponse[2] = dataIdentifier_lo;
|
||||||
env->dataResponse[3] = env->data.data[3];
|
env->dataResponse[3] = env->data.data[3];
|
||||||
//memcpy(uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data, &env->data.data[3], size);
|
|
||||||
|
if (env->data.data[3] == UDS_io_shortTermAdjustment) {
|
||||||
|
|
||||||
|
// Motor_Def...MotorSealingValve (percent)
|
||||||
|
if ((dataIdentifier_lo >= 0x60) && (dataIdentifier_lo <= 0x78)) {
|
||||||
|
uint16_t percent = (env->data.data[4] << 8) | env->data.data[5];
|
||||||
|
|
||||||
|
if (percent > 1000) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data, &env->data.data[4], size);
|
||||||
|
return size + 4;
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch (dataIdentifier_lo) {
|
||||||
|
|
||||||
|
// Doors Actuator
|
||||||
|
case 0x50: {
|
||||||
|
for (uint8_t i = 0; i < 24; i += 2) {
|
||||||
|
uint16_t percent = (env->data.data[4 + i] << 8) | env->data.data[5 + 1 + i];
|
||||||
|
if (percent > 1000) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IO
|
||||||
|
case 0x51: {
|
||||||
|
for (uint8_t i = 0; i < 8; ++i) {
|
||||||
|
uint8_t on_off = env->data.data[4 + i];
|
||||||
|
if (on_off > 1) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PWM
|
||||||
|
case 0x52: {
|
||||||
|
|
||||||
|
tStatus_Pwm *pwm = (tStatus_Pwm *) &env->data.data[4];
|
||||||
|
if ((pwm->Pwm_Front > 1000) || (pwm->Pwm_Rear > 1000)) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// eComp
|
||||||
|
case 0x53: {
|
||||||
|
|
||||||
|
tStatus_eComp *eComp = (tStatus_eComp *) &env->data.data[4];
|
||||||
|
if ((eComp->eComp_Statue_Request > 1) || (eComp->LowTempValve > 1)) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// External
|
||||||
|
case 0x54: {
|
||||||
|
|
||||||
|
tStatus_External *external = (tStatus_External *) &env->data.data[4];
|
||||||
|
if (external->CoolingFan > 1000) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EMS
|
||||||
|
case 0x55: {
|
||||||
|
|
||||||
|
tStatus_EMS *ems = (tStatus_EMS *) &env->data.data[4];
|
||||||
|
if (ems->EMS_Chiller_Req > 1) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ionizer_Aroma
|
||||||
|
case 0x56: {
|
||||||
|
|
||||||
|
tStatus_Ionizer_Aroma *ionizer_Aroma = (tStatus_Ionizer_Aroma *) &env->data.data[4];
|
||||||
|
if ((ionizer_Aroma->Ionizer > 1) || (ionizer_Aroma->AromatizationIntensivity > 3)) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Duct Select
|
||||||
|
case 0x79: {
|
||||||
|
|
||||||
|
tStatus_Duct_Select *duct_Select = (tStatus_Duct_Select *) &env->data.data[4];
|
||||||
|
if ((duct_Select->Duct_FL > 1) || (duct_Select->Duct_FR > 1) ||
|
||||||
|
(duct_Select->Duct_RL > 1) || (duct_Select->Duct_RR > 1)) {
|
||||||
|
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
||||||
|
UDS_error_requestOutOfRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(uds_IoDataByIdentifier_2F_com_CF[dataIdentifier_lo].data, &env->data.data[4], size);
|
||||||
|
|
||||||
|
return size + 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return 4;
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
if (dataIdentifier_hi == 0xF1) {
|
if (dataIdentifier_hi == 0xF1) {
|
||||||
|
|
||||||
if (uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].data != NULL) {
|
if (uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].data != NULL) {
|
||||||
|
|
@ -494,7 +616,7 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
UDS_error_incorrectMessageLengthOrInvalidFormat);
|
UDS_error_incorrectMessageLengthOrInvalidFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
env->dataResponse[0] = UDS_WriteDataByIdentifier | 0b1000000;
|
env->dataResponse[0] = UDS_InputOutputControlByIdentifier | 0b1000000;
|
||||||
env->dataResponse[1] = dataIdentifier_hi;
|
env->dataResponse[1] = dataIdentifier_hi;
|
||||||
env->dataResponse[2] = dataIdentifier_lo;
|
env->dataResponse[2] = dataIdentifier_lo;
|
||||||
env->dataResponse[3] = env->data.data[3];
|
env->dataResponse[3] = env->data.data[3];
|
||||||
|
|
@ -504,8 +626,8 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
return setResponseError(env, UDS_WriteDataByIdentifier, UDS_error_requestOutOfRange);
|
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_requestOutOfRange);
|
||||||
}
|
}
|
||||||
// конец --------------------------- Управление ---------------------------------------------------------
|
// конец --------------------------- Управление ---------------------------------------------------------
|
||||||
// конец --------------------------- Управление ---------------------------------------------------------
|
// конец --------------------------- Управление ---------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue