533 lines
17 KiB
C
533 lines
17 KiB
C
|
/**
|
||
|
* @copyright 2015 Indie Semiconductor.
|
||
|
*
|
||
|
* This file is proprietary to Indie Semiconductor.
|
||
|
* All rights reserved. Reproduction or distribution, in whole
|
||
|
* or in part, is forbidden except by express written permission
|
||
|
* of Indie Semiconductor.
|
||
|
*
|
||
|
* @file lin_stack.h
|
||
|
*/
|
||
|
|
||
|
#ifndef LIN_STACK_H__
|
||
|
#define LIN_STACK_H__
|
||
|
|
||
|
#include <stdint.h>
|
||
|
#include <taskManager.h>
|
||
|
#include <lin_device.h>
|
||
|
|
||
|
/**
|
||
|
* @brief The definitions and enumerations used in the API function in LIN stack.
|
||
|
*/
|
||
|
typedef uint8_t l_bool;
|
||
|
typedef uint8_t l_ioctl_op;
|
||
|
typedef uint8_t l_irqmask;
|
||
|
typedef uint8_t l_u8;
|
||
|
typedef uint16_t l_u16;
|
||
|
typedef uint32_t l_u32;
|
||
|
|
||
|
typedef uint8_t l_signal_handle;
|
||
|
typedef uint8_t l_flag_handle;
|
||
|
typedef uint8_t l_ifc_handle;
|
||
|
typedef uint8_t l_schedule_handle;
|
||
|
|
||
|
typedef enum{
|
||
|
LIN_PCI_SF = 0U,
|
||
|
LIN_PCI_FF,
|
||
|
LIN_PCI_CF
|
||
|
}PCI_Types_t;
|
||
|
|
||
|
typedef enum{
|
||
|
PDU_TYPE_SINGLE_PDU = 0U,
|
||
|
PDU_TYPE_MULTI_PDU,
|
||
|
}PDU_Types_t;
|
||
|
|
||
|
typedef enum{
|
||
|
TX_IDLE = 0U,
|
||
|
TX_SENDING,
|
||
|
TX_FINISHED,
|
||
|
TX_FAILED
|
||
|
}TxStatus_t;
|
||
|
|
||
|
typedef enum{
|
||
|
LIN_PROTOCOL_LIN2_2A = 0U,
|
||
|
LIN_PROTOCOL_SAE_J2602,
|
||
|
}LinProtocolType_t;
|
||
|
|
||
|
typedef enum{
|
||
|
J2602_ERROR_NO_DETECTED_FAULT = 0,
|
||
|
J2602_ERROR_RESET,
|
||
|
J2602_ERROR_RESERVED0,
|
||
|
J2602_ERROR_RESERVED1,
|
||
|
J2602_ERROR_DATA_ERROR,
|
||
|
J2602_ERROR_CHECKSUM_ERROR,
|
||
|
J2602_ERROR_BYTE_FIELD_FRAMING_ERROR,
|
||
|
J2602_ERROR_ID_PARITY_ERROR,
|
||
|
}J2602ErrCode_t;
|
||
|
|
||
|
|
||
|
#define SF_MAX_DATA_LENGTH (5U)
|
||
|
|
||
|
#define LIN_NAD_FUNCTION (0x7EU)
|
||
|
#define LIN_NAD_WILDCARD (0x7FU)
|
||
|
#define LIN_SUPPLIER_ID_WILDCARD (0x7FFFU)
|
||
|
#define LIN_FUNCTION_ID_WILDCARD (0xFFFFU)
|
||
|
#define LIN_SERIALNO_WILDCARD (0x01234567U)
|
||
|
|
||
|
/**
|
||
|
* @brief The enumerations of frame identifiers.
|
||
|
*/
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_START (0x38U)
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_END (0x3BU)
|
||
|
|
||
|
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_38 (0x38U)
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_39 (0x39U)
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_3A (0x3AU)
|
||
|
#define LIN_FRAME_ID_J2602_DNN_BROADCAST_3B (0x3BU)
|
||
|
|
||
|
|
||
|
#define LIN_FRAME_ID_DIAG_MASTER_REQ (0x3CU)
|
||
|
#define LIN_FRAME_ID_DIAG_SLAVER_RSP (0x3DU)
|
||
|
#define LIN_FRAME_ID_DIAG_MASTER_REQ_3E (0x3EU)
|
||
|
|
||
|
#define LIN_FRAME_ID_FUNCTIONAL (0x7EU)
|
||
|
#define LIN_FRAME_ID_UNASSIGN (0x00U)
|
||
|
#define LIN_FRAME_ID_DONOTCARE (0xFFU)
|
||
|
|
||
|
/**
|
||
|
* @brief The enumerations of service IDs.
|
||
|
*/
|
||
|
#define LIN_SID_ASSIGN_NAD (0xB0U)
|
||
|
#define LIN_SID_ASSIGN_FRAME_ID (0xB1U)
|
||
|
#define LIN_SID_READ_BY_ID (0xB2U)
|
||
|
#define LIN_SID_CONDITIONAL_CHANGE_NAD (0xB3U)
|
||
|
#define LIN_SID_DATA_DUMP (0xB4U)
|
||
|
#define LIN_SID_RESERVED (0xB5U)
|
||
|
#define LIN_SID_SAVE_CONFIGURATION (0xB6U)
|
||
|
#define LIN_SID_ASSIGN_FRAME_ID_RANGE (0xB7U)
|
||
|
|
||
|
#define LIN_SID_SNPD LIN_SID_RESERVED
|
||
|
#define LIN_SID_J2602_HARDWARE_RST LIN_SID_RESERVED
|
||
|
|
||
|
typedef union{
|
||
|
struct{
|
||
|
uint8_t appInfo0 :1;
|
||
|
uint8_t appInfo1 :1;
|
||
|
uint8_t appInfo2 :1;
|
||
|
uint8_t appInfo3 :1;
|
||
|
uint8_t appInfo4 :1;
|
||
|
uint8_t err :3;
|
||
|
};
|
||
|
uint8_t payload;
|
||
|
}J2602StatusByte_t;
|
||
|
|
||
|
typedef union{
|
||
|
struct{
|
||
|
uint8_t nad;
|
||
|
union{
|
||
|
uint8_t pci;
|
||
|
struct{
|
||
|
uint8_t pci_extInfo :4;
|
||
|
uint8_t pci_type :4;
|
||
|
};
|
||
|
};
|
||
|
union{
|
||
|
uint8_t sid;
|
||
|
uint8_t length;
|
||
|
uint8_t rsid;
|
||
|
struct{
|
||
|
uint8_t length_ff;
|
||
|
uint8_t sid_rsid_ff;
|
||
|
};
|
||
|
uint8_t payload[6];
|
||
|
};
|
||
|
};
|
||
|
uint8_t data[8];
|
||
|
uint64_t data64;
|
||
|
}NodeStruct_t;
|
||
|
|
||
|
typedef struct{
|
||
|
PDU_Types_t type; /* pdu type single or multi pdu */
|
||
|
uint8_t sid; /* sid */
|
||
|
uint16_t packLength; /* the complete valid data buffer length except the length of sid */
|
||
|
uint8_t *payload; /* data in received buffer */
|
||
|
}DiagSubscribeInfo_t;
|
||
|
|
||
|
|
||
|
typedef struct{
|
||
|
PDU_Types_t type; /* pdu type single or multi pdu */
|
||
|
uint8_t sid; /* sid */
|
||
|
uint16_t packLength; /* the complete valid data buffer length except the length of SID */
|
||
|
uint8_t *payload; /* data buffer to be sent except SID*/
|
||
|
}DiagPublishInfo_t;
|
||
|
|
||
|
|
||
|
typedef struct{
|
||
|
uint16_t buffLength; /* the complete valid data buffer length except the length of SID */
|
||
|
uint8_t *buff; /* data buffer to be sent except SID*/
|
||
|
}DiagMultiPduInfo_t;
|
||
|
|
||
|
|
||
|
typedef enum{
|
||
|
SLEEP_REQ_TYPE_NONE = 0U, /* none of sleep request */
|
||
|
SLEEP_REQ_TYPE_MASTER_REQ, /* sleep request with filled with 0xFF in buff[1-7] */
|
||
|
SLEEP_REQ_TYPE_MASTER_REQ_INFORMAL, /* sleep request without filled with 0xFF in buff[1-7] */
|
||
|
SLEEP_REQ_TYPE_BUS_IDLE_TIMEROUT,
|
||
|
}SleepRequestType_t;
|
||
|
|
||
|
typedef enum{
|
||
|
BUS_WAKEUP_REQ_RESULT_MASTER_ACTIVE = 0, /* wakeup bus successfully, master send frame ID after wake up */
|
||
|
BUS_WAKEUP_REQ_RESULT_REQ_TIMEOUT, /* wakeup bus failed after 3 tries */
|
||
|
}BusWakeUpRequestResult_t;
|
||
|
|
||
|
typedef void (*ls_UnconditionalReqCallback_t)(LIN_Device_Frame_t const *frame);
|
||
|
typedef void (*ls_UnconditionalRspCallback_t)(LIN_Device_Frame_t *const frame);
|
||
|
typedef void (*ls_PublisherTxFinishedCallback_t)(uint8_t fid, uint8_t j2602CfgRsp);
|
||
|
typedef void (*ls_DiagReqCallback_t)(const DiagSubscribeInfo_t * const frameInfo);
|
||
|
typedef void (*ls_DiagFunctionalNADCallback_t)(const NodeStruct_t * const frame);
|
||
|
typedef void (*ls_DiagSleepReqCallback_t)(SleepRequestType_t type);
|
||
|
typedef void (*ls_BusWakeUpRequestCallback_t)(BusWakeUpRequestResult_t result);
|
||
|
|
||
|
typedef void (*ls_DiagReqLogCallback_t)(const LIN_Device_Frame_t * const frame);
|
||
|
typedef void (*ls_FrameIdLogCallback_t)(uint8_t frameId);
|
||
|
|
||
|
typedef void (*ls_SAEJ2602CfgReqCallback_t)(uint8_t fid,uint8_t const *payload, uint8_t length);
|
||
|
typedef void (*ls_SAEJ2602DNNBroadcastReqCallback_t)(uint8_t fid,uint8_t const *payload, uint8_t length);
|
||
|
|
||
|
typedef struct{
|
||
|
ls_UnconditionalReqCallback_t unconditionalSubscribedCallback; /* received data from master */
|
||
|
ls_UnconditionalRspCallback_t unconditionalPublishedCallback; /* send data to master */
|
||
|
ls_PublisherTxFinishedCallback_t publisherTxFinishedCallback; /* send data to master finished */
|
||
|
ls_DiagReqCallback_t diagnosticSubscribedCallback; /* Diagnostic and MultiPDU received data from master */
|
||
|
ls_DiagFunctionalNADCallback_t diagFunctionalNADCallback; /* special functional NAD (0x7E) handler*/
|
||
|
ls_DiagSleepReqCallback_t diagnosticSleepRequestCallback; /* Diagnostic sleep request from master */
|
||
|
ls_BusWakeUpRequestCallback_t busWakeUpRequestCallback; /* got the bus state after slave sending wake up signal.*/
|
||
|
ls_SAEJ2602CfgReqCallback_t SAEJ2602CfgReqCallback; /* refers to SAEJ2602-1 5.7.2.3 Configuration Messages */
|
||
|
ls_SAEJ2602DNNBroadcastReqCallback_t SAEJ2602DNNBroadcastReqCallback; /* DNN Based Broadcast Messages */
|
||
|
}ls_LinsFramesCallback_t;
|
||
|
|
||
|
typedef struct{
|
||
|
l_u8 device; /* 1: means realplum(IND83205) , 2: rugby(IND83204) 3: realplumPro(IND82209),4: rugbyPro(IND83211),5: realplumLite(IND83212)*/
|
||
|
l_u8 protocol; /* 0:with LIN stack V2.2A ,1: with LIN stack SAE_J2602, 2: with LIN stack V2.2A_SAE_J2602 */
|
||
|
l_u16 version; /* 0x0101 means V1.01 */
|
||
|
}lin_stack_version_t;
|
||
|
|
||
|
/**
|
||
|
* @brief A structure to represent LIN status information.
|
||
|
*/
|
||
|
typedef union {
|
||
|
struct{
|
||
|
l_u8 error_in_resp :1;
|
||
|
l_u8 success_in_transfer :1;
|
||
|
l_u8 overrun :1;
|
||
|
l_u8 goto_sleep :1;
|
||
|
l_u8 bus_activity :1;
|
||
|
l_u8 event_trig_frame_collision :1;
|
||
|
l_u8 save_config :1;
|
||
|
l_u8 parity_error :1; /* FID parity error bit */
|
||
|
l_u8 pid;
|
||
|
};
|
||
|
l_u16 payload;
|
||
|
}lin_status_t;
|
||
|
|
||
|
|
||
|
typedef enum{
|
||
|
LD_SET_OK = 0,
|
||
|
LD_LENGTH_NOT_CORRECT,
|
||
|
LD_DATA_ERROR
|
||
|
}ld_set_status_t;
|
||
|
|
||
|
typedef enum{
|
||
|
LD_READ_OK = 0,
|
||
|
LD_LENGTH_TOO_SHORT,
|
||
|
}ld_read_status_t;
|
||
|
|
||
|
/*
|
||
|
* Lin stack main task which was called by task manager, please don't use for other purpose!!!:
|
||
|
* @param [in] none
|
||
|
* @return none
|
||
|
*/
|
||
|
void LinStack_TaskHandler(void);
|
||
|
|
||
|
/*
|
||
|
* Get current Lin stack version:
|
||
|
* @param [in] none
|
||
|
* @return lin_stack_version: majorVer: main version; subVer: branch version
|
||
|
*/
|
||
|
lin_stack_version_t ls_get_lin_version(void);
|
||
|
|
||
|
/*
|
||
|
* Lin stack initialization:
|
||
|
* @param [in] none
|
||
|
* @return 0
|
||
|
*/
|
||
|
l_bool l_sys_init(void);
|
||
|
|
||
|
/*
|
||
|
* Set Lin transport layer timeout parameters:
|
||
|
* @param [in] n_as: N_As, refer to LIN spec 2.2A
|
||
|
* @param [in] n_cr: N_Cr, refer to LIN spec 2.2A
|
||
|
* @return 0
|
||
|
*/
|
||
|
l_u8 ls_set_tp_timeout(uint16_t n_as, uint16_t n_cr);
|
||
|
|
||
|
/*
|
||
|
* Set Lin lin tx bit monitor:
|
||
|
* @param [in] enable: TRUE: enable bit monitor; FALSE: disable bit monitor
|
||
|
* @return 0
|
||
|
*/
|
||
|
l_u8 ls_set_tx_bit_monitor(l_u8 enable);
|
||
|
|
||
|
/*
|
||
|
* Disable LIN auto sleep when LIN timeout:
|
||
|
* @param [in] TRUE: disable auto sleep; FALSE: enable auto sleep
|
||
|
* @return 0
|
||
|
*/
|
||
|
l_u8 ls_disable_lin_auto_sleep(l_u8 disable);
|
||
|
|
||
|
/*
|
||
|
* Set Lin phy 1st rx glitch signal filter timing :
|
||
|
* @param [in] risingTime: level 0 -> level1 delay time; range 0-127 unit: 62.5us
|
||
|
* @param [in] fallingTime:level 0 -> level 1 delay time, range 0-127 unit: 62.5us
|
||
|
* @return 0, successfully , others: failed
|
||
|
*/
|
||
|
l_u8 ls_set_lins_rx_glitch_filter_1st(l_u8 risingTime,l_u8 fallingTime);
|
||
|
|
||
|
/*
|
||
|
* Set Lin phy 2nd rx glitch signal filter timing :
|
||
|
* @param [in] risingTime: level 0 -> level1 delay time; range 0-127 unit: 62.5us
|
||
|
* @param [in] fallingTime:level 0 -> level 1 delay time, range 0-127 unit: 62.5us
|
||
|
* @return 0, successfully , others: failed
|
||
|
*/
|
||
|
l_u8 ls_set_lins_rx_glitch_filter_2nd(l_u8 risingTime,l_u8 fallingTime);
|
||
|
|
||
|
/*
|
||
|
* Set Lin phy 3rd rx glitch signal filter timing :
|
||
|
* @param [in] risingTime: level 0 -> level1 delay time; range 0-127 unit: 62.5us
|
||
|
* @param [in] fallingTime:level 0 -> level 1 delay time, range 0-127 unit: 62.5us
|
||
|
* @return 0, successfully , others: failed
|
||
|
*/
|
||
|
l_u8 ls_set_lins_rx_glitch_filter_3rd(l_u8 risingTime,l_u8 fallingTime);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Reqister supported unconditional frame table
|
||
|
* @param [in] protocol: LIN protocol type 0: LIN_PROTOCOL_LIN2_2A, 1: LIN_PROTOCOL_SAE_J2602.
|
||
|
* @param [in] frameTable: frame table location
|
||
|
* @param [in] tableSize: frame table size
|
||
|
* @param [in] diagPDUSubscriberBuffLength: diagnostic multi pdu max supported data length, this value should be within 7-4095
|
||
|
* @param [in] pFunCallback: callback fucntions for diagnostic frame and unconditional frames.
|
||
|
* @return none
|
||
|
*/
|
||
|
void ls_register_services(LinProtocolType_t protocol,LIN_Device_Frame_t *frameTable, l_u8 tableSize, DiagMultiPduInfo_t multiPduInfo,const ls_LinsFramesCallback_t *pFunCallback);
|
||
|
|
||
|
/*
|
||
|
* Diagnostic frame response function which is used to send back data to LIN master.
|
||
|
* @param [in] rsp: refer to description of structure DiagPublishInfo_t definition.
|
||
|
* @return none
|
||
|
*/
|
||
|
void ls_handle_diagnostic_response(DiagPublishInfo_t *rsp);
|
||
|
|
||
|
/*
|
||
|
* SAEJ2602 CFG 0x3C or 0x3E frame response function which is used to send back data to LIN master.
|
||
|
* @param [in] rsp: refer to SAEJ2602-1 5.7.2.4 Response Message to Options 2 and 3 in 5.7.2.3.
|
||
|
* @param [in] statusByte:J2602-1 Status Byte(defined in 5.8.6)
|
||
|
* @param [in] payload: databuff 0-6 the paylad length should be 7 by default.
|
||
|
* @return none
|
||
|
*/
|
||
|
void ls_handle_SAEJ2602Cfg_response(l_u8 statusByte, l_u8 *payload);
|
||
|
|
||
|
/*
|
||
|
*!!!!!!!!!!!!!!!!!!!Note that obsolete not recommended for future use!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
* frame response send status.
|
||
|
* @return TxStatus_t.
|
||
|
*/
|
||
|
TxStatus_t ls_tx_status(void);
|
||
|
|
||
|
/*
|
||
|
* Set device initial NAD to LIN stack for assigning NAD command.
|
||
|
* @param [in] nad: initial NAD of device.
|
||
|
* @return none
|
||
|
*/
|
||
|
void ls_set_initialNad(l_u8 nad);
|
||
|
/*
|
||
|
* Set device NAD to LIN stack.
|
||
|
* @param [in] nad: current NAD of device.
|
||
|
* @return none
|
||
|
*/
|
||
|
void ls_set_nad(l_u8 nad);
|
||
|
|
||
|
/*
|
||
|
* Red NAD of LIN stack.
|
||
|
* @param [in] none.
|
||
|
* @return current NAD of LIN stack.
|
||
|
*/
|
||
|
l_u8 ls_read_nad(void);
|
||
|
|
||
|
/*
|
||
|
* Red NAD of current diagnostic frame sent from LIN master, there are only probably 2 values: current NAD or 0x7FU(NAD wildcard).
|
||
|
* @param [in] none.
|
||
|
* @return NAD of current diagnostic frame.
|
||
|
*/
|
||
|
l_u8 ls_read_nad_from_master(void);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* any invalid diag frame would be handled ignore the frame is or is not for current node when set to 1U.
|
||
|
* @param [in] value 0U: ignore the diag frame error when it is not for current node, 1U: any invalid diag frame would be handled ignore the frame is or is not for current node when set to 1U.
|
||
|
* @return TRUE.
|
||
|
*/
|
||
|
l_u8 ls_diag_error_in_all_diag_frames(uint8_t value);
|
||
|
|
||
|
/*
|
||
|
* Save current LIN Stack parameters such as NAD, PIDs etc. refer to pdsTask for more information.
|
||
|
* @param [in] none.
|
||
|
* @return 0.
|
||
|
*/
|
||
|
l_u8 ls_save_configuration(void);
|
||
|
|
||
|
/*
|
||
|
* clear save_configuration flag.
|
||
|
* @param [in] none.
|
||
|
* @return 0.
|
||
|
*/
|
||
|
l_u8 ls_clr_save_configuration_flag(void);
|
||
|
|
||
|
/*
|
||
|
* !!!!!!!!!!!!!!!!!!!Note that obsolete not recommended for future use!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
* replace with function ls_ifc_read_status() and ls_ifc_read_status()
|
||
|
* Read current error flag and system information, refer to struture lin_status_t for more information.
|
||
|
* @param [in] none.
|
||
|
* @return:
|
||
|
l_u8 error_in_resp :1;
|
||
|
l_u8 success_in_transfer :1;
|
||
|
l_u8 overrun :1;
|
||
|
l_u8 goto_sleep :1;
|
||
|
l_u8 bus_activity :1;
|
||
|
l_u8 event_trig_frame_collision :1;
|
||
|
l_u8 save_config :1;
|
||
|
l_u8 parity_error :1;
|
||
|
l_u8 pid;
|
||
|
*/
|
||
|
l_u16 ls_read_sys_status(void);
|
||
|
|
||
|
/*
|
||
|
* !!!!!!!!!!!!!!!!!!!Note that obsolete not recommended for future use!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
* replace with function ls_ifc_read_status() and ls_ifc_read_status()
|
||
|
* Read current error flag and system information, simulate with ls_read_sys_status
|
||
|
* @return:
|
||
|
l_u8 error_in_resp :1;
|
||
|
l_u8 success_in_transfer :1;
|
||
|
l_u8 overrun :1;
|
||
|
l_u8 goto_sleep :1;
|
||
|
l_u8 bus_activity :1;
|
||
|
l_u8 event_trig_frame_collision :1;
|
||
|
l_u8 save_config :1;
|
||
|
l_u8 parity_error :1;
|
||
|
l_u8 pid;
|
||
|
*/
|
||
|
lin_status_t ls_read_sys_status_ext(void);
|
||
|
|
||
|
/*
|
||
|
* Read current error flag and system information, simulate with ls_read_sys_status not don't clear the status
|
||
|
* @return:
|
||
|
l_u8 error_in_resp :1;
|
||
|
l_u8 success_in_transfer :1;
|
||
|
l_u8 overrun :1;
|
||
|
l_u8 goto_sleep :1;
|
||
|
l_u8 bus_activity :1;
|
||
|
l_u8 event_trig_frame_collision :1;
|
||
|
l_u8 save_config :1;
|
||
|
l_u8 parity_error :1;
|
||
|
l_u8 pid;
|
||
|
*/
|
||
|
lin_status_t ls_ifc_read_status(void);
|
||
|
|
||
|
/*
|
||
|
* reset lin error status.
|
||
|
* @param [in] errCode.
|
||
|
* @return: 0U;
|
||
|
*/
|
||
|
l_u8 ls_ifc_clear_error_status(void);
|
||
|
|
||
|
/*
|
||
|
* !!!!!!!!!!!!!!!!!!!Note that obsolete not recommended for future use!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
|
* replace with function : ls_read_error_code_log() and ls_clr_error_code_log()
|
||
|
* Read current lin stack communication error reasons, this is only for internal use.
|
||
|
* @param [in] none.
|
||
|
* @return: ((1U << ERROR_BITERR_POS) | (1U << ERROR_CHK_POS) | (1U << ERROR_BITMON_POS) | (1U << ERROR_FRAMEERR_POS)) refer to LINS->ERROR register
|
||
|
*/
|
||
|
l_u8 ls_read_error_code(void);
|
||
|
|
||
|
/*
|
||
|
* Read current lin stack communication error reasons, this is only for internal use and don't clear the error log
|
||
|
* @param [in] none.
|
||
|
* @return: ((1U << ERROR_BITERR_POS) | (1U << ERROR_CHK_POS) | (1 << ERROR_PARITY_POS) | (1U << ERROR_BITMON_POS) | (1U << ERROR_FRAMEERR_POS))refer to LINS->ERROR register
|
||
|
*/
|
||
|
l_u8 ls_read_error_code_log(void);
|
||
|
|
||
|
/*
|
||
|
* clear the erroe code log.
|
||
|
* @param [in] none.
|
||
|
* @return: 0;
|
||
|
*/
|
||
|
l_u8 ls_clr_error_code_log(void);
|
||
|
|
||
|
/*
|
||
|
* Read SAEJ2602 communication error state.
|
||
|
* @param [in] none.
|
||
|
* @return: J2602ErrCode_t
|
||
|
*/
|
||
|
J2602ErrCode_t ls_read_J2602_error_code(void);
|
||
|
|
||
|
/*
|
||
|
* reset SAEJ2602 communication error state when response successfully.
|
||
|
* @param [in] errCode.
|
||
|
* @return: none
|
||
|
*/
|
||
|
void ls_reset_J2602_error_code(J2602ErrCode_t errCode);
|
||
|
|
||
|
/*
|
||
|
* Notice lin stack it's a hardware reset operation.
|
||
|
* @param [in] 0: hardware reset is false, 1: hardware reset is true.
|
||
|
* @return: none
|
||
|
*/
|
||
|
void ls_set_J2602_hardware_reset(uint8_t hardwareReset);
|
||
|
|
||
|
|
||
|
/*
|
||
|
* read go_to_sleep flag
|
||
|
* @param [in] none.
|
||
|
* @return: state: 1: got go_to_sleep command, 0: not got go_to_sleep command
|
||
|
*/
|
||
|
l_u8 ls_read_go_to_sleep_flag(void);
|
||
|
/*
|
||
|
* Clear go_to_sleep flag
|
||
|
* @param [in] none.
|
||
|
* @return: 0U
|
||
|
*/
|
||
|
l_u8 ls_clr_go_to_sleep_flag(void);
|
||
|
|
||
|
/*
|
||
|
* Clear overrun flag
|
||
|
* @param [in] none.
|
||
|
* @return: 0U
|
||
|
*/
|
||
|
l_u8 ls_clr_overrun_flag(void);
|
||
|
|
||
|
/*
|
||
|
* Read current LIN BUS Status.
|
||
|
* @param [in] none.
|
||
|
* @return: 1: active, 0: IDLE;, refer to "bus_activity" in function:ls_ifc_read_status();
|
||
|
*/
|
||
|
l_u32 ls_linbus_activity(void);
|
||
|
|
||
|
/*
|
||
|
* Slave trigger to send wake up signal on LIN bus for 3 times if there is no LIN frame on the LIN bus after wake up signal.
|
||
|
* @param [in] none.
|
||
|
* @return: none;
|
||
|
*/
|
||
|
void ls_send_wake_up_bus_signal(void);
|
||
|
|
||
|
#endif /* __LIN_STACK_H__ */
|