Init
This commit is contained in:
parent
5b631fe3f3
commit
5b995ebd83
135
LinSensorTasks.c
135
LinSensorTasks.c
|
|
@ -230,6 +230,36 @@ Get_DRS_Stat(tSerialPortLinIO *linIo, tLinData *linData, tDRS_Stat *p_tDRS_Stat,
|
|||
return res;
|
||||
}
|
||||
|
||||
|
||||
static lin_event_id_t
|
||||
Set_DRS_Stat(tSerialPortLinIO *linIo, tLinData *linData, tDRS_Stat *p_tDRS_Stat, uint8_t DRS_stat) {
|
||||
lin_event_id_t res;
|
||||
|
||||
tDRS_Stat *tDRS_Stat_ = (tDRS_Stat *) linData->g_aTxBuffer;
|
||||
|
||||
uint8_t retry = 1;
|
||||
|
||||
while (retry) {
|
||||
|
||||
linData->direction = LIN_DIRECTION_SET;
|
||||
|
||||
linData->g_aTxBufferLen = sizeof(tDRS_Stat);
|
||||
linData->g_aRxBufferLen = 0;
|
||||
|
||||
memcpy(tDRS_Stat_, p_tDRS_Stat, sizeof(tDRS_Stat));
|
||||
|
||||
res = SEND_SENSOR_COM_x(linIo, linData, DRS_stat);
|
||||
|
||||
if (res == LIN_TX_COMPLETED) {
|
||||
break;
|
||||
}
|
||||
|
||||
--retry;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
// Вспомогательная функция: устанавливает три бита для группы led_group
|
||||
// в соответствии со значением count (0, 1, 2, 3)
|
||||
static void set_led_group(tCCU_DRS_Req *req, uint8_t led_group, uint8_t count) {
|
||||
|
|
@ -305,111 +335,44 @@ static void set_led_group(tCCU_DRS_Req *req, uint8_t led_group, uint8_t count) {
|
|||
}
|
||||
|
||||
|
||||
bool isNowData;
|
||||
|
||||
static lin_event_id_t Lin5_Scheduler(tLin5TaskSensor *env) {
|
||||
|
||||
lin_event_id_t ret = env->linIo->receivedCommand(env->linIo->env, &env->linData, 1000);
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
asm("nop");
|
||||
if (env->linData.g_aRxBufferLen == 2) {
|
||||
asm("nop");
|
||||
}
|
||||
|
||||
if (env->linData.g_aRxBuffer[0] == CCU_DRS_Req) {
|
||||
|
||||
} else {
|
||||
tDRS_Stat DRS_Stat;
|
||||
|
||||
if (isNowData) {
|
||||
DRS_Stat.DRS_Btn_Stat = 1;
|
||||
} else {
|
||||
DRS_Stat.DRS_LinRespErr_Stat = 1;
|
||||
}
|
||||
|
||||
asm("nop");
|
||||
|
||||
/*
|
||||
lin_event_id_t ret = LIN_NO_EVENT;
|
||||
|
||||
ret = Set_CCU_DRS_Req(env->linIo, env->linData, &env->d_CCU_DRS_Req);
|
||||
for (uint8_t i = 0; i < 8; ++i) {
|
||||
|
||||
if (env->linData.g_aRxBuffer[0] == DRS_SENSON_ADR_Stat[i]) {
|
||||
ret = Set_DRS_Stat(env->linIo, &env->linData, &DRS_Stat, DRS_SENSON_ADR_Stat[i]);
|
||||
if (ret == LIN_TX_COMPLETED) {
|
||||
|
||||
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
|
||||
set_led_group(&env->d_CCU_DRS_Req, i, env->linStateSensor.LED_COUNT[i]);
|
||||
}
|
||||
env->d_CCU_DRS_Req.BCM_SwIndIntens_Stat = 0;
|
||||
env->d_CCU_DRS_Req.BCM_IndFadingTime_Req = 0;
|
||||
|
||||
#if (LOG_LIN5_SENSOR == 1)
|
||||
|
||||
if (*((uint32_t *) &env->d_CCU_DRS_Req) != *((uint32_t *) &env->d_old_CCU_DRS_Req)) {
|
||||
*((uint32_t *) &env->d_old_CCU_DRS_Req) = *((uint32_t *) &env->d_CCU_DRS_Req);
|
||||
LoggerInfoStatic(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req - OK")
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
#if (LOG_LIN5_SENSOR == 1)
|
||||
if (*((uint32_t *) &env->d_CCU_DRS_Req) != *((uint32_t *) &env->d_old_CCU_DRS_Req)) {
|
||||
*((uint32_t *) &env->d_old_CCU_DRS_Req) = *((uint32_t *) &env->d_CCU_DRS_Req);
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor Set_CCU_DRS_Req (ERROR %d)", ret)
|
||||
}
|
||||
#endif
|
||||
asm("nop");
|
||||
}
|
||||
|
||||
SystemDelayMs(50);
|
||||
|
||||
for (uint8_t i = 0; i < LIN5_SENSOR_COUNT; ++i) {
|
||||
|
||||
if (env->linStateSensor.error_connect[i] == 0) {
|
||||
|
||||
ret = Get_DRS_Stat(env->linIo, env->linData, &env->linStateSensor.d_DRS_Stat[i], DRS_SENSON_ADR_Stat[i]);
|
||||
|
||||
uint8_t current_btn_state = env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat;
|
||||
|
||||
if ((current_btn_state) && (!env->linStateSensor.prev_btn_state[i])) {
|
||||
|
||||
if (env->linStateSensor.LED_COUNT[i] == 0) {
|
||||
env->linStateSensor.LED_COUNT[i] = 3;
|
||||
} else {
|
||||
--env->linStateSensor.LED_COUNT[i];
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
env->linStateSensor.prev_btn_state[i] = current_btn_state;
|
||||
|
||||
env->linStateSensor.LinRespErr_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat;
|
||||
env->linStateSensor.Err_Stat[i] = env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat;
|
||||
|
||||
if (ret == LIN_RX_COMPLETED) {
|
||||
env->linStateSensor.error_connect[i] = 0;
|
||||
#if (LOG_LIN5_SENSOR == 1)
|
||||
|
||||
if ((*((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]) !=
|
||||
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i])) ||
|
||||
(env->linStateSensor.LED_COUNT[i] != env->linStateSensor.LED_OLD_COUNT[i])) {
|
||||
|
||||
*((uint8_t *) &env->linStateSensor.d_old_DRS_Stat[i]) = *((uint8_t *) &env->linStateSensor.d_DRS_Stat[i]);
|
||||
env->linStateSensor.LED_OLD_COUNT[i] = env->linStateSensor.LED_COUNT[i];
|
||||
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN5,
|
||||
"Sensor number %d: COUNT = %d DRS_Btn_Stat = %d DRS_LinRespErr_Stat = %d DRS_Err_Stat = %d",
|
||||
i,
|
||||
env->linStateSensor.LED_COUNT[i],
|
||||
env->linStateSensor.d_DRS_Stat[i].DRS_Btn_Stat,
|
||||
env->linStateSensor.d_DRS_Stat[i].DRS_LinRespErr_Stat,
|
||||
env->linStateSensor.d_DRS_Stat[i].DRS_Err_Stat
|
||||
)
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
env->linStateSensor.error_connect[i] = 1;
|
||||
#if (LOG_LIN5_SENSOR == 1)
|
||||
if (env->linStateSensor.error_connect[i] != env->linStateSensor.error_old_connect[i]) {
|
||||
env->linStateSensor.error_old_connect[i] = env->linStateSensor.error_connect[i];
|
||||
LoggerFormatInfo(LOGGER, LOG_SIGN5, "Sensor number %d: ERROR Get_FPL_Stat = %d", i, ret)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
SystemDelayMs(50);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return LIN_NO_EVENT;
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void Lin_5_Init(tLin5TaskSensor *env,
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ typedef struct {
|
|||
|
||||
struct {
|
||||
osThreadId_t id;
|
||||
uint32_t stack[384];
|
||||
uint32_t stack[512];
|
||||
StaticTask_t controlBlock;
|
||||
osThreadAttr_t attr;
|
||||
} threadLin;
|
||||
|
|
|
|||
Loading…
Reference in New Issue