diff --git a/Lins.c b/Lins.c index 8b29b79..27422f5 100644 --- a/Lins.c +++ b/Lins.c @@ -6,18 +6,20 @@ #include "fc7xxx_driver_gpio.h" #include "Lins.h" -tLins LINS; +tLinPorts LIN_PORTS; -void LinCallbackHandler(uint8_t u8LinIndex, void *state) { - GetLinCallbackHandler(&LINS.lin, u8LinIndex, state); +static void Lin0CallbackHandler(uint8_t u8LinIndex, void *state) { + LIN_PORTS.lin0.LinExtCallbackHandler(LIN_PORTS.lin0.envCallExtBack, u8LinIndex, state); } void FCUART4_RxTx_IRQHandler(void) { - LIN_DrvIRQHandler(LINS.lin.UART_INDEX); + LIN_DrvIRQHandler(LIN_PORTS.lin0.UART_INDEX); } -void Lins_Init() { - tLins *env = &LINS; +tLinData* Lin0_Init(lin_callback_ext_t Lin_ExtCallbackHandler, + void *Lin_envCallExtBack) { + + tLinPorts *env = &LIN_PORTS; PORT_InitType tInitStruct = {0}; GPIO_InitType tGpioInitStruct = {0}; @@ -29,7 +31,7 @@ void Lins_Init() { tInitStruct.ePullSel = PORT_PULL_UP; PORT_InitPins(PORT_D, &tInitStruct); - tGpioInitStruct.u32GpioPins = GPIO_PIN_12; + tGpioInitStruct.u32GpioPins = GPIO_PIN_12; tGpioInitStruct.ePinDirection = GPIO_IN; GPIO_InitPins(GPIO_D, &tGpioInitStruct); @@ -54,17 +56,21 @@ void Lins_Init() { //GPIO_InitPins(GPIO_D, &tGpioInitStruct); LIN_Initial( - &env->lin, + &env->lin0, FCUART4, - 19200, + 9600, 4, // UART0 = 0 ... UART7 = 7 FCUART4_IRQn, // FCUART0_IRQn ... FCUART7_IRQn 0xFF, NULL, - LinCallbackHandler + Lin0CallbackHandler, + Lin_ExtCallbackHandler, + Lin_envCallExtBack ); - env->linIo = vLinGetIo(&env->lin); + env->lin0_Io = vLinGetIo(&env->lin0); + + return &env->lin0.linData; } diff --git a/Lins.h b/Lins.h index f5aed38..1e52162 100644 --- a/Lins.h +++ b/Lins.h @@ -8,12 +8,13 @@ #include "LinFlagchip.h" typedef struct { - tLinFlagchip lin; - tLinIO linIo; -} tLins; + tLinFlagchip lin0; + tLinIO lin0_Io; +} tLinPorts; -extern tLins LINS; +extern tLinPorts LIN_PORTS; -void Lins_Init(); +tLinData* Lin0_Init(lin_callback_ext_t Lin_ExtCallbackHandler, + void *Lin_envCallExtBack); #endif //FLAG_LINS_H