From 32b49bf18b7d991c25d44713862d3fd912a042e0 Mon Sep 17 00:00:00 2001 From: cfif Date: Fri, 21 Nov 2025 13:18:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/LinFlagchip.h | 15 ++++++++++----- Src/LinFlagchip.c | 15 ++++++++++----- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Inc/LinFlagchip.h b/Inc/LinFlagchip.h index 4b81b4d..ef36712 100644 --- a/Inc/LinFlagchip.h +++ b/Inc/LinFlagchip.h @@ -17,18 +17,21 @@ #define LIN_MASTER_RECEIVE_ID (0x02U) #define LIN_MASTER_GO_TO_SLEEP_ID (0x03U) +typedef void (*lin_callback_ext_t)(tLinData *env, uint8_t u8LinIndex, void *linState); + typedef struct { - uint8_t UART_INDEX; FCUART_Type *UART; - osMessageQueueId_t rxDataQueue; + uint8_t UART_INDEX; + + tLinData linData; lin_config_t g_linMasterConfig; lin_xfer_state_t g_xferMasterState; - uint8_t g_aTxBuffer[8]; - uint8_t g_aRxBuffer[8]; + lin_callback_ext_t LinExtCallbackHandler; + void *envCallExtBack; } tLinFlagchip; @@ -42,7 +45,9 @@ void LIN_Initial( uint8 UART_PRIORITY, lin_get_interval_time_t LIN_TimerGetTimeIntervalValue, - lin_callback_t LinCallbackHandler + lin_callback_t LinCallbackHandler, + lin_callback_ext_t LinExtCallbackHandler, + void *envCallExtBack ); void GetLinCallbackHandler(tLinFlagchip *env, uint8_t u8LinIndex, void *state); diff --git a/Src/LinFlagchip.c b/Src/LinFlagchip.c index fb48587..f77ecb5 100644 --- a/Src/LinFlagchip.c +++ b/Src/LinFlagchip.c @@ -15,7 +15,7 @@ static const PCC_ClkSrcType s_ePccUartTable[] = PCC_CLK_FCUART6, PCC_CLK_FCUART7 }; - +/* void GetLinCallbackHandler(tLinFlagchip *env, uint8_t u8LinIndex, void *state) { lin_xfer_state_t *pXferState = state; //uint32_t s_countIndex = 0U; @@ -106,7 +106,7 @@ void GetLinCallbackHandler(tLinFlagchip *env, uint8_t u8LinIndex, void *state) { osMessageQueuePut(env->rxDataQueue, (uint8_t *) &pXferState->currentEventId, 0x0, 0U); } - +*/ void LIN_Initial( tLinFlagchip *env, @@ -118,13 +118,18 @@ void LIN_Initial( uint8 UART_PRIORITY, lin_get_interval_time_t LIN_TimerGetTimeIntervalValue, - lin_callback_t LinCallbackHandler + lin_callback_t LinCallbackHandler, + lin_callback_ext_t LinExtCallbackHandler, + void *envCallExtBack ) { env->UART_INDEX = UART_INDEX; env->UART = uart; - env->rxDataQueue = osMessageQueueNew(1, 1, NULL); + env->linData.rxDataQueue = osMessageQueueNew(1, 1, NULL); + + env->LinExtCallbackHandler = LinExtCallbackHandler; + env->envCallExtBack = envCallExtBack; LIN_DrvGetDefaultConfig(LIN_NODE_MASTER, &env->g_linMasterConfig); env->g_linMasterConfig.baudRate = BoundRate; @@ -149,7 +154,7 @@ static uint8_t vLinRunCommand(tLinFlagchip *env, uint8_t command, uint32_t timeo LIN_DrvSendHeader(env->UART_INDEX, command); uint8_t state; - if (osMessageQueueGet(env->rxDataQueue, &state, NULL, timeout) == osOK) { + if (osMessageQueueGet(env->linData.rxDataQueue, &state, NULL, timeout) == osOK) { lin_event_id_t id = state; return id; }