EBO-77/LIN_Stack/include/lin_common_api.h
2024-12-23 11:04:44 +08:00

302 lines
8.3 KiB
C

/******************************************************************************
*
* Freescale Semiconductor Inc.
* (c) Copyright 2008-2015 Freescale Semiconductor, Inc.
* ALL RIGHTS RESERVED.
*
******************************************************************************/
/** @addtogroup common_core_api_group
* @{ */
/**************************************************************************//**
*
* @file lin_common_api.h
*
* @author FPT Software
*
* @brief Common LIN API functions
*
******************************************************************************/
/******************************************************************************
*
* History:
*
* 20090407 v1.0 First version
*
*****************************************************************************/
/** @} */
#ifndef _LIN_COMMON_API_H
#define _LIN_COMMON_API_H
#include "lin.h"
/*FUNCTION*--------------------------------------------------------------*//**
* @fn l_bool l_sys_init ( void )
* @brief This function performs the initialization of the LIN core
*
* @return #l_bool
*
* @SDD_ID LIN_SDD_238
* @endif
*
* @details
* This function performs the initialization of the LIN core
*
* @see #lin_lld_setup_xgate
* @see #lin_lld_timer_init
*
* @addtogroup driver_cluster_group
*//*END*----------------------------------------------------------------------*/
l_bool l_sys_init (void);
/** @} */
#if LIN_MODE == _MASTER_MODE_
/** @addtogroup schedule_management_group
* @{ */
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_sch_set (l_ifc_handle iii, l_schedule_handle schedule_iii, l_u8 entry)
* @brief Set up the next schedule to be followed by the l_sch_tick
*
* @param iii <B>[IN]</B> interface name
* @param schedule_iii <B>[IN]</B> schedule table for interface
* @param entry <B>[IN]</B> entry to be set
*
* @return #void
*
* @SDD_ID LIN_SDD_249
* @endif
*
* @local_var
* -# <B>#lin_configuration</B> <I>conf</I>
*
* @static_global_var
* -# <B>#lin_ifc_configuration</B>
*
* @details
* Set up the next schedule to be followed by the l_sch_tick
* function for a certain interface. The new schedule will be
* activated as soon as the current schedule reaches
* its next schedule entry point
*
*//*END*----------------------------------------------------------------------*/
void l_sch_set (l_ifc_handle iii, l_schedule_handle schedule_iii, l_u8 entry);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn l_u8 l_sch_tick (l_ifc_handle iii)
* @brief follows a schedule
*
* @param iii <B>[IN]</B> interface name
*
* @return #l_u8
*
* @SDD_ID LIN_SDD_250
* @endif
*
* @details
* This function follows a schedule. When a frame becomes due, its
* transmission is initiated. When the end of the current schedule is reached,
* this function starts again at the beginning of the schedule.
*
* @see #lin_tick_callback_handler
*//*END*----------------------------------------------------------------------*/
l_u8 l_sch_tick (l_ifc_handle iii);
/** @} */
/** @addtogroup interface_management_group
* @{ */
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_ifc_goto_sleep (l_ifc_handle iii)
* @brief Request slave nodes to enter bus sleep mode
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_252
* @endif
*
* @local_var
* -# <B>#lin_configuration</B> <I>conf</I>
*
* @static_global_var
* -# <B>#lin_ifc_configuration</B>
*
* @details
* Request slave nodes on the cluster connected to the interface to enter
* bus sleep mode by issuing one go to sleep command.
*
* @see #l_sch_set
*//*END*----------------------------------------------------------------------*/
void l_ifc_goto_sleep (l_ifc_handle iii);
/** @} */
#endif /* LIN_MODE == _MASTER_MODE_ */
/** @addtogroup interface_management_group
* @{ */
/*FUNCTION*--------------------------------------------------------------*//**
* @fn l_bool l_ifc_init (l_ifc_handle iii)
* @brief Initialize the controller specified by name
*
* @param iii <B>[IN]</B> interface name
*
* @return #l_bool
*
* @SDD_ID LIN_SDD_251
* @endif
*
* @details
* Initialize the controller specified by name, i.e. sets up internal
* functions such as the baud rate. The default schedule set by the l_ifc_init
* call will be the L_NULL_SCHEDULE where no frames will be sent and received.
* This is the first call a user must perform, before using any other interface
* related LIN API functions.
* The function returns zero if the initialization was successful and non-zero if failed.
*
* @see #lin_lld_init
*//*END*----------------------------------------------------------------------*/
l_bool l_ifc_init (l_ifc_handle iii);
/* l_ifc_ioctl */
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_ifc_wake_up (l_ifc_handle iii)
* @brief Transmit the wake up signal.
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_253
* @endif
*
*
* @static_global_var
* -# <B>#lin_ifc_configuration</B>
*
* @details
* Transmit the wake up signal.
*
* @see #lin_lld_tx_wake_up
*//*END*----------------------------------------------------------------------*/
void l_ifc_wake_up (l_ifc_handle iii);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_ifc_rx (l_ifc_handle iii)
* @brief Receive one frame
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_254
* @endif
*
* @details
* Receive one frame
*
*//*END*----------------------------------------------------------------------*/
void l_ifc_rx (l_ifc_handle iii);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_ifc_tx (l_ifc_handle iii)
* @brief Transmit one frame
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_255
* @endif
*
* @details
* Transmit one frame
*
*//*END*----------------------------------------------------------------------*/
void l_ifc_tx (l_ifc_handle iii);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn l_u16 l_ifc_read_status (l_ifc_handle iii)
* @brief This function will return the status of the previous communication
*
* @param iii <B>[IN]</B> interface name
*
* @return #l_u16
*
* @SDD_ID LIN_SDD_259
* @endif
*
* @local_var
* -# <B>#l_u16</B> <I>tmp_word_status</I>
* -# <B>#lin_configuration</B> <I>conf</I>
*
* @static_global_var
* -# <B>#lin_word_status</B>
* -# <B>#lin_ifc_configuration</B>
*
* @details
* This function will return the status of the previous communication
*
*//*END*----------------------------------------------------------------------*/
l_u16 l_ifc_read_status (l_ifc_handle iii);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_ifc_aux (l_ifc_handle iii)
* @brief synchronize to the break/sync field
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_256
* @endif
*
* @details
* This function may be used in the slave nodes to synchronize to the
* break/sync field sequence transmitted by the master node on the
* interface specified by name.
*
*//*END*----------------------------------------------------------------------*/
void l_ifc_aux (l_ifc_handle iii);
/** @} */
/** @addtogroup call_out_group
* @{ */
/*FUNCTION*--------------------------------------------------------------*//**
* @fn l_u16 l_sys_irq_disable (l_ifc_handle iii)
* @brief Disable LIN related IRQ
*
* @param iii <B>[IN]</B> interface name
*
* @return #l_u16
*
* @SDD_ID LIN_SDD_257
* @endif
*
* @details
* Disable LIN related IRQ
*
* @see #lin_lld_int_disable
*//*END*----------------------------------------------------------------------*/
l_u16 l_sys_irq_disable (l_ifc_handle iii);
/*FUNCTION*--------------------------------------------------------------*//**
* @fn void l_sys_irq_restore (l_ifc_handle iii)
* @brief Enable LIN related IRQ
*
* @param iii <B>[IN]</B> interface name
*
* @return #void
*
* @SDD_ID LIN_SDD_258
* @endif
*
* @details
* Enable LIN related IRQ
*
* @see #lin_lld_int_enable
*//*END*----------------------------------------------------------------------*/
void l_sys_irq_restore (l_ifc_handle iii);
/** @} */
/** @addtogroup common_core_api_group
* @{ */
/** @} */
#endif /* _LIN_COMMON_API_H */