Обновление
This commit is contained in:
parent
124e14642a
commit
54e0f5f660
80
LinTasks.c
80
LinTasks.c
|
|
@ -109,6 +109,69 @@ static lin_event_id_t SEND_ACTUATOR_COM_x(tLinTaskActuator *env, uint8_t COM_ADR
|
|||
}
|
||||
|
||||
|
||||
lin_event_id_t DFR_PRG_x(tLinTaskActuator *env, uint8_t BUS_ADR) {
|
||||
lin_event_id_t res;
|
||||
|
||||
env->linData->direction = LIN_DIRECTION_SET;
|
||||
env->linData->g_aTxBufferLen = sizeof(ACT_DFR_PRG);
|
||||
env->linData->g_aRxBufferLen = 0;
|
||||
|
||||
ACT_DFR_PRG *ACT_DFR_PRG_ = (ACT_DFR_PRG *) env->linData->g_aTxBuffer;
|
||||
ACT_DFR_PRG_->BUS_ADR = BUS_ADR;
|
||||
ACT_DFR_PRG_->Data1_DFR_PRG = 0xFF;
|
||||
|
||||
uint8_t retry = 3;
|
||||
|
||||
while (retry) {
|
||||
|
||||
res = SEND_ACTUATOR_COM_x(env->linIo->env, DFR_PRG);
|
||||
|
||||
if (res == LIN_TX_COMPLETED) {
|
||||
break;
|
||||
}
|
||||
|
||||
--retry;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
lin_event_id_t RFR_PRG_x(tLinTaskActuator *env, uint8_t BUS_ADR) {
|
||||
lin_event_id_t res;
|
||||
|
||||
env->linData->direction = LIN_DIRECTION_GET;
|
||||
|
||||
env->linData->g_aTxBufferLen = 0;
|
||||
env->linData->g_aRxBufferLen = sizeof(ACT_RFR_PRG);
|
||||
|
||||
ACT_RFR_PRG *ACT_RFR_PRG_ = (ACT_RFR_PRG *) env->linData->g_aRxBuffer;
|
||||
|
||||
uint8_t retry = 3;
|
||||
|
||||
while (retry) {
|
||||
|
||||
res = SEND_ACTUATOR_COM_x(env->linIo->env, RFR_PRG);
|
||||
|
||||
if (res == LIN_RX_COMPLETED) {
|
||||
|
||||
env->linStateActuator[BUS_ADR].BUS_NEW_ADR = ACT_RFR_PRG_->BUS_NEW_ADR;
|
||||
env->linStateActuator[BUS_ADR].NOTL_DREH_Master = ACT_RFR_PRG_->NOTL_DREH_Master;
|
||||
env->linStateActuator[BUS_ADR].NOTL_ENAB_Master = ACT_RFR_PRG_->NOTL_ENAB_Master;
|
||||
env->linStateActuator[BUS_ADR].DREH_Slave = ACT_RFR_PRG_->DREH_Slave;
|
||||
env->linStateActuator[BUS_ADR].ParitySlave = ACT_RFR_PRG_->ParitySlave;
|
||||
env->linStateActuator[BUS_ADR].Version_CFR = ACT_RFR_PRG_->Version_CFR;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
--retry;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
|
||||
lin_event_id_t DFR_IDE_x(tLinTaskActuator *env, uint8_t BUS_ADR) {
|
||||
lin_event_id_t res;
|
||||
|
||||
|
|
@ -249,6 +312,8 @@ lin_event_id_t ISSR_x(tLinTaskActuator *env, uint8_t BUS_ADR) {
|
|||
|
||||
ACT_RFR_ISSR *ACT_RFR_ISSR_ = (ACT_RFR_ISSR *) env->linData->g_aRxBuffer;
|
||||
|
||||
env->linStateActuator[BUS_ADR].CPOS_ALL = ACT_RFR_ISSR_->CPOS_1_LSB_MT | (ACT_RFR_ISSR_->CPOS_1_MSB_MT << 8);
|
||||
|
||||
if (ACT_RFR_ISSR_->DIAGNOSE_MT) {
|
||||
if (DFR_STA_x(env, BUS_ADR) == LIN_TX_COMPLETED) {
|
||||
RFR_STA_x(env, BUS_ADR);
|
||||
|
|
@ -282,9 +347,20 @@ void Lin0_Scheduler(tLinTaskActuator *env) {
|
|||
|
||||
if (osMutexAcquire(env->access, 100) == osOK) {
|
||||
|
||||
for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) {
|
||||
|
||||
if (DFR_PRG_x(env, i) == LIN_TX_COMPLETED) {
|
||||
RFR_PRG_x(env, i);
|
||||
}
|
||||
|
||||
if (DFR_IDE_x(env, i) == LIN_TX_COMPLETED) {
|
||||
RFR_IDE_x(env, i);
|
||||
}
|
||||
|
||||
if (DFR_STA_x(env, i) == LIN_TX_COMPLETED) {
|
||||
RFR_STA_x(env, i);
|
||||
}
|
||||
|
||||
if (DFR_IDE_x(env, BUS_ADR) == LIN_TX_COMPLETED) {
|
||||
RFR_IDE_x(env, BUS_ADR);
|
||||
}
|
||||
|
||||
for (uint8_t i = 0; i < LIN0_ISSR_ALL; ++i) {
|
||||
|
|
|
|||
10
LinTasks.h
10
LinTasks.h
|
|
@ -283,7 +283,7 @@ typedef struct __attribute__ ((packed)) {
|
|||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
uint8_t BUS_ADR;
|
||||
uint8_t Data1_DFR_PRG: 1; // Установить в 0xFF
|
||||
uint8_t Data1_DFR_PRG; // Установить в 0xFF
|
||||
} ACT_DFR_PRG;
|
||||
|
||||
typedef struct __attribute__ ((packed)) {
|
||||
|
|
@ -380,6 +380,14 @@ typedef struct {
|
|||
uint8_t IDE_Sup;
|
||||
uint8_t IDE_Har;
|
||||
|
||||
uint8_t BUS_NEW_ADR;
|
||||
uint8_t NOTL_DREH_Master;
|
||||
uint8_t NOTL_ENAB_Master;
|
||||
uint8_t DREH_Slave;
|
||||
uint8_t ParitySlave;
|
||||
uint8_t Free;
|
||||
uint8_t Version_CFR;
|
||||
|
||||
|
||||
} tLinStateActuator;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue