diff --git a/Src/LinFlagchip.c b/Src/LinFlagchip.c index 8bf4c5b..8202780 100644 --- a/Src/LinFlagchip.c +++ b/Src/LinFlagchip.c @@ -16,99 +16,6 @@ static const PCC_ClkSrcType s_ePccUartTable[] = PCC_CLK_FCUART7 }; -/* -void GetLinCallbackHandler(tLinFlagchip *env, uint8_t u8LinIndex, void *state) { - lin_xfer_state_t *pXferState = state; - //uint32_t s_countIndex = 0U; - //bool s_rxError = false; - - //LIN_DrvSetTimeOutCounter(env->UART_INDEX, 500); - - switch (pXferState->currentEventId) { - case LIN_PID_OK: - if (pXferState->currentId == LIN_MASTER_SEND_ID) { - // Call to Send Frame DATA Function - LIN_DrvSendFrameNonBlocking(u8LinIndex, env->g_aTxBuffer, sizeof(env->g_aTxBuffer)); - //} else if (pXferState->currentId == LIN_MASTER_RECEIVE_ID) { - // LIN_DrvReceiveFrameNonBlocking(u8LinIndex, env->g_aRxBuffer, sizeof(env->g_aRxBuffer)); - //} else if (pXferState->currentId == LIN_MASTER_GO_TO_SLEEP_ID) { - // LIN_DrvGoToSleepMode(u8LinIndex); - } else { - // Misra check. - uint8_t data = LIN_TIMEOUT; - osMessageQueuePut(env->rxDataQueue, &data, 0x0, 0U); - return; - } - - break; - case LIN_PID_ERROR: - // Go to idle mode - LIN_DrvGoToIdleMode(env->UART_INDEX); - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "Receive PID error!\r\n"); - break; - case LIN_TX_COMPLETED: - // Go to IDLE state. - LIN_DrvGoToIdleMode(env->UART_INDEX); - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "This test case will send data to slave node. Send data: \r\n"); - // for (s_countIndex = 0U; s_countIndex < sizeof(g_aTxBuffer); s_countIndex++) { - // FCUART_Printf(DEBUG_FCUART_INSTANCE, " 0x%x ", g_aTxBuffer[s_countIndex]); - // } - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "\r\nMaster node send complete! \r\n"); - break; - case LIN_RX_COMPLETED: - // Go to idle mode - LIN_DrvGoToIdleMode(env->UART_INDEX); - - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "Master node receive data:\r\n"); - //for (s_countIndex = 0U; s_countIndex < sizeof(env->g_aRxBuffer); s_countIndex++) { - // FCUART_Printf(DEBUG_FCUART_INSTANCE, " 0x%x ", g_aRxBuffer[s_countIndex]); - //if (env->g_aRxBuffer[s_countIndex] != (env->g_aTxBuffer[s_countIndex] + 1U)) { - // s_rxError = true; - //} - - //env->g_aRxBuffer[s_countIndex] = 0U; - //} - - //if (true == s_rxError) { - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "\r\nReceived data Error\r\n"); - //} else { - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "\r\nReveiced data matched!\r\n"); - //} - break; - case LIN_CHECKSUM_ERROR: - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "Receive checksum byte error!\r\n"); - break; - case LIN_READBACK_ERROR: - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "Read back error!\r\n"); - break; - case LIN_FRAME_ERROR: - break; - case LIN_RECV_BREAK_FIELD_OK: - break; - case LIN_WAKEUP_SIGNAL: - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "Wake up signal received!\r\n"); - LIN_DrvGoToIdleMode(env->UART_INDEX); - break; - case LIN_TIMEOUT: - // FCUART_Printf(DEBUG_FCUART_INSTANCE, "LIN transfer timeout occurred!\r\n"); - break; - case LIN_SYNC_ERROR: - break; - case LIN_BAUDRATE_ADJUSTED: - break; - case LIN_NO_EVENT: - break; - case LIN_SYNC_OK: - break; - default: - // do nothing - break; - } - - osMessageQueuePut(env->rxDataQueue, (uint8_t *) &pXferState->currentEventId, 0x0, 0U); -} -*/ - void LIN_Initial( tLinFlagchip *env, FCUART_Type *uart, @@ -138,10 +45,12 @@ void LIN_Initial( LIN_DrvGetDefaultConfig(LIN_NODE_MASTER, &env->g_linMasterConfig); env->g_linMasterConfig.baudRate = BoundRate; env->g_linMasterConfig.clockSrcFreq = PCC_GetPccFunctionClock(s_ePccUartTable[UART_INDEX]); + + env->g_linMasterConfig.getIntervalTimeValueCallback = LIN_TimerGetTimeIntervalValue; env->g_linMasterConfig.numOfClassicPID = numOfClassicPID; - env->g_linMasterConfig.classicPID = classicPID; + env->g_linMasterConfig.classicPID = (uint8_t *)classicPID; @@ -162,11 +71,16 @@ static uint8_t vLinRunCommand(tLinFlagchip *env, uint8_t command, uint32_t timeo LIN_DrvSendHeader(env->UART_INDEX, command); - uint8_t state; + lin_event_id_t state; if (osMessageQueueGet(env->linData.rxDataQueue, &state, NULL, timeout) == osOK) { + LIN_DrvGoToIdleMode(env->UART_INDEX); lin_event_id_t id = state; return id; } + + LIN_DrvGoToIdleMode(env->UART_INDEX); +// LIN_DrvReceiveFrameBlocking(env->UART_INDEX, env->linData.g_aRxBuffer, env->linData.g_aRxBufferLen, 3000U); + return LIN_TIMEOUT; }