Обновление после командировки 02.07.2026 (Внесены изменения для IO)
This commit is contained in:
parent
a173d70e34
commit
7f41f90d47
135
CanUds.c
135
CanUds.c
|
|
@ -519,7 +519,6 @@ static uint16_t WriteDataByIdentifier_2E(tCanUds *env) {
|
||||||
// начало --------------------------- Управление ---------------------------------------------------------
|
// начало --------------------------- Управление ---------------------------------------------------------
|
||||||
// начало --------------------------- Управление ---------------------------------------------------------
|
// начало --------------------------- Управление ---------------------------------------------------------
|
||||||
// начало --------------------------- Управление ---------------------------------------------------------
|
// начало --------------------------- Управление ---------------------------------------------------------
|
||||||
|
|
||||||
static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
|
|
||||||
if (env->data->len < 4) {
|
if (env->data->len < 4) {
|
||||||
|
|
@ -560,14 +559,14 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
env->dataResponse[2] = dataIdentifier_lo;
|
env->dataResponse[2] = dataIdentifier_lo;
|
||||||
env->dataResponse[3] = env->data->data[3];
|
env->dataResponse[3] = env->data->data[3];
|
||||||
|
|
||||||
|
if (env->data->data[3] == UDS_io_shortTermAdjustment) {
|
||||||
|
|
||||||
if (dataIdentifier_lo == 0x50) {
|
if (dataIdentifier_lo == 0x50) {
|
||||||
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[2].data, size);
|
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[2].data, size);
|
||||||
} else {
|
} else {
|
||||||
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[dataIdentifier_lo].data, size);
|
memcpy(&env->dataResponse[4], uds_ReadDataByIdentifier_22_com_CF[dataIdentifier_lo].data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (env->data->data[3] == UDS_io_shortTermAdjustment) {
|
|
||||||
|
|
||||||
// Motor_Def...MotorSealingValve (percent)
|
// Motor_Def...MotorSealingValve (percent)
|
||||||
if ((dataIdentifier_lo >= 0x60) && (dataIdentifier_lo <= 0x78)) {
|
if ((dataIdentifier_lo >= 0x60) && (dataIdentifier_lo <= 0x78)) {
|
||||||
uint16_t percent = (env->data->data[4] << 8) | env->data->data[5];
|
uint16_t percent = (env->data->data[4] << 8) | env->data->data[5];
|
||||||
|
|
@ -711,7 +710,74 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
|
|
||||||
return size + 4;
|
return size + 4;
|
||||||
} else {
|
} else {
|
||||||
return size + 4;
|
|
||||||
|
|
||||||
|
// Motor_Def...MotorSealingValve (percent)
|
||||||
|
if ((dataIdentifier_lo >= 0x60) && (dataIdentifier_lo <= 0x78)) {
|
||||||
|
|
||||||
|
uint8_t *pSet = (uint8_t *) &env->Status_Set_For_Model_output;
|
||||||
|
pSet[dataIdentifier_lo - 0x60 - 1] = 0;
|
||||||
|
return 4;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
switch (dataIdentifier_lo) {
|
||||||
|
|
||||||
|
// Doors Actuator
|
||||||
|
case 0x50: {
|
||||||
|
memset(&env->Status_Set_For_Model_output, 0, 24);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// IO
|
||||||
|
case 0x51: {
|
||||||
|
env->Status_Set_For_Model_output.IO = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PWM
|
||||||
|
case 0x52: {
|
||||||
|
env->Status_Set_For_Model_output.Pwm = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// eComp
|
||||||
|
case 0x53: {
|
||||||
|
env->Status_Set_For_Model_output.eComp = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// External
|
||||||
|
case 0x54: {
|
||||||
|
env->Status_Set_For_Model_output.External = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// EMS
|
||||||
|
case 0x55: {
|
||||||
|
env->Status_Set_For_Model_output.EMS = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ionizer_Aroma
|
||||||
|
case 0x56: {
|
||||||
|
env->Status_Set_For_Model_output.Ionizer_Aroma = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Duct Select
|
||||||
|
case 0x79: {
|
||||||
|
env->Status_Set_For_Model_output.Duct_Select = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -719,38 +785,7 @@ static uint16_t InputOutputControlByIdentifier_2F(tCanUds *env) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
if (dataIdentifier_hi == 0xF1) {
|
|
||||||
|
|
||||||
if (uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].data != NULL) {
|
|
||||||
|
|
||||||
|
|
||||||
if (!isSecurityAccessDenied(env, uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].isPermissionSession)) {
|
|
||||||
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_conditionsNotCorrect);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].isSecurity) && (!env->SA.stateSecurityAccess)) {
|
|
||||||
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_securityAccessDenied);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t size = uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].size;
|
|
||||||
|
|
||||||
if (env->data->len != size + 4) {
|
|
||||||
return setResponseError(env, UDS_InputOutputControlByIdentifier,
|
|
||||||
UDS_error_incorrectMessageLengthOrInvalidFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
env->dataResponse[0] = UDS_InputOutputControlByIdentifier | 0b1000000;
|
|
||||||
env->dataResponse[1] = dataIdentifier_hi;
|
|
||||||
env->dataResponse[2] = dataIdentifier_lo;
|
|
||||||
env->dataResponse[3] = env->data->data[3];
|
|
||||||
//memcpy(uds_IoDataByIdentifier_2F_com_F1[dataIdentifier_lo].data, &env->data->data[3], size);
|
|
||||||
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_requestOutOfRange);
|
return setResponseError(env, UDS_InputOutputControlByIdentifier, UDS_error_requestOutOfRange);
|
||||||
}
|
}
|
||||||
// конец --------------------------- Управление ---------------------------------------------------------
|
// конец --------------------------- Управление ---------------------------------------------------------
|
||||||
|
|
@ -1779,7 +1814,8 @@ void CanUdsInput_Set_Model(tCanUds *env) {
|
||||||
|
|
||||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Actuator_DoorsActuator);
|
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Actuator_DoorsActuator);
|
||||||
if (countQueue_space) {
|
if (countQueue_space) {
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Sensor_For_Model_input, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator,
|
||||||
|
&env->Status_Sensor_For_Model_input, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Tgt);
|
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Tgt);
|
||||||
|
|
@ -1819,20 +1855,24 @@ void CanUdsInput_Set_Model(tCanUds *env) {
|
||||||
|
|
||||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Ionizer_Aroma);
|
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Ionizer_Aroma);
|
||||||
if (countQueue_space) {
|
if (countQueue_space) {
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_input, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma,
|
||||||
|
&env->Status_Ionizer_Aroma_For_Model_input, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Select);
|
countQueue_space = osMessageQueueGetSpace(env->queue_input_get_Status_Duct_Select);
|
||||||
if (countQueue_space) {
|
if (countQueue_space) {
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input, 0,
|
||||||
|
0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Это на вход UDS
|
// Это на вход UDS
|
||||||
static void CanUdsInput_Get_Model(tCanUds *env) {
|
static void CanUdsInput_Get_Model(tCanUds *env) {
|
||||||
|
|
||||||
osStatus_t status = osMessageQueueGet(env->queue_input_get_Status_Sensor, &env->Status_Sensor_For_Model_input, 0, 0);
|
osStatus_t status = osMessageQueueGet(env->queue_input_get_Status_Sensor, &env->Status_Sensor_For_Model_input, 0,
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Sensor_For_Model_input,0, 0);
|
0);
|
||||||
|
status = osMessageQueueGet(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Sensor_For_Model_input,
|
||||||
|
0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_input, 0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_input, 0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_input, 0, 0);
|
||||||
|
|
@ -1840,7 +1880,8 @@ static void CanUdsInput_Get_Model(tCanUds *env) {
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_input, 0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_External, &env->Status_External_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_External, &env->Status_External_For_Model_input, 0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_input, 0, 0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_input,0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_input, 0,
|
||||||
|
0);
|
||||||
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input, 0, 0);
|
status = osMessageQueueGet(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_input, 0, 0);
|
||||||
|
|
||||||
//---------------------- tStatus_Sensor Status_Sensor; --------------------------------------------------------------
|
//---------------------- tStatus_Sensor Status_Sensor; --------------------------------------------------------------
|
||||||
|
|
@ -2066,7 +2107,8 @@ void CanUdsOutput_Set_Model(tCanUds *env) {
|
||||||
|
|
||||||
|
|
||||||
osStatus_t status = osMessageQueuePut(env->queue_input_get_Status_Sensor, &env->Status_Set_For_Model_output, 0, 0);
|
osStatus_t status = osMessageQueuePut(env->queue_input_get_Status_Sensor, &env->Status_Set_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator, &env->Status_Actuator_DoorsActuator_For_Model_output,0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Actuator_DoorsActuator,
|
||||||
|
&env->Status_Actuator_DoorsActuator_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Tgt, &env->Status_Duct_Tgt_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Eva_Tgt, &env->Status_Eva_Tgt_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_IO, &env->Status_IO_For_Model_output, 0, 0);
|
||||||
|
|
@ -2074,8 +2116,10 @@ void CanUdsOutput_Set_Model(tCanUds *env) {
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_eComp, &env->Status_eComp_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_External, &env->Status_External_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_External, &env->Status_External_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_output, 0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_EMS, &env->Status_EMS_For_Model_output, 0, 0);
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_output,0, 0);
|
status = osMessageQueuePut(env->queue_input_get_Status_Ionizer_Aroma, &env->Status_Ionizer_Aroma_For_Model_output,
|
||||||
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_output,0, 0);
|
0, 0);
|
||||||
|
status = osMessageQueuePut(env->queue_input_get_Status_Duct_Select, &env->Status_Duct_Select_For_Model_output, 0,
|
||||||
|
0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2481,7 +2525,8 @@ void CanUds_Init(
|
||||||
|
|
||||||
|
|
||||||
env->queue_output_set_Status_Set = osMessageQueueNew(1, sizeof(tStatus_Set_For_Model), NULL);
|
env->queue_output_set_Status_Set = osMessageQueueNew(1, sizeof(tStatus_Set_For_Model), NULL);
|
||||||
env->queue_output_set_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model), NULL);
|
env->queue_output_set_Status_Actuator_DoorsActuator = osMessageQueueNew(1, sizeof(tStatus_Actuator_For_Model),
|
||||||
|
NULL);
|
||||||
env->queue_output_set_Status_Duct_Tgt = osMessageQueueNew(1, sizeof(tStatus_Duct_Tgt_For_Model), NULL);
|
env->queue_output_set_Status_Duct_Tgt = osMessageQueueNew(1, sizeof(tStatus_Duct_Tgt_For_Model), NULL);
|
||||||
env->queue_output_set_Status_Eva_Tgt = osMessageQueueNew(1, sizeof(tStatus_Eva_Tgt_For_Model), NULL);
|
env->queue_output_set_Status_Eva_Tgt = osMessageQueueNew(1, sizeof(tStatus_Eva_Tgt_For_Model), NULL);
|
||||||
env->queue_output_set_Status_IO = osMessageQueueNew(1, sizeof(tStatus_IO_For_Model), NULL);
|
env->queue_output_set_Status_IO = osMessageQueueNew(1, sizeof(tStatus_IO_For_Model), NULL);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue