从UKEA-77移植

This commit is contained in:
sunbeam0529 2025-04-26 16:03:23 +08:00
parent f0d95d5179
commit 497f724292
589 changed files with 213939 additions and 0 deletions

6
code_app_out/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"files.associations": {
"key_app.h": "c",
"demm.h": "c"
}
}

View File

@ -0,0 +1,244 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Network Management module head File
* Author : Hirain
********************************************************************************
* Description : CAN Network Management module head File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/09/2016 liya.zhu N/A Original
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_H_
#define _CANNM_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Lcfg.h"
#include "CanNm_PBcfg.h"
#include "compiler.h"
/**********************************************************************************************************************
* Functions
*********************************************************************************************************************/
/*Development error code*/
#define CANNM_E_NO_INIT ((uint8)0x01u)
#define CANNM_E_INVALID_CHANNEL ((uint8)0x02u)
#define CANNM_E_INVALID_PDUID ((uint8)0x03u)
#define CANNM_E_NET_START_IND ((uint8)0x04u)
#define CANNM_E_INIT_FAILED ((uint8)0x05u)
#define CANNM_E_NETWORK_TIMEOUT ((uint8)0x11u)
#define CANNM_E_PARAM_POINTER ((uint8)0x12u)
#define CANNM_INIT_APIID ((uint8)0x00U)
#define CANNM_PASSIVESTARTUP_APIID ((uint8)0x01U)
#define CANNM_NETWORKREQUEST_APIID ((uint8)0x02U)
#define CANNM_NETWORKRELEAE_APIID ((uint8)0x03U)
#define CANNM_SETUSERDATA_APIID ((uint8)0x04U)
#define CANNM_GETUSERDATA_APIID ((uint8)0x05U)
#define CANNM_GETNODEID_APIID ((uint8)0x06U)
#define CANNM_GETLOCALNODEID_APIID ((uint8)0x07U)
#define CANNM_RPTMSGREQ_APIID ((uint8)0x08U)
#define CANNM_GETPDUDATA_APIID ((uint8)0x0AU)
#define CANNM_GETSTATE_APIID ((uint8)0x0BU)
#define CANNM_DISABLECOMM_APIID ((uint8)0x0CU)
#define CANNM_ENABLECOMM_APIID ((uint8)0x0DU)
#define CANNM_MAINFUNC_APIID ((uint8)0x13U)
#define CANNM_TRANSMIT_APIID ((uint8)0x14U)
#define CANNM_TXCFM_APIID ((uint8)0x40U)
#define CANNM_RXIND_APIID ((uint8)0x42U)
#define CANNM_REQBUSSYNCH_APIID ((uint8)0xC0U)
#define CANNM_CHECKRMTSLEEPIND_APIID ((uint8)0xD0U)
#define CANNM_GETVERSIONINFO_APIID ((uint8)0xF1U)
#include "MemMap.h"
/*[SWS_CanNm_00208]*/
extern FUNC(void, CANNM_CODE) CanNm_Init
( P2CONST(CanNm_ConfigType, AUTOMATIC, CANNM_APPL_DATA) cannmConfigPtr );
/*[SWS_CanNm_00211]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_PassiveStartUp
(
NetworkHandleType nmChannelHandle
);
extern FUNC(void, CANNM_CODE) CanNm_RxIndication
(
PduIdType RxPudId,
const uint16 RxId,
CONSTP2CONST(PduInfoType, AUTOMATIC, CANNM_APPL_DATA)PduInfoPtr
);
extern FUNC(void, CANNM_CODE) CanNm_TxConfirmation
(
PduIdType TxPudId
);
/*[SWS_CanNm_00257]*//*[SWS_CanNm_00260]*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*[SWS_CanNm_00213]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_NetworkRequest
(
NetworkHandleType nmChannelHandle
);
/*[SWS_CanNm_00214]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_NetworkRelease
(
NetworkHandleType nmChannelHandle
);
#endif
/*[SWS_CanNm_00262]*//*[SWS_CanNm_00264]*/
#if(CANNM_COM_CONTROL_ENABLED == STD_ON)
/*[SWS_CanNm_00215]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_DisableCommunication
(
NetworkHandleType nmChannelHandle
);
/*[SWS_CanNm_00216]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_EnableCommunication
(
NetworkHandleType nmChannelHandle
);
#endif
/*[SWS_CanNm_00266]*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*[SWS_CanNm_00158]*/
#if(CANNM_USER_DATA_ENABLED == STD_ON)
/*[SWS_CanNm_00327]*/
#if(CANNM_COM_USER_DATA_SUPPORT == STD_OFF)
/*[SWS_CanNm_00217]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_SetUserData
(
NetworkHandleType nmChannelHandle,
P2CONST(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
);
#endif
#endif
#endif
/*[SWS_CanNm_00268]*/
/*[SWS_CanNm_00158]*/
#if(CANNM_USER_DATA_ENABLED == STD_ON)
/*[SWS_CanNm_00218]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_GetUserData
(
NetworkHandleType nmChannelHandle,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
);
#endif
/*[SWS_CanNm_00330]*/
#if(CANNM_COM_USER_DATA_SUPPORT == STD_ON)
/*[SWS_CanNm_00331]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_Transmit
(
PduIdType CanNmTxPduId,
P2CONST(PduInfoType, AUTOMATIC, CANNM_APPL_DATA) PduInfoPtr
);
#endif
/*[SWS_CanNm_00270]*//*[SWS_CanNm_00272]*/
#if(CANNM_NODE_ID_ENABLED == STD_ON)
/*[SWS_CanNm_00219]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_GetNodeIdentifier
(
NetworkHandleType nmChannelHandle,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmNodeIdPtr
);
/*[SWS_CanNm_00220]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_GetLocalNodeIdentifier
(
NetworkHandleType nmChannelHandle,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmNodeIdPtr
);
#endif
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*[SWS_CanNm_00274]*/
/*[SWS_CanNm_00135]*/
#if(CANNM_NODE_DETECTION_ENABLED == STD_ON)
/*[SWS_CanNm_00221]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_RepeatMessageRequest
(
NetworkHandleType nmChannelHandle
);
#endif
#endif
/*[SWS_CanNm_00276]*/
#if((CANNM_NODE_DETECTION_ENABLED == STD_ON)||(CANNM_USER_DATA_ENABLED == STD_ON)||(CANNM_NODE_ID_ENABLED == STD_ON))
/*[SWS_CanNm_00222]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_GetPduData
(
NetworkHandleType nmChannelHandle,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmPduDataPtr
);
#endif
/*[SWS_CanNm_00223]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_GetState
(
NetworkHandleType nmChannelHandle,
P2VAR(Nm_StateType, AUTOMATIC, CANNM_APPL_DATA) nmStatePtr,
P2VAR(Nm_ModeType, AUTOMATIC, CANNM_APPL_DATA) nmModePtr
);
#if(CANNM_VERSION_INFO_API == STD_ON)
/*[SWS_CanNm_00224]*/
extern FUNC(void, CANNM_CODE) CanNm_GetVersionInfo
(
P2VAR(Std_VersionInfoType, AUTOMATIC, CANNM_APPL_DATA) versioninfo
);
#endif
/*[SWS_CanNm_00280]*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
#if(CANNM_BUS_SYNCHRONIZATION_ENABLED == STD_ON)
/*[SWS_CanNm_00226]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_RequestBusSynchronization
(
NetworkHandleType nmChannelHandle
);
#endif
/*[SWS_CanNm_00282]*/
#if(CANNM_REMOTE_SLEEP_IND_ENABLED == STD_ON)
/*[SWS_CanNm_00227]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_CheckRemoteSleepIndication
(
NetworkHandleType nmChannelHandle,
P2VAR(boolean, AUTOMATIC, CANNM_APPL_DATA) nmRemoteSleepIndPtr
);
#endif
#endif
/*[SWS_CanNm_00340]*/
#if(CANNM_COORDINATOR_SYNC_SUPPORT == STD_ON)
/*[SWS_CanNm_00338]*/
extern FUNC(Std_ReturnType, CANNM_CODE) CanNm_SetSleepReadyBit
(
NetworkHandleType nmChannelHandle,
boolean nmSleepReadyBit
);
#endif
/*[SWS_CanNm_00234]*/
extern FUNC(void, CANNM_CODE) CanNm_MainFunction
(
void
);
extern void CanNm_StartWbsTimer(uint8 nmChannelHandle);
#define CANNM_STOP_SEC_CODE
#include "MemMap.h"
#endif/*_CANNM_H_*/

View File

@ -0,0 +1,66 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Callout.c
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 12/09/2017 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Callout.h"
#include "Bsw_Common.h"
#define CANNM_USER_DATA_LENGTH ((uint8)6u)
#define CANNM_START_SEC_CODE
#include "MemMap.h"
FUNC(void, CANNM_CODE) CanNm_SetUserDataCall
(
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) dataBuffPtr,
P2CONST(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
)
{
Bsw_MemCpy(&dataBuffPtr[(CANNM_PDU_LENGTH - CANNM_USER_DATA_LENGTH)], nmUserDataPtr,
CANNM_USER_DATA_LENGTH);
}
FUNC(void, CANNM_CODE) CanNm_GetUserDataCall
(
P2CONST(uint8, AUTOMATIC, CANNM_APPL_DATA) dataBuffPtr,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
)
{
Bsw_MemCpy(nmUserDataPtr, &dataBuffPtr[(CANNM_PDU_LENGTH - CANNM_USER_DATA_LENGTH)],
CANNM_USER_DATA_LENGTH);
}
#define CANNM_STOP_SEC_CODE
#include "MemMap.h"

View File

@ -0,0 +1,59 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Callout.h
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 12/09/2017 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_CALLOUT_H_
#define _CANNM_CALLOUT_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Lcfg.h"
#define CANNM_START_SEC_CODE
#include "MemMap.h"
extern FUNC(void, CANNM_CODE) CanNm_SetUserDataCall
(
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) dataBuffPtr,
P2CONST(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
);
extern FUNC(void, CANNM_CODE) CanNm_GetUserDataCall
(
P2CONST(uint8, AUTOMATIC, CANNM_APPL_DATA) dataBuffPtr,
P2VAR(uint8, AUTOMATIC, CANNM_APPL_DATA) nmUserDataPtr
);
#define CANNM_STOP_SEC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,64 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Cbk.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Network Management module call back head File
* Author : Hirain
********************************************************************************
* Description : CAN Network Management module call back head File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/09/2016 liya.zhu N/A Original
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_CBK_H_
#define _CANNM_CBK_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Types.h"
/**********************************************************************************************************************
* Functions
*********************************************************************************************************************/
#define CANNM_START_SEC_CODE
#include "MemMap.h"
/*[SWS_CanNm_00284]*/
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
/*[SWS_CanNm_00228]*/
extern FUNC(void, CANNM_CODE) CanNm_TxConfirmation
(
PduIdType TxPudId
);
#endif
/*[SWS_CanNm_00231]*/
extern FUNC(void, CANNM_CODE) CanNm_RxIndication
(
PduIdType RxPudId,
const uint16 RxId,
P2CONST(PduInfoType, AUTOMATIC, CANNM_APPL_DATA)PduInfoPtr
);
#define CANNM_STOP_SEC_CODE
#include "MemMap.h"
#endif/*_CANNM_CBK_H_*/

View File

@ -0,0 +1,166 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Types.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Network Management module type definitions head File
* Author : Hirain
********************************************************************************
* Description : CAN Network Management module type definitions head File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/09/2016 liya.zhu N/A Original
********************************************************************************
* END_FILE_HDR*/
#ifndef _CAN_NM_TYPES_H_
#define _CAN_NM_TYPES_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "NmStack_Types.h"
#include "CanNm_Cfg.h"
#include "CanNm_Version.h"
#include "CanIf.h"
typedef enum
{
CANNM_PDU_BYTE_0 =0u, /*Byte 0 is used*/
CANNM_PDU_BYTE_1 =1u, /*Byte 1 is used*/
CANNM_PDU_OFF =2u /*No Byte is used*/
}CanNm_PduBytePosType;
/*[SWS_CanNm_00202]*/
typedef struct
{
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*ECUC_CanNm_00084*/
boolean CanNmActiveWakeupBitEnabled;
#endif
/*ECUC_CanNm_00068*/
boolean CanNmAllNmMessagesKeepAwake;
#if(CANNM_BUS_LOAD_REDUCTION_ENABLED == STD_ON)
/*ECUC_CanNm_00042*/
boolean CanNmBusLoadReductionActive;
#endif
/*ECUC_CanNm_00075*/
uint8 CanNmCarWakeUpBitPosition;
/*ECUC_CanNm_00076*/
uint8 CanNmCarWakeUpBytePosition;
/*ECUC_CanNm_00077*/
boolean CanNmCarWakeUpFilterEnabled;
/*ECUC_CanNm_00078*/
uint8 CanNmCarWakeUpFilterNodeId;
/*ECUC_CanNm_00074*/
boolean CanNmCarWakeUpRxEnabled;
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*ECUC_CanNm_00057*/
uint16 CanNmImmediateNmCycleTime;
/*ECUC_CanNm_00056*/
uint8 CanNmImmediateNmTransmissions;
/*ECUC_CanNm_00029*/
uint16 CanNmMsgCycleOffset;
/*ECUC_CanNm_00028*/
uint16 CanNmMsgCycleTime;
#if(CANNM_BUS_LOAD_REDUCTION_ENABLED == STD_ON)
/*ECUC_CanNm_00043*/
uint16 CanNmMsgReducedTime;
#endif
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
/*ECUC_CanNm_00030*/
uint16 CanNmMsgTimeoutTime;
#endif
#endif
/*ECUC_CanNm_00026*/
CanNm_PduBytePosType CanNmPduCbvPosition;
/*ECUC_CanNm_00025*/
CanNm_PduBytePosType CanNmPduNidPosition;
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
#if(CANNM_REMOTE_SLEEP_IND_ENABLED == STD_ON)
/*ECUC_CanNm_00023*/
uint16 CanNmRemoteSleepIndTime;
#endif
#endif
/*ECUC_CanNm_00022*/
uint16 CanNmRepeatMessageTime;
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*ECUC_CanNm_00085*/
boolean CanNmRetryFirstMessageRequest;
#endif
/*ECUC_CanNm_00020*/
uint16 CanNmTimeoutTime;
/*ECUC_CanNm_00021*/
uint16 CanNmWaitBusSleepTime;
/*ECUC_CanNm_00018*/
NetworkHandleType CanNmComMNetworkHandleRef;
} CanNm_LConfigType;
typedef struct
{
#if(CANNM_NODE_ID_ENABLED == STD_ON)
/*ECUC_CanNm_00031*/
uint8 CanNmNodeId;
#endif
/*ECUC_CanNm_00037*/
PduIdType CanNmTxPduRef;
}CanNm_ConfigType;
typedef enum
{
CANNM_NETWORK_RELEASED =0u, /*NetworkReleased State*/
CANNM_NETWORK_REQUESTED =1u /*NetworkRequested State*/
} CanNm_NetworkStateType;
typedef enum
{
CANNM_NULL_CMD = 0u,
CANNM_NETWORK_REQUEST_CMD = 1u,
CANNM_NETWORK_RELEASE_CMD = 2u,
CANNM_PASSIVE_STARTUP_CMD = 3u
} CanNm_NetworkReqType;
typedef enum
{
CANNM_REPEAT_NULL = 0u,
CANNM_REPEAT_PENDING = 1u,
CANNM_REPEAT_CFM = 2u,
CANNM_REPEAT_SUCCESS = 3u
} CanNm_MsgTxRptType;
typedef struct
{
uint16* TimerCnt;
} CanNm_CommTimerType;
typedef struct
{
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
CanNm_CommTimerType MsgCycOffsetTimer;
CanNm_CommTimerType MsgCycTimer;
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
CanNm_CommTimerType TxTOTimer;
#endif
#endif
CanNm_CommTimerType NmTOTimer;
CanNm_CommTimerType RptMsgTimer;
CanNm_CommTimerType WbsTimer;
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
#if(CANNM_REMOTE_SLEEP_IND_ENABLED == STD_ON)
CanNm_CommTimerType RmtSlpIndTimer;
#endif
#endif
} CanNm_TimerType;
#endif /*_CAN_NM_TYPES_H_*/

View File

@ -0,0 +1,43 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Version.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Network Management module Version head File
* Author : Hirain
********************************************************************************
* Description : CAN Network Management module Version head File
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/09/2016 liya.zhu N/A Original
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_VERSION_H_
#define _CANNM_VERSION_H_
#define CANNM_VENDOR_ID STD_HIRAIN_VENDOR_ID
#define CANNM_MODULE_ID ((uint16)31)
#define CANNM_INSTANCE_ID (0)
#define CANNM_SW_MAJOR_VERSION (1)
#define CANNM_SW_MINOR_VERSION (0)
#define CANNM_SW_PATCH_VERSION (0)
#define CANNM_AR_RELEASE_MAJOR_VERSION (4)
#define CANNM_AR_RELEASE_MINOR_VERSION (0)
#define CANNM_AR_RELEASE_REVISION_VERSION (3)
#endif /*_CANNM_VERSION_H_*/

View File

@ -0,0 +1,94 @@
/*BEGIN_FILE_HDR
***********************************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information contained in this
* doc should not be reproduced, or used, or disclosed without the written authorization from
* HiRain Technologies.
***********************************************************************************************
* File Name: NmStack_Types.h
***********************************************************************************************
* Project/Product: AUTOSAR CanNm programe
* Title: NmStack_Types
* Author: Peng.Liu
***********************************************************************************************
* Description: The type of CanNm Network State
*
*
* (Requirements, pseudo code and etc.)
***********************************************************************************************
* Limitations:
*
* (limitations)
***********************************************************************************************
***********************************************************************************************
* Revision History£º
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -----------------
* 1.0 26/08/11 Peng.Liu N/A Original
*
***********************************************************************************************
END_FILE_HDR*/
#ifndef NM_STACK_TYPES_H
#define NM_STACK_TYPES_H
/**********************************************************************************************************************
* INCLUDES
*********************************************************************************************************************/
#include "Std_Types.h" /* Include standard types */
//#include "CanNm_Types.h"
/**********************************************************************************************************************
* GLOBAL CONSTANT MACROS
*********************************************************************************************************************/
/* Return values for NM functions */
#define NM_E_OK ((uint8)E_OK) /* Function call has been successfully accomplished and
returned */
#define NM_E_NOT_OK ((uint8)E_NOT_OK) /* Function call has been unsuccessfully accomplished and
returned because of an internal execution error. */
#define NM_E_NOT_EXECUTED ((uint8)2u) /* Function call has been successfully accomplished and
returned since execution of a service in the current
state is not allowed. */
/**********************************************************************************************************************
* GLOBAL FUNCTION MACROS
*********************************************************************************************************************/
/**********************************************************************************************************************
* GLOBAL DATA TYPES AND STRUCTURES
*********************************************************************************************************************/
/* Return type for NM functions */
typedef uint8 Nm_ReturnType;
/* State of the CanNm state machine */
typedef enum
{
NM_STATE_UNINIT = 0u, /* Uninitialized State */
NM_STATE_BUS_SLEEP = 1u, /* Bus-Sleep State */
NM_STATE_PREPARE_BUS_SLEEP = 2u, /* Prepare Bus-Sleep State */
NM_STATE_READY_SLEEP = 3u, /* Ready Sleep State */
NM_STATE_NORMAL_OPERATION = 4u, /* Normal Operation State */
NM_STATE_REPEAT_MESSAGE = 5u, /* Repeat Message State */
NM_STATE_SYNCHRONIZE = 6u, /* Synchronized State */
NM_STATE_WAIT_CHECK_ACTIVATION = 7u, /* Wait Check Activation */
NM_STATE_WAIT_NETWORK_STARTUP = 8u /* Wait Network Startup */
} Nm_StateType;
/* Modes of the network management state machine */
typedef enum
{
NM_MODE_BUS_SLEEP = 0u, /* Bus-Sleep Mode */
NM_MODE_PREPARE_BUS_SLEEP = 1u, /* Prepare Bus-Sleep Mode */
NM_MODE_SYNCHRONIZE = 2u, /* Synchronized Mode */
NM_MODE_NETWORK = 3u /* Network Mode */
} Nm_ModeType;
#endif /* NM_STACK_TYPES_H */

View File

@ -0,0 +1,122 @@
/*BEGIN_FILE_HDR
***********************************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information contained in this
* doc should not be reproduced, or used, or disclosed without the written authorization from
* HiRain Technologies.
***********************************************************************************************
* File Name: Nm_Cbk.h
***********************************************************************************************
* Project/Product: AUTOSAR CanNm programe
* Title: _CanNm_H_
* Author: Peng.Liu
***********************************************************************************************
* Description: Header file of AUTOSAR CanNm programe
*
*
* (Requirements, pseudo code and etc.)
***********************************************************************************************
* Limitations:
*
* (limitations)
***********************************************************************************************
***********************************************************************************************
* Revision History£º
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -----------------
* 1.0 26/08/11 Peng.Liu N/A Original
* 2.0 22/07/16 liya.zhu N/A HrAsrOsekNm160722-01
***********************************************************************************************
*END_FILE_HDR*/
#ifndef _NM_CBK_H_
#define _NM_CBK_H_
/**********************************************************************************************************************
* INCLUDES
*********************************************************************************************************************/
#include "NmStack_Types.h"
#include "ComStack_Types.h"
#include "CanNm_Cfg.h"
extern uint8 sleepFlg;
/**********************************************************************************************************************
* Functions
*********************************************************************************************************************/
/*[SWS_CanNm_00092]*//*[SWS_CanNm_00093]*/
extern void Nm_NetworkMode
(
NetworkHandleType nmNetworkHandle
);
/*[SWS_CanNm_00092]*//*[SWS_CanNm_00093]*/
extern void Nm_PrepareBusSleepMode
(
NetworkHandleType nmNetworkHandle
);
/*[SWS_CanNm_00092]*//*[SWS_CanNm_00093]*/
extern void Nm_BusSleepMode
(
NetworkHandleType nmNetworkHandle
);
extern void Nm_NetworkStartIndication
(
NetworkHandleType nmNetworkHandle
);
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
/*[SWS_CanNm_00149]*/
#if(CANNM_REMOTE_SLEEP_IND_ENABLED == STD_ON)
extern void Nm_RemoteSleepIndication
(
NetworkHandleType nmNetworkHandle
);
extern void Nm_RemoteSleepCancellation
(
NetworkHandleType nmNetworkHandle
);
#endif
#endif
/*[SWS_CanNm_00037]*/
#if(CANNM_PDU_RX_INDICATION_ENABLED == STD_ON)
extern void Nm_PduRxIndication
(
NetworkHandleType nmNetworkHandle
);
#endif
/*[SWS_CanNm_00166]*/
#if(CANNM_STATE_CHANGE_IND_ENABLED == STD_ON)
extern void Nm_StateChangeNotification
(
NetworkHandleType nmNetworkHandle,
Nm_StateType nmPreviousState,
Nm_StateType nmCurrentState
);
#endif
/*[SWS_CanNm_00073]*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
extern void Nm_TxTimeoutException
(
NetworkHandleType nmNetworkHandle
);
#endif
#endif
/*[SWS_CanNm_00014]*/
#if(CANNM_REPEAT_MSG_IND_ENABLED == STD_ON)
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
#if(CANNM_NODE_DETECTION_ENABLED == STD_ON)
extern void Nm_RepeatMessageIndication
(
NetworkHandleType nmNetworkHandle
);
#endif
#endif
#endif
typedef enum
{
NM_RECNORMAL = 0u,
NM_RECINVALID = 1u
}CanNm_RecNmMsgType;
#endif/*_NM_CBK_H_*/

View File

@ -0,0 +1,49 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : SchM_CanNm.h
********************************************************************************
* Project/Product : Common
* Title : SchM_CanNm.h
* Author : ning.chen
********************************************************************************
* Description : AUTOSAR Standard types file
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 13/06/2013 ning.chen N/A Original
* 01.00.01 17/07/2013 ning.chen N/A DPN_COMMON_130717_01
* 01.00.02 15/08/2013 ning.chen N/A D10_COMMON01_130815_01
* 01.00.03 08/01/2014 ning.chen N/A D10_COMMON01_140108_01
********************************************************************************
* END_FILE_HDR*/
#ifndef _SCHM_CANNM_H_
#define _SCHM_CANNM_H_
/*******************************************************************************
* Macro
*******************************************************************************/
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_0()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_0()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_1()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_1()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_2()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_2()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_3()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_3()
#endif /* _SCHM_CANNM_H_ */

View File

@ -0,0 +1,111 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Cfg.h
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 18/11/2021 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_CFG_H_
#define _CANNM_CFG_H_
/*******************************************************************************
* Includes
*******************************************************************************/
/********************ECUC_CanNm_00001 CanNmGlobalConfig******************/
/*ECUC_CanNm_00040
CanNmBusLoadReductionEnabled*/
#define CANNM_BUS_LOAD_REDUCTION_ENABLED STD_OFF
/*ECUC_CanNm_00006
CanNmBusSynchronizationEnabled*/
#define CANNM_BUS_SYNCHRONIZATION_ENABLED STD_OFF
/*ECUC_CanNm_00013
CanNmComControlEnabled*/
#define CANNM_COM_CONTROL_ENABLED STD_ON
/*ECUC_CanNm_00044
CanNmComUserDataSupport*/
#define CANNM_COM_USER_DATA_SUPPORT STD_OFF
/*ECUC_CanNm_00080
CanNmCoordinatorSyncSupport*/
#define CANNM_COORDINATOR_SYNC_SUPPORT STD_OFF
/*ECUC_CanNm_00002
CanNmDevErrorDetect*/
#define CANNM_DEV_ERROR_DETECT STD_OFF
/*ECUC_CanNm_00009
CanNmImmediateRestartEnabled*/
#define CANNM_IMMEDIATE_RESTART_ENABLED STD_OFF
/*ECUC_CanNm_00041
CanNmImmediateTxconfEnabled*/
#define CANNM_IMMEDIATE_TXCONF_ENABLED STD_OFF
/*ECUC_CanNm_00007
CanNmNodeDetectionEnabled*/
#define CANNM_NODE_DETECTION_ENABLED STD_ON
/*ECUC_CanNm_00083
CanNmNodeIdEnabled*/
#define CANNM_NODE_ID_ENABLED STD_ON
/*ECUC_CanNm_00010
CanNmPassiveModeEnabled*/
#define CANNM_PASSIVE_MODE_ENABLED STD_OFF
/*ECUC_CanNm_00011
CanNmPduRxIndicationEnabled*/
#define CANNM_PDU_RX_INDICATION_ENABLED STD_OFF
/*ECUC_CanNm_00055
CanNmRemoteSleepIndEnabled*/
#define CANNM_REMOTE_SLEEP_IND_ENABLED STD_OFF
/*ECUC_CanNm_00005
CanNmRepeatMsgIndEnabled*/
#define CANNM_REPEAT_MSG_IND_ENABLED STD_OFF
/*ECUC_CanNm_00012
CanNmStateChangeIndEnabled*/
#define CANNM_STATE_CHANGE_IND_ENABLED STD_ON
/*ECUC_CanNm_00004
CanNmUserDataEnabled*/
#define CANNM_USER_DATA_ENABLED STD_ON
/*ECUC_CanNm_00003
CanNmVersionInfoApi*/
#define CANNM_VERSION_INFO_API STD_ON
/*ECUC_CanNm_00032
CanNmMainFunctionPeriod : ms*/
#define CANNM_MAIN_FUNCTION_PERIOD ((uint8)5u)
/*ECUC_CanNm_00059
CanNmPnResetTime*/
/*ECUC_CanNm_00072
CanNmPnEiraRxNSduRef*/
#define CANNM_CONFIG_VARIANTS STD_CONFIG_VARIANTS_PRECOMPILE
#define CANNM_PRIVATE_VERSION_CHECK STD_ON
#define CANNM_NUMBER_OF_CHANNELS ((uint8)1u)
#define CANNM_SW_MAJOR_VERSION_CFG 1
#define CANNM_SW_MINOR_VERSION_CFG 0
#define CANNM_SW_PATCH_VERSION_CFG 0
#define CANNM_AR_RELEASE_MAJOR_VERSION_CFG 4
#define CANNM_AR_RELEASE_MINOR_VERSION_CFG 0
#define CANNM_AR_RELEASE_REVISION_VERSION_CFG 3
#endif

View File

@ -0,0 +1,130 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Lcfg.c
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 18/11/2021 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Lcfg.h"
#define CANNM_START_SEC_VAR_NOINIT_UNSPECIFIED
#include "MemMap.h"
VAR(Nm_StateType, CANNM_VAR_NOINIT) CanNm_State[CANNM_NUMBER_OF_CHANNELS];
VAR(uint8, CANNM_VAR_NOINIT) CanNm_TxPduBuff[CANNM_NUMBER_OF_CHANNELS][CANNM_PDU_LENGTH];
VAR(PduInfoType, CANNM_VAR_NOINIT) CanNm_TxPdu[CANNM_NUMBER_OF_CHANNELS];
VAR(uint8, CANNM_VAR_NOINIT) CanNm_RxPduBuff[CANNM_NUMBER_OF_CHANNELS][CANNM_PDU_LENGTH];
VAR(PduInfoType, CANNM_VAR_NOINIT) CanNm_RxPdu[CANNM_NUMBER_OF_CHANNELS];
VAR(Nm_ModeType, CANNM_VAR_NOINIT) CanNm_Mode[CANNM_NUMBER_OF_CHANNELS];
VAR(CanNm_NetworkStateType, CANNM_VAR_NOINIT) CanNm_NetworkState[CANNM_NUMBER_OF_CHANNELS];
/*[SWS_CanNm_00257]*//*[SWS_CanNm_00260]*/
/*[SWS_CanNm_00262]*//*[SWS_CanNm_00264]*/
VAR(boolean, CANNM_VAR_NOINIT) CanNm_ComTxEnabled[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_MsgTxEnabled[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_MsgCycOffsetTimer[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_MsgCycTimer[CANNM_NUMBER_OF_CHANNELS];
VAR(uint8, CANNM_VAR_NOINIT) CanNm_ImmTrans[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_TxCfmFlg[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_TxReqFlg[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_RxIndFlg[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_RptMsgReq[CANNM_NUMBER_OF_CHANNELS];
VAR(boolean, CANNM_VAR_NOINIT) CanNm_RptMsgReqBit[CANNM_NUMBER_OF_CHANNELS];
VAR(CanNm_NetworkReqType, CANNM_VAR_NOINIT) CanNm_NetworkReqCmd[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_NmTOTimer[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_RptMsgTimer[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_WbsTimer[CANNM_NUMBER_OF_CHANNELS];
STATIC VAR(uint16, CANNM_VAR_NOINIT) CanNm_TxTOTimer[CANNM_NUMBER_OF_CHANNELS];
VAR(CanNm_MsgTxRptType, CANNM_VAR_NOINIT) CanNm_MsgTxRptCmd[CANNM_NUMBER_OF_CHANNELS];
#define CANNM_STOP_SEC_VAR_NOINIT_UNSPECIFIED
#include "MemMap.h"
#define CANNM_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
CONST(CanNm_LConfigType, CANNM_CONST) CanNm_LConfig[CANNM_NUMBER_OF_CHANNELS] =
{
{
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
((boolean)STD_ON), /*CanNmActiveWakeupBitEnabled*/
#endif
((boolean)STD_ON), /*CanNmAllNmMessagesKeepAwake*/
((uint8)4), /*CanNmCarWakeUpBitPosition*/
((uint8)0), /*CanNmCarWakeUpBytePosition*/
((boolean)STD_OFF), /*CanNmCarWakeUpFilterEnabled*/
((uint8)0u), /*CanNmCarWakeUpFilterNodeId*/
((boolean)STD_OFF), /*CanNmCarWakeUpRxEnabled*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
((uint16)4u), /*CanNmImmediateNmCycleTime*/
((uint8)25u), /*CanNmImmediateNmTransmissions*/
((uint16)0), /*CanNmMsgCycleOffset*/
((uint16)100), /*CanNmMsgCycleTime*/
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
((uint16)300), /*CanNmMsgTimeoutTime*/
#endif
#endif
CANNM_PDU_BYTE_1, /*CanNmPduCbvPosition*/
CANNM_PDU_BYTE_0, /*CanNmPduNidPosition*/
((uint16)320), /*CanNmRepeatMessageTime*/
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
((boolean)STD_OFF), /*CanNmRetryFirstMessageRequest*/
#endif
((uint16)2000), /*CanNmTimeoutTime*/
((uint16)200), /*CanNmWaitBusSleepTime*/
((NetworkHandleType)0), /*CanNmComMNetworkHandleRef*/
},
};
CONST(CanNm_TimerType, CANNM_CONST) CanNm_Timer[CANNM_NUMBER_OF_CHANNELS] =
{
{
#if(CANNM_PASSIVE_MODE_ENABLED == STD_OFF)
{&CanNm_MsgCycOffsetTimer[0]},
{&CanNm_MsgCycTimer[0]},
#if(CANNM_IMMEDIATE_TXCONF_ENABLED == STD_OFF)
{&CanNm_TxTOTimer[0]},
#endif
#endif
{&CanNm_NmTOTimer[0]},
{&CanNm_RptMsgTimer[0]},
{&CanNm_WbsTimer[0]},
},
};
CONST(CanNm_ConfigType, CANNM_CONST) CanNm_Config[CANNM_NUMBER_OF_CHANNELS] =
{
{0x32, 3},
};
#define CANNM_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"

View File

@ -0,0 +1,75 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_Lcfg.h
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 18/11/2021 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_LCFG_H_
#define _CANNM_LCFG_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Types.h"
#define CANNM_PDU_LENGTH ((uint8)8u)
#define CANNM_CH0_NODE_ID ((uint8)0x38)
#define CANNM_CH0_TX_PDU_ID ((uint8)0u)
#define CANNM_CHANNELNUM CANNM_NUMBER_OF_CHANNELS
#define CANNM_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
extern CONST(CanNm_ConfigType, CANNM_CONST) CanNm_Config[CANNM_NUMBER_OF_CHANNELS];
extern CONST(CanNm_LConfigType, CANNM_CONST) CanNm_LConfig[CANNM_NUMBER_OF_CHANNELS];
extern CONST(CanNm_TimerType, CANNM_CONST) CanNm_Timer[CANNM_NUMBER_OF_CHANNELS];
#define CANNM_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
#define CANNM_START_SEC_VAR_NOINIT_UNSPECIFIED
#include "MemMap.h"
extern VAR(Nm_StateType, CANNM_VAR_NOINIT) CanNm_State[CANNM_NUMBER_OF_CHANNELS];
extern VAR(uint8, CANNM_VAR_NOINIT) CanNm_TxPduBuff[CANNM_NUMBER_OF_CHANNELS][CANNM_PDU_LENGTH];
extern VAR(PduInfoType, CANNM_VAR_NOINIT) CanNm_TxPdu[CANNM_NUMBER_OF_CHANNELS];
extern VAR(uint8, CANNM_VAR_NOINIT) CanNm_RxPduBuff[CANNM_NUMBER_OF_CHANNELS][CANNM_PDU_LENGTH];
extern VAR(PduInfoType, CANNM_VAR_NOINIT) CanNm_RxPdu[CANNM_NUMBER_OF_CHANNELS];
extern VAR(Nm_ModeType, CANNM_VAR_NOINIT) CanNm_Mode[CANNM_NUMBER_OF_CHANNELS];
extern VAR(CanNm_NetworkStateType, CANNM_VAR_NOINIT) CanNm_NetworkState[CANNM_NUMBER_OF_CHANNELS];
/*[SWS_CanNm_00257]*//*[SWS_CanNm_00260]*/
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_ComTxEnabled[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_MsgTxEnabled[CANNM_NUMBER_OF_CHANNELS];
extern VAR(uint8, CANNM_VAR_NOINIT) CanNm_ImmTrans[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_TxCfmFlg[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_TxReqFlg[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_RxIndFlg[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_RptMsgReq[CANNM_NUMBER_OF_CHANNELS];
extern VAR(boolean, CANNM_VAR_NOINIT) CanNm_RptMsgReqBit[CANNM_NUMBER_OF_CHANNELS];
extern VAR(CanNm_NetworkReqType, CANNM_VAR_NOINIT) CanNm_NetworkReqCmd[CANNM_NUMBER_OF_CHANNELS];
extern VAR(CanNm_MsgTxRptType, CANNM_VAR_NOINIT) CanNm_MsgTxRptCmd[CANNM_NUMBER_OF_CHANNELS];
#define CANNM_STOP_SEC_VAR_NOINIT_UNSPECIFIED
#include "MemMap.h"
#endif

View File

@ -0,0 +1,37 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_PBcfg.c
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 18/11/2021 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_PBcfg.h"

View File

@ -0,0 +1,39 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanNm_PBcfg.h
********************************************************************************
* Project/Product : AUTOSAR BSW PROJECT
* Title : CanNm module configuration File
* Author : Hirain
********************************************************************************
* Description : CanNm module configuration File
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 04.03.02 18/11/2021 Geno N/A N/A
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANNM_PBCFG_H_
#define _CANNM_PBCFG_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanNm_Types.h"
#endif

View File

@ -0,0 +1,211 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Can.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Driver module head File
* Author : HeYang
********************************************************************************
* Description : The header file Can.h contains the declaration of the Can
* module API;contains 'extern' declarations of constants,
* global data,type definitions and services that are
* specified in the Can module SWS.
*
********************************************************************************
* Limitations : only used for MSCAN
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 07/03/2010 HeYang N/A Original
* 01.01.00 09/06/2010 HeYang N/A support multi channel
* 01.02.00 17/07/2010 HeYang N/A modify GlobalInterupts
* 02.00.00 29/07/2013 NingChen N/A DPN_MSCAN_130729_1
* 02.00.01 15/08/2013 NingChen N/A D10_MSCAN_130815_1
* 02.00.02 23/09/2013 NingChen N/A D10_MSCAN_130923_1
* 02.00.03 23/01/2014 SuyunYing N/A D10_MSCAN_140123_1
********************************************************************************
* END_FILE_HDR*/
#ifndef _CAN_H_
#define _CAN_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "Can_Cfg.h"
#include "Can_Type.h"
#include "Can_Pl.h"
/*******************************************************************************
* Macro
*******************************************************************************/
#define CAN_DATA_DLC ((uint8)0x08U)
/*CAN104: The Can module shall be able to detect the following errors and
exceptions depending on its configuration (development/production)*/
#if (CAN_DEV_ERROR_DETECT == STD_ON )
/*API Service called with wrong parameter;Development*/
#define CAN_E_PARAM_POINTER (0x01u)
/*API Service called with wrong parameter;Development*/
#define CAN_E_PARAM_HANDLE (0x02u)
/*API Service called with wrong parameter;Development*/
#define CAN_E_PARAM_DLC (0x03u)
/*API Service called with wrong parameter;Development*/
#define CAN_E_PARAM_CONTROLLER (0x04u)
/*API Service used without initialization;Development*/
#define CAN_E_UNINIT (0x05u)
/*Invalid transition for the current mode;Development*/
#define CAN_E_TRANSITION (0x06u)
/*Received CAN message is lost;Development*/
#define CAN_E_DATALOST (0x07u)
/*CAN can't enter into initialize mode or leave initialize mode*/
#define CAN_PL_INIT_ERROR (0x08u)
#define CAN_INIT_APIID (0x00u)
#define CAN_MAINFUNCTION_WRITE_APIID (0x01u)
#define CAN_INITCONTROLLER_APIID (0x02u)
#define CAN_SETCONTROLLERMODE_APIID (0x03u)
#define CAN_DISABLECONTROLLERINTERRUPTS_APIID (0x04u)
#define CAN_ENABLECONTROLLERINTERRUPTS_APIID (0x05u)
#define CAN_WRITE_APIID (0x06u)
#define CAN_GETVERSIONINFO_APIID (0x07u)
#define CAN_MAINFUNCTION_READ_APIID (0x08u)
#define CAN_MAINFUNCTION_BUSOFF_APIID (0x09u)
#define CAN_MAINFUNCTION_WAKEUP_APIID (0x0au)
#define CAN_MAINFUNCTION_MODE_APIID (0x0cu)
#endif
/*******************************************************************************
* CanController
*******************************************************************************/
/*CAN316_Conf :This parameter rovides the controller ID which is unique in a
given CAN Driver. The value for this parameter starts with 0
and continue without any gaps*/
#if (CAN_USED_CONTROLLER_NUM >= 1)
#define CAN_DRIVER_CONTROLLER_ID_0 (0u)
#endif
#if (CAN_USED_CONTROLLER_NUM >= 2)
#define CAN_DRIVER_CONTROLLER_ID_1 (1u)
#endif
#if (CAN_USED_CONTROLLER_NUM >= 3)
#define CAN_DRIVER_CONTROLLER_ID_2 (2u)
#endif
#if (CAN_USED_CONTROLLER_NUM >= 4)
#define CAN_DRIVER_CONTROLLER_ID_3 (3u)
#endif
#if (CAN_USED_CONTROLLER_NUM >= 5)
#define CAN_DRIVER_CONTROLLER_ID_4 (4u)
#endif
#if (CAN_USED_CONTROLLER_NUM == 6)
#define CAN_DRIVER_CONTROLLER_ID_5 (5u)
#endif
#if (CAN_USED_CONTROLLER_NUM > 6)
#error "!!!ERROR FOR CAN_USED_CONTROLLER_NUM!!!"
#endif
/*******************************************************************************
* Global Data Declaration
*******************************************************************************/
#define CAN_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
extern CONST(uint8, CAN_CONFIG_CONST) CanControllerIDtoPhys[];
extern CONST(Can_RegInitType, CAN_CONFIG_CONST) CanRegInit[];
extern CONST(Can_HardwareObjectConfigType, CAN_CONFIG_CONST)
CanHardwareObjectConfig[];
extern CONST(Can_HwHandleType, CAN_CONFIG_CONST) CanControllerIDtoHRH[];
#define CAN_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
/*******************************************************************************
* Global Function Declaration
*******************************************************************************/
#define CAN_START_SEC_PUBLIC_CODE
#include "MemMap.h"
#if (STD_ON == CAN_VERSION_INFO_API)
extern FUNC(void, CAN_PUBLIC_CODE) Can_GetVersionInfo
(
P2VAR(Std_VersionInfoType, AUTOMATIC, CAN_APPL_DATA) versioninfo
);
#endif
extern FUNC(void, CAN_PUBLIC_CODE) Can_Init(void);
extern FUNC(void, CAN_PUBLIC_CODE)Can_InitController
(
uint8 Controller,
P2CONST(Can_ControllerBaudrateConfigType, AUTOMATIC, CAN_CONFIG_CONST)
Config
);
extern FUNC(Can_ReturnType, CAN_PUBLIC_CODE) Can_SetControllerMode
(
uint8 Controller,
Can_StateTransitionType Transition
);
extern FUNC(void, CAN_PUBLIC_CODE) Can_DisableControllerInterrupts
(
uint8 Controller
);
extern FUNC(void, CAN_PUBLIC_CODE)Can_EnableControllerInterrupts
(
uint8 Controller
);
extern FUNC(void, CAN_PUBLIC_CODE)Can_DisableGlobalInterrupt(void);
extern FUNC(void, CAN_PUBLIC_CODE) Can_EnableGlobalInterrupt(void);
extern FUNC(Can_ReturnType, CAN_PUBLIC_CODE) Can_Write
(
Can_HwHandleType Hth,
P2CONST(Can_PduType, AUTOMATIC, CAN_APPL_DATA) PduInfo
);
/* Scheduled functions */
extern FUNC(void, CAN_PUBLIC_CODE) Can_MainFunction_Write(void);
extern FUNC(void, CAN_PUBLIC_CODE) Can_MainFunction_Read(void);
extern FUNC(void, CAN_PUBLIC_CODE) Can_MainFunction_BusOff(void);
extern FUNC(void, CAN_PUBLIC_CODE) Can_MainFunction_Wakeup(void);
extern FUNC(void, CAN_PUBLIC_CODE) Can_MainFunction_Mode(void);
#define CAN_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
/* Application Call back function */
#define CAN_START_SEC_APPL_CODE
#include "MemMap.h"
#if (STD_ON == CAN_HARDWARE_TIMEOUT_CHECK)
extern FUNC(void, CAN_APPL_CODE) ApplTimerBegin(uint8 LoopReason);
extern FUNC(Can_ReturnType, CAN_APPL_CODE) ApplTimerOutCheck(uint8 LoopReason);
extern FUNC(void, CAN_APPL_CODE) ApplTimerEnd(uint8 LoopReason);
#endif/* #if (STD_ON == CAN_HARDWARE_TIMEOUT_CHECK) */
/*Nm callback function*/
extern void CanNm_ControllerActive(uint8 Controller);
extern void CanNm_ControllerPassive(uint8 Controller);
#define CAN_STOP_SEC_APPL_CODE
#include "MemMap.h"
#endif /* _CAN_H_ */

View File

@ -0,0 +1,403 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Can_Pl.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Driver platform head File
* Author : HeYang
********************************************************************************
* Description : The header file Can_Pl.h contains type definitions and
* macros which relate to specific MCU .
*
********************************************************************************
* Limitations : only used for MSCAN
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 06/05/2012 HeYang N/A Original
* 01.01.00 12/05/2012 NingChen N/A first test feed back ;
* 02.00.00 29/07/2013 NingChen N/A DPN_MSCAN_130729_1
* 02.00.01 15/08/2013 NingChen N/A D10_MSCAN_130815_1
* 02.00.02 23/09/2013 NingChen N/A D10_MSCAN_130923_1
* 02.00.03 23/01/2014 SuyunYing N/A D10_MSCAN_140123_1
********************************************************************************
* END_FILE_HDR*/
#ifndef _CAN_PL_H_
#define _CAN_PL_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "Can_Cfg.h"
/*******************************************************************************
* Macro
*******************************************************************************/
#define CAN_HARDWARE_TIMEOUT_CHECK STD_OFF
#define CAN_ENTER_CRITICAL_SECTION() Can_DisableGlobalInterrupts()
#define CAN_LEAVE_CRITICAL_SECTION() Can_EnableGlobalInterrupts()
#define CAN_NOT_MATCH (0u)
#define CAN_MATCH (1u)
#define CAN_CONTROLLER_NOT_HOH (0xffu)
#define TOTAL_CAN_MODULE_NUM (0x1u)
#define MSK_EXT_ID_MSB ((uint32)(0x10000000))
#define HOH_NUM_PER_CONTROLLER (4u)
#define HTH_NUM_PER_CONTROLLER (1u)
#define CAN_MULTIPLEXED_HTH_MBNUM (3u)
/*******************************************************************************
* ISR enroll related & vetor numbers
*******************************************************************************/
#define CAN_AUTOENROLL_ISR STD_OFF
#if(CAN_AUTOENROLL_ISR == STD_OFF)
#define CAN_INTERRUPT_ISR
#else
#define CAN_INTERRUPT_ISR interrupt
#endif
#if(CAN_AUTOENROLL_ISR == STD_OFF)
#define CAN0WAKEUP_VECTOR_NUMBER
#define CAN0ERR_VECTOR_NUMBER
#define CAN0RX_VECTOR_NUMBER
#define CAN0TX_VECTOR_NUMBER
#else
/* notice: these vector numbers may be different in different MCU , here is the
xep100 demo. When used in other MCU, pls check these vectors */
#define CAN0WAKEUP_VECTOR_NUMBER (36u)
#define CAN0ERR_VECTOR_NUMBER (37u)
#define CAN0RX_VECTOR_NUMBER (38u)
#define CAN0TX_VECTOR_NUMBER (39u)
#endif
/*******************************************************************************
* Typedef
*******************************************************************************/
typedef volatile struct
{
#if (STD_ON == CAN_ENABLE_EXTERNED_ID)
volatile uint32 Id;
#else
volatile uint16 Id; /* Identifier Register 0,1 */
volatile uint16 IdExt; /* Identifier Register 2,3 */
#endif
volatile uint8 DataSeg[8]; /* Data 0 .. 7 */
volatile uint8 Dlc; /* Data length reg.: X X X X DLC3 DLC2
DLC1 DLC0 */
volatile uint8 Priority; /* TxBuf priority reg. */
volatile uint16 TimeStamp;
}Can_MsgBufType;
typedef volatile struct
{
/* CAN Control Register */
volatile uint32 CAN_CR;
/* CAN mode select register */
volatile uint32 CAN_MSR;
/* CAN Baud rate Prescaler Register */
volatile uint32 CAN_BRPR;
/* CAN Bit Timing Register */
volatile uint32 CAN_BTR;
/* CAN Error Counter Register */
volatile uint32 CAN_ECR;
/* CAN Error Status Register */
volatile uint32 CAN_ESR;
/* CAN Status Register */
volatile uint32 CAN_SR;
/* CAN Interrupt Status Register */
volatile uint32 CAN_ISR;
/* CAN Interrupt Enable Register */
volatile uint32 CAN_IER;
/* CAN Interrupt Clear Register */
volatile uint32 CAN_ICR;
volatile uint32 RESERVED_0;
volatile uint32 RESERVED_1;
/* CAN TX FIFO ID Register */
volatile uint32 CAN_TXF_IDR;
/* CAN TX FIFO DLC Register */
volatile uint32 CAN_TXF_DLCR;
/* CAN TX FIFO Data Word1 Register */
volatile uint32 CAN_TXF_DW1R;
/* CAN TX FIFO Data Word2 Register */
volatile uint32 CAN_TXF_DW2R;
/* CAN TX HPB ID Register */
volatile uint32 CAN_HPB_IDR;
/* CAN TX HPB DLC Register */
volatile uint32 CAN_HPB_DLCR;
/* CAN TX HPB Data Word1 Register */
volatile uint32 CAN_HPB_DW1R;
/* CAN TX HPB Data Word2 Register */
volatile uint32 CAN_HPB_DW2R;
/* CAN RX FIFO ID Register */
volatile uint32 CAN_RXF_IDR;
/* CAN RX FIFO DLC Register */
volatile uint32 CAN_RXF_DLCR;
/* CAN RX FIFO Data Word1 Register */
volatile uint32 CAN_RXF_DW1R;
/* CAN RX FIFO Data Word2 Register */
volatile uint32 CAN_RXF_DW2R;
/* Acceptance Filter Register */
volatile uint32 CAN_AFR;
/* Acceptance Filter Mask Register1 */
volatile uint32 CAN_AFMR1;
/* Acceptance Filter ID Register1 */
volatile uint32 CAN_AFIR1;
/* Acceptance Filter Mask Register2 */
volatile uint32 CAN_AFMR2;
/* Acceptance Filter ID Register2 */
volatile uint32 CAN_AFIR2;
/* Acceptance Filter Mask Register3 */
volatile uint32 CAN_AFMR3;
/* Acceptance Filter ID Register3 */
volatile uint32 CAN_AFIR3;
/* Acceptance Filter Mask Register4 */
volatile uint32 CAN_AFMR4;
/* Acceptance Filter ID Register4 */
volatile uint32 CAN_AFIR4;
} Can_RegType;
typedef volatile struct
{
uint32 CanInitBRPR;
uint32 CanInitBTR;
uint32 CanInitIER;
uint32 CanInitAFR;
uint32 CanInitAFMR1;
uint32 CanInitAFIR1;
uint32 CanInitAFMR2;
uint32 CanInitAFIR2;
uint32 CanInitAFMR3;
uint32 CanInitAFIR3;
uint32 CanInitAFMR4;
uint32 CanInitAFIR4;
} Can_RegInitType;
typedef struct
{
uint32 oldCanIER;
}Can_OldIERType;
/*******************************************************************************
* Register definitions
*******************************************************************************/
#define CAN_CONTROLLER_BASIS_ADR(controllerID) \
((Can_RegType *)(CanBasisAddress[controllerID]))
#define CAN_CR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_CR)
#define CAN_MSR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_MSR)
#define CAN_BRPR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_BRPR)
#define CAN_BTR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_BTR)
#define CAN_ECR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_ECR)
#define CAN_ESR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_ESR)
#define CAN_SR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_SR)
#define CAN_ISR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_ISR)
#define CAN_IER(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_IER)
#define CAN_ICR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_ICR)
#define CAN_TXF_IDR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_TXF_IDR)
#define CAN_TXF_DLCR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_TXF_DLCR)
#define CAN_TXF_DW1R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_TXF_DW1R)
#define CAN_TXF_DW2R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_TXF_DW2R)
#define CAN_HPB_IDR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_HPB_IDR)
#define CAN_HPB_DLCR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_HPB_DLCR)
#define CAN_HPB_DW1R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_HPB_DW1R)
#define CAN_HPB_DW2R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_HPB_DW2R)
#define CAN_RXF_IDR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_RXF_IDR)
#define CAN_RXF_DLCR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_RXF_DLCR)
#define CAN_RXF_DW1R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_RXF_DW1R)
#define CAN_RXF_DW2R(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_RXF_DW2R)
#define CAN_AFR(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFR)
#define CAN_AFMR1(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFMR1)
#define CAN_AFIR1(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFIR1)
#define CAN_AFMR2(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFMR2)
#define CAN_AFIR2(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFIR2)
#define CAN_AFMR3(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFMR3)
#define CAN_AFIR3(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFIR3)
#define CAN_AFMR4(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFMR4)
#define CAN_AFIR4(controllerID) (CAN_CONTROLLER_BASIS_ADR(controllerID)->CAN_AFIR4)
/*******************************************************************************
* Register Mask Value define
*******************************************************************************/
/* Bitmask of CR: */
#define CAN_INITRQ ((uint32)0x02) /* initialized mode request */
/* Bitmask of SR: */
#define CAN_INITAK ((uint32)0x01) /* initialized mode ack */
#define CAN_NORMALAK ((uint32)0x08) /* normal mode ack */
/* Bitmask of CANCTL1: */
#define CAN_SLPAK ((uint8)0x02) /* sleep mode acknowledge */
#define CAN_WUPM ((uint8)0x04) /* wakeup mode */
#define CAN_BORM ((uint8)0x08) /* bus-off Recovery upon user request */
#define CAN_LISTEN ((uint8)0x10) /* listen only */
#define CAN_LOOPB ((uint8)0x20) /* loopback mode */
#define CAN_CLKSRC ((uint8)0x40) /* clocksource is bus clock */
#define CAN_CANE ((uint8)0x80) /* can enabled */
/* Bitmasks of CANRFLG: */
#define CAN_RXF ((uint8)0x01) /* receive buffer full flag */
#define CAN_OVRIF ((uint8)0x02) /* overrun flag */
#define CAN_TSTAT0 ((uint8)0x04) /* transmitter status bits TSTAT[0:1] */
#define CAN_TSTAT1 ((uint8)0x08) /* TSTAT[0:1] =11,bus off */
#define CAN_RSTAT0 ((uint8)0x10) /* receiver status bits RSTAT[0:1] */
#define CAN_RSTAT1 ((uint8)0x20) /* */
#define CAN_CSCIF ((uint8)0x40) /* can status change flag */
#define CAN_WUPIF ((uint8)0x80) /* wake-up flag */
#define CAN_BOFFTIF ((uint8)(CAN_TSTAT0|CAN_TSTAT1)) /* BusOff flag */
#define CAN_BOFFRIF ((uint8)(CAN_RSTAT0|CAN_RSTAT1)) /* BusOff flag */
/* Bitmasks of CRIER: */
#define CAN_RXFIE ((uint8)0x01) /* receive buffer full enable */
#define CAN_OVRIE ((uint8)0x02) /* overrun interrupt enable */
#define CAN_TSTAT0E ((uint8)0x04) /* transmitter status change enable
CAN_TSTAT0E[0:1]*/
#define CAN_TSTAT1E ((uint8)0x08) /* */
#define CAN_RSTAT0E ((uint8)0x10) /* receiver statu change enable CAN_RSTAT0E[0:1]*/
#define CAN_RSTAT1E ((uint8)0x20) /* */
#define CAN_CSCIE ((uint8)0x40) /* can status change interrupt enable */
#define CAN_WUPIE ((uint8)0x80) /* wake-up interrupt enable */
#define CAN_BOFFIE ((uint8)(CAN_TSTAT1E|CAN_RSTAT1E)) /* BusOff flag*/
/* Bitmasks of CTARQ: */
#define CAN_ABTRQ0 ((uint8)0x01) /* abort request */
#define CAN_ABTRQ1 ((uint8)0x02)
#define CAN_ABTRQ2 ((uint8)0x04)
/* Bitmasks of CTAAK: */
#define CAN_ABTAK0 ((uint8)0x01) /* abort acknowledge */
#define CAN_ABTAK1 ((uint8)0x02)
#define CAN_ABTAK2 ((uint8)0x04)
/* Bitmasks of CTBSEL: */
#define CAN_TX0 ((uint8)0x01)
#define CAN_TX1 ((uint8)0x02)
#define CAN_TX1TX2 ((uint8)0x04)
#define CAN_TXIE ((uint8)(CAN_TX0|CAN_TX1|CAN_TX1TX2))
#define CAN_TXMASKALL ((uint8)(CAN_TX0|CAN_TX1|CAN_TX1TX2))
#define CAN_TXMASK(hth) ((uint8)(0x02))
/* Bitmasks of CMISC: */
#define CAN_BOHOLD ((uint8)0x01)
/*******************************************************************************
* Controller related
*******************************************************************************/
#if (CAN_USED_CONTROLLER_NUM >= 1)
#if (CAN0_BUSOFF_PROCESSING == CAN_INTERRUPT)
#define CAN0_CSCIE_INT_CFG CAN_CSCIE
#elif (CAN0_BUSOFF_PROCESSING == CAN_POLLING)
#define CAN0_CSCIE_INT_CFG ((uint8)0x00U)
#else
#error "!!!ERROR FOR CAN0_BUSOFF_CFG!!!"
#endif
#if (CAN0_TX_PROCESSING == CAN_INTERRUPT)
#define CAN0_TX_INT_CFG CAN_TXIE
#elif (CAN0_TX_PROCESSING == CAN_POLLING)
#define CAN0_TX_INT_CFG ((uint8)0x00)
#else
#error "!!!ERROR FOR CAN0_TX_CFG!!!"
#endif
#if (CAN0_RX_PROCESSING == CAN_INTERRUPT)
#define CAN0_RX_INT_CFG CAN_RXFIE
#elif (CAN0_RX_PROCESSING == CAN_POLLING)
#define CAN0_RX_INT_CFG ((uint8)0x00)
#else
#error "!!!ERROR FOR CAN0_RX_CFG!!!"
#endif
#if (CAN0_WAKEUP_PROCESSING == CAN_INTERRUPT)
#define CAN0_WAKEUP_INT_CFG CAN_WUPIE
#elif (CAN0_WAKEUP_PROCESSING == CAN_POLLING)
#define CAN0_WAKEUP_INT_CFG ((uint8)0x00)
#else
#error "!!!ERROR FOR CAN0_WAKEUP_CFG!!!"
#endif
#if (CAN0_CLKSRC_BUSCLK == STD_ON)
#define CAN0_CLKSRC_CFG ((uint8)0x40)
#elif (CAN0_CLKSRC_BUSCLK == STD_OFF)
#define CAN0_CLKSRC_CFG ((uint8)0x00)
#else
#error "!!!ERROR FOR CAN0_WAKEUP_CFG!!!"
#endif
#endif/* #if (CAN_USED_CONTROLLER_NUM>=1) */
/*******************************************************************************
* Macro Fuctions definitions
*******************************************************************************/
/*Used for transmit*/
#if (STD_ON == CAN_ENABLE_EXTERNED_ID)
#define GET_REG_STDID(id) (((uint32)(((uint32)(id)) << 21)))
#else
#define GET_REG_STDID(id) ((uint16)(((uint16)(id)) & 0x7ff))
#endif
#define GET_REG_EXTID(id) (uint32)(((uint32)(id) << 13) | ((uint32)1 << 12) | ((uint32)1 << 11) | (((uint32)(id) & 0x1ffc0000) >> 18))
/*Used for receive*/
#define GET_EXTID(canID) (((uint32)(canID \
& ((uint32)0x7FFul)) << 18) \
+ ((uint32)((canID >> 13) \
& ((uint32)0x3FFFF)) ))
#if (STD_ON == CAN_ENABLE_EXTERNED_ID)
#define GET_STDID(controller) ((uint16)((CAN_RxBuf(controller).Id) >> 21))
#else
#define GET_STDID(canID) ((uint32)(canID) & 0x7ff)
#endif
#if (STD_ON == CAN_ENABLE_EXTERNED_ID)
#define GET_IDE(controller) ((uint32)((CAN_RxBuf(controller).Id) \
&((uint32)0x00080000)))
#else
#define GET_IDE(canID) ((uint32)((canID) \
&((uint32)1ul << 12)))
#endif
#define GET_DLC(dlc) ((uint8)((dlc) & ((uint8)0x0f)))
/*******************************************************************************
* Loop timer define
*******************************************************************************/
#if (STD_ON == CAN_HARDWARE_TIMEOUT_CHECK)
#define CAN_LOOP_BEGIN(i) ApplTimerBegin(i)
#define CAN_LOOP_TIMEOUT(i) ApplTimerOutCheck(i)
#define CAN_LOOP_END(i) ApplTimerEnd(i)
#else
#define CAN_LOOP_BEGIN(i)
#define CAN_LOOP_TIMEOUT(i) CAN_NOT_OK
#define CAN_LOOP_END(i)
#endif/* #if (STD_ON == CAN_HARDWARE_TIMEOUT_CHECK) */
#define INIT_ENTER_TIMEOUT (0x0u)
#define INIT_LEAVE_TIMEOUT (0x1u)
#define SLEEP_ENTER_TIMEOUT (0x2u)
#define SLEEP_LEAVE_TIMEOUT (0x3u)
#endif/* _CAN_PL_H_*/

View File

@ -0,0 +1,189 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Can_Type.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Driver module type definitions head File
* Author : HeYang
********************************************************************************
* Description : The header file Can_Type.h contains the common type
* definitions of Can Driver module
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 06/05/2012 HeYang N/A Original
* 01.01.00 12/05/2012 NingChen N/A first test feed back ;
* 02.00.00 29/07/2013 NingChen N/A DPN_MSCAN_130729_1
* 02.00.01 15/08/2013 NingChen N/A D10_MSCAN_130815_1
* 02.00.02 23/09/2013 NingChen N/A D10_MSCAN_130923_1
* 02.00.03 23/01/2014 SuyunYing N/A D10_MSCAN_140123_1
********************************************************************************
* END_FILE_HDR*/
#ifndef _CAN_TYPE_H_
#define _CAN_TYPE_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Can_Cfg.h"
#include "ComStack_Types.h"
/*******************************************************************************
* Typedef
*******************************************************************************/
/*CAN429:
Name: Can_HwHandleType
Type: uint8, uint16
Range: Standard 0..0x0FF
Extended 0..0xFFFF
Description:
Represents the hardware object handles of a CAN hardware unit.
For CAN hardware units with more than 255 HW objects use extended range.
*/
#if(CAN_USED_HOH_NUM > 255)
typedef uint16 Can_HwHandleType;
#else
typedef uint8 Can_HwHandleType;
#endif
/*CAN416:
Name: Can_IdType
Type: uint16, uint32
Range: Standard 0..0x7FF
Extended 0..0xFFFFFFFF
Description:
Represents the Identifier of an L-PDU. For extended IDs the most significant
bit is set.
*/
#if (STD_ON == CAN_ENABLE_EXTERNED_ID)
typedef uint32 Can_IdType;
#else
typedef uint32 Can_IdType;
#endif/* #if (STD_ON == CAN_ENABLE_EXTERNED_ID) */
/*CAN039:
Name: Can_ReturnType
Type: Enumeration
Range:
CAN_OK success
CAN_NOT_OK error occurred or wakeup event occurred during sleep transition
CAN_BUSY transmit request could not be processed because no transmit object
was available
Description:
Return values of CAN driver API .
*/
typedef enum
{
CAN_OK = 0,
CAN_NOT_OK,
CAN_BUSY
}Can_ReturnType;
#if (CAN_DEV_ERROR_DETECT == STD_ON )
typedef enum
{
CAN_UNINT = 0,
CAN_STOPPED,
CAN_STARTED,
CAN_SLEEP
}Can_StateType;
#endif/* #if (CAN_DEV_ERROR_DETECT == STD_ON ) */
/* CAN417:
Name: Can_StateTransitionType
Type: Enumeration
Range:
CAN_T_START CAN controller transition value to request state STARTED.
CAN_T_STOP CAN controller transition value to request state STOPPED.
CAN_T_SLEEP CAN controller transition value to request state SLEEP.
CAN_T_WAKEUP CAN controller transition value to request state STOPPED
from state SLEEP.
Description:
State transitions that are used by the function CAN_SetControllerMode
*/
typedef enum
{
CAN_T_START = 0,
CAN_T_STOP = 1,
CAN_T_SLEEP = 2,
CAN_T_WAKEUP =3,
CAN_T_NONE = 4
}Can_StateTransitionType;
/* CAN413:
Name: Can_ConfigType
Type: Structure
Range: Implementation specific.
Description:
This is the type of the external data structure containing the overall
initialization data for the CAN driver and SFR settings affecting all
controllers. Furthermore it contains pointers to controller configuration
structures. The contents of the initialization data structure are CAN
hardware specific.
*/
typedef struct
{
uint8 CanControllerNum;
}Can_ConfigType;
/*CAN414:
Name: Can_ControllerBaudrateConfigType
Type: Structure
Range: Implementation specific.
Description:
This is the type of the external data structure containing
the bit timing related initialization data for one CAN controller.
The contents of the initialization data structure are CAN hardware specific.
*/
typedef struct
{
uint8 CanRegBTR0;
uint8 CanRegBTR1;
}Can_ControllerBaudrateConfigType;
/*CAN415:
Name: Can_PduType
Type: Structure
Description:
This type is used to provide ID, DLC and SDU from CAN interface
to CAN driver.
*/
typedef struct
{
PduIdType swPduHandle;
uint8 length ;
Can_IdType id ;
P2VAR(uint8, TYPEDEF, CAN_APPL_DATA) sdu ;
}Can_PduType;
/* hoh config type */
typedef struct
{
uint8 controllerRef; /*logic controller*/
uint8 phyHohRef; /*physical Hardware MB*/
uint8 hohType; /*hohType bit0:0-receive,1-transmit;bit1:0-basic,
1-full*/
}Can_HardwareObjectConfigType;
/* Can Internal buffer length type */
typedef uint32 Can_LenTyp;
typedef enum
{
CAN_UNINITIALIZED = 0,
CAN_INITIALIZED = 1
}Can_InitType;
#endif/* _CAN_TYPE_H_*/

View File

@ -0,0 +1,443 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanIf.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Interface module head File
* Author : HeYang
********************************************************************************
* Description : The header file CanIf.h contains the declaration of the
* Can Interface module API;contains 'extern' declarations of
* constants,global data, type definitions and services that
* are specified in the Can Interface module SWS.
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/04/2011 HeYang N/A Original
* 01.01.00 20/04/2011 HeYang N/A the parameter of memset
* 01.02.00 18/05/2011 HeYang N/A add the marco
CANIF_CANCONTROLLER_TX<EFBFBD><EFBFBD>
* CANIF_CANCONTROLLER_RX<EFBFBD>C
CANCONTROLLER_RANGE_RX
* 01.03.00 28/05/2011 HeYang N/A modify CanIf_SetPduMode
* 01.04.00 15/06/2011 HeYang N/A DPN_CANIF_110615_01
*
*
*
* 02.00.00 06/06/2012 HeYang N/A DPN_CANIF_120606_01
* 02.01.00 05/07/2012 HeYang N/A DPN_CANIF_120705_01
* 02.02.00 08/07/2013 NingChen N/A DPN_CANIF_130708_01
* 02.02.01 16/07/2013 NingChen N/A DPN_CANIF_130716_01
* 02.02.02 29/07/2013 NingChen N/A DPN_CANIF_130729_01
* 02.02.03 05/08/2013 NingChen N/A DPN_CANIF_130805_01
* 02.02.04 15/08/2013 NingChen N/A D10_CANIF_130815_01
* 02.02.05 17/09/2013 NingChen N/A D10_CANIF_130917_01
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANIF_H_
#define _CANIF_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanIf_Type.h"
#include "CanIf_Cfg.h"
#include "Can.h"
#if(STD_ON == CANIF_SUPPORT_OSEK_NM)
#include "OsekNm.h"
#endif
/*******************************************************************************
* Macro
*******************************************************************************/
#define CANIF_MSK_EXT_ID_MSB ((uint32)(0x10000000))
#define CANIF_ENTER_CRITICAL_SECTION() Can_DisableGlobalInterrupts()
#define CANIF_LEAVE_CRITICAL_SECTION() Can_EnableGlobalInterrupts()
#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
#define CANIF_RX_BUFFER_SDU_LENGTH_INITIAL (0xffu)
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
#define CANIF_LAST_HRH_RXPDUID ((Can_HwHandleType)(~(0x0)))
#endif
/*CANIF525_Conf*/
/*This parameter defines the name of <User_ControllerBusOff>. This parameter
depends on the parameter CANIF_USERCTRLBUSOFF_UL.
If CANIF_USERCTRLBUSOFF_UL equals CAN_SM the name of <User_ControllerBusOff> is
fixed.
If CANIF_USERCTRLBUSOFF_UL equals CDD, the name of <User_ControllerBusOff> is
selectable.*/
#if(CANIF_DISPATCH_UL_CAN_SM == CANIF_DISPATCH_USERCTRLBUSOFF_UL)
#define CANIF_DISPATCH_USERCTRLBUSOFF_NAME \
CanSM_ControllerBusOff(Controller)
#elif(CANIF_DISPATCH_UL_CDD == CANIF_DISPATCH_USERCTRLBUSOFF_UL)
#define CANIF_DISPATCH_USERCTRLBUSOFF_NAME \
CANIF_DISPATCH_USERCTRLBUSOFF_DEFINED_NAME
#else
#error "!!!ERROR FOR CANIF_DISPATCH_USERCTRLBUSOFF_UL!!!"
#endif
/*CANIF526_Conf*/
#if(CANIF_DISPATCH_UL_ECUM == CANIF_DISPATCH_USERSETWAKEUPEVENT_UL)
#define CANIF_DISPATCH_USERSETWAKEUPEVENT_NAME \
EcuM_ControllerWakeUp(Controller)
#elif(CANIF_DISPATCH_UL_CDD == CANIF_DISPATCH_USERSETWAKEUPEVENT_UL)
#define CANIF_DISPATCH_USERSETWAKEUPEVENT_NAME \
CANIF_DISPATCH_USERSETWAKEUPEVENT_DEFINED_NAME
#else
#error "!!!ERROR FOR CANIF_DISPATCH_USERSETWAKEUPEVENT_UL!!!"
#endif
#define CANIF_USERWAKEUP_FUN CANIF_DISPATCH_USERSETWAKEUPEVENT_NAME
#define CANIF_USERCTRLBUSOFF_FUN CANIF_DISPATCH_USERCTRLBUSOFF_NAME
/* Development Error */
#if (STD_ON == CANIF_PUBLIC_DEV_ERROR_DETECT)
/*API service called with invalid parameter*/
#define CANIF_E_PARAM_CANID (0x10u)
#define CANIF_E_PARAM_DLC (0x11u)
#define CANIF_E_PARAM_HRH (0x12u)
#define CANIF_E_PARAM_LPDU (0x13u)
#define CANIF_E_PARAM_CONTROLLER (0x14u)
#define CANIF_E_PARAM_CONTROLLERID (0x15u)
#define CANIF_E_PARAM_WAKEUPSOURCE (0x16u)
#define CANIF_E_PARAM_TRCV (0x17u)
#define CANIF_E_PARAM_TRCVMODE (0x18u)
#define CANIF_E_PARAM_TRCVWAKEUPMODE (0x19u)
#define CANIF_E_PARAM_POINTER (0x20u)
/*API service used without module initialization*/
#define CANIF_E_UNINIT (0x30u)
/*Requested API operation is not supported*/
#define CANIF_E_NOK_NOSUPPORT (0x40u)
/*Transmit PDU ID invalid*/
#define CANIF_E_INVALID_TXPDUID (0x50u)
/*Receive PDU ID invalid*/
#define CANIF_E_INVALID_RXPDUID (0x60u)
#define CANIF_SETCONTROLLERMODE_APIID (0x03u)
#define CANIF_GETCONTROLLERMODE_APIID (0x04u)
#define CANIF_TRANSMIT_APIID (0x05u)
#define CANIF_READRXPDUDATA_APIID (0x06u)
#define CANIF_READTXNOTIFSTATUS_APIID (0x07u)
#define CANIF_READRXNOTIFSTATUS_APIID (0x08u)
#define CANIF_SETPDUMODE_APIID (0x09u)
#define CANIF_GETPDUMODE_APIID (0x0au)
#define CANIF_GETVERSIONINFO (0x0bu)
#define CANIF_SETDYNAMICTXID_APIID (0x0cu)
#define CANIF_TXCONFIRMATION_APIID (0x13u)
#define CANIF_RXINDICATION_APIID (0x14u)
#define CANIF_CANCELTXCONFIRMATION_APIID (0x15u)
#define CANIF_CONTROLLERBUSOFF_APIID (0x16u)
#define CANIF_CONTROLLERMODEINDICATION_APIID (0x17u)
#endif
/* Production Error */
#if (CANIF_PDU_CHANNEL_MODE_CONTROL == STD_ON)
#define CANIF_RX_INDICATION_ENABLE_MASK ((uint8)0x01)
#define CANIF_TX_REQUEST_ENABLE_MASK ((uint8)0x02)
#define CANIF_TX_NOTIFY_ENABLE_MASK ((uint8)0x04)
#define CANIF_PDU_GETMODE_MASK ((CanIf_PduGetModeType)0x07)
#endif
/*******************************************************************************
* Typedef
*******************************************************************************/
typedef enum
{
CANIF_UNINITIALIZED = 0,
CANIF_INITIALIZED = 1
}CanIf_InitType;
typedef enum
{
STATIC_TXPDU = 0,
DYNAMIC_TXPDU = 1
}CanIf_TxPduType;
typedef enum
{
STANDARD_CAN = 0,
EXTENDED_CAN = 1
}CanIf_PduCanIdType;
/* callback function pointer types */
typedef P2FUNC(void, TYPEDEF, User_RxIndication)
(
PduIdType CanUserRxPduId,
P2CONST(PduInfoType, AUTOMATIC, CANIF_APPL_DATA) PduInfoPtr
);
typedef P2FUNC(void, TYPEDEF, Range_RxIndication)
(
PduIdType RxPudId,
const uint16 RxId,
P2CONST(PduInfoType, AUTOMATIC, CANNM_APPL_DATA)PduInfoPtr
);
typedef P2FUNC(void, TYPEDEF, User_TxConfirmation)
(
PduIdType CanUserTxPduId
);
/* config pdu structs types */
typedef struct
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
PduIdType UpperLayerHandle; /*Remap the PduId for UpperLayer*/
#endif
Can_IdType CanId; /* Can_IdType 16 or 32 bit */
CanIf_PduCanIdType CanIdType; /* CANIF_TXPDU_CANIDTYPE */
Can_HwHandleType Hth; /* Hardware transmit handle */
uint8 Length; /* DLC */
User_TxConfirmation TxConfirmation; /* Confirmation function */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
CanIf_TxPduType TxPduType; /* CanIfTxPduType DYNAMIC or STATIC*/
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
/*Enables and disables transmit confirmation for each transmit CAN L-PDU for
reading its notification status. True: Enabled False: Disabled*/
boolean TxPduReadNotifyStatus;
#endif
} CanIf_TxPduConfigType;
typedef struct
{
/* Lower CAN Identifier of a receive CAN L-PDU for identifier range
definition, in which all CAN Ids are mapped to one PduId. */
Can_IdType RxPduCanIdRangeLowerCanId ;
/* Upper CAN Identifier of a receive CAN L-PDU for identifier range
definition, in which all CAN Ids are mapped to one PduId. */
Can_IdType RxPduCanIdRangeUpperCanId;
Range_RxIndication RangeRxIndication;
}CanIf_RxPduCanIdRangeType;
typedef struct
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
PduIdType UpperLayerHandle;
#endif
Can_IdType CanId; /* Can_IdType 16 or 32 bit */
CanIf_PduCanIdType CanIdType; /* CANIF_RXPDU_CANIDTYPE */
Can_HwHandleType Hrh; /* Hardware transmit handle */
uint8 Length; /* DLC */
User_RxIndication RxIndication; /* Indication function */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
/*Enables and disables receive indication for each receive CAN L-PDU for
reading its notification status. True: Enabled False: Disabled*/
boolean RxPduReadNotifyStatus;
#endif
#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
/*Enables and disables the Rx buffering for reading of received L-PDU data.
True: Enabled False: Disabled*/
boolean RxPduReadData;
#endif
#if (STD_ON == CANIF_RX_PDU_RANGE_CANID)
P2CONST(CanIf_RxPduCanIdRangeType, TYPEDEF, CANIF_CONFIG_CONST)
RxPduCanIdRangeCfg;
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
PduIdType HrhNextRxPduID;
#endif
} CanIf_RxPduConfigType;
typedef struct
{
/*Lower CAN Identifier of a receive CAN L-PDU for identifier range
definition, in which all CAN Ids shall pass the software filtering. */
Can_IdType HrhRangeRxPduLowerCanId;
/*Upper CAN Identifier of a receive CAN L-PDU for identifier range
definition, in which all CAN Ids shall pass the software filtering.*/
Can_IdType HrhRangeRxPduUpperCanId;
CanIf_PduCanIdType HrhRangeRxPduRangeCanIdType;
}CanIf_HrhRangeCfgType;
/*******************************************************************************
* Global Data Define, No need to be configed
*******************************************************************************/
#define CANIF_START_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
#if (STD_ON == CANIF_PUBLIC_TX_BUFFERING)
extern VAR(boolean, CANIF_PRIVATE_DATA) CanIfTxBufferPDUFillflag[];
extern VAR(uint8, CANIF_PRIVATE_DATA) CanIfTxBufferSdu[][8];
extern VAR(Can_PduType, CANIF_PRIVATE_DATA) CanIfTxBufferPdu[];
#endif
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
extern VAR(Can_IdType, CANIF_PRIVATE_DATA) CanIfTxPduCanIdForDynamic[];
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
extern VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA) CanIfTxNotifStatus[];
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
extern VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA) CanIfRxNotifStatus[];
#endif
#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
extern VAR(uint8, CANIF_PRIVATE_DATA) CanIfRxBufferSduData[][8];
extern VAR(PduLengthType, CANIF_PRIVATE_DATA) CanIfRxBufferSduLength[] ;
#endif
#define CANIF_STOP_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
#define CANIF_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
extern CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanRxPduIds ;
extern CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanTxPduIds ;
extern CONST(Can_HwHandleType, CANIF_CONFIG_CONST) CanIfInitNumberofHrh ;
/*******************************************************************************
* Config Parameters
*******************************************************************************/
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
extern CONST(Can_HwHandleType, CANIF_CONFIG_CONST) CanIfHrhFirstRxPduID[];
#endif
#if(STD_ON == CANIF_HRH_RANGE_FILTER)
extern CONST(CanIf_HrhRangeCfgType, CANIF_CONFIG_CONST) CanIfHrhRangeCfg[];
#endif
extern CONST(CanIf_RxPduConfigType, CANIF_CONFIG_CONST) CanIfRxPduConfig[];
extern CONST(CanIf_TxPduConfigType, CANIF_CONFIG_CONST) CanIfTxPduConfig[];
#define CANIF_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
/*******************************************************************************
* Global Function Declaration
*******************************************************************************/
#define CANIF_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_Init(void);
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_SetControllerMode
(
uint8 ControllerId,
CanIf_ControllerModeType ControllerMode
);
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_GetControllerMode
(
uint8 ControllerId,
P2VAR(CanIf_ControllerModeType, AUTOMATIC, CANIF_APPL_DATA)
ControllerModePtr
);
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_Transmit
(
PduIdType CanTxPduId,
P2CONST(PduInfoType, AUTOMATIC, CANIF_APPL_DATA) PduInfoPtr
);
#if(CANIF_PUBLIC_CANCEL_TRANSMIT_SUPPORT == STD_ON)
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_CancelTransmit
(
PduIdType CanTxPduId
);
#endif
#if (CANIF_PDU_CHANNEL_MODE_CONTROL == STD_ON)
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_SetPduMode
(
uint8 ControllerId,
CanIf_PduSetModeType PduModeRequest
);
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_GetPduMode
(
uint8 ControllerId,
P2VAR(CanIf_PduGetModeType, AUTOMATIC, CANIF_APPL_DATA) PduModePtr
);
#endif
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_SetDynamicTxId
(
PduIdType CanTxPduId,
Can_IdType CanId
);
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
extern FUNC(CanIf_NotifStatusType, CANIF_PUBLIC_CODE) CanIf_ReadTxNotifStatus
(
PduIdType CanTxPduId
);
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
extern FUNC(CanIf_NotifStatusType, CANIF_PUBLIC_CODE) CanIf_ReadRxNotifStatus
(
PduIdType CanRxPduId
);
#endif
#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
extern FUNC(Std_ReturnType, CANIF_PUBLIC_CODE) CanIf_ReadRxPduData
(
PduIdType CanRxPduId,
P2VAR(PduInfoType, AUTOMATIC, CANIF_APPL_DATA) PduInfoPtr
);
#endif
#if (STD_ON == CANIF_PUBLIC_VERSION_INFO_API)
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_GetVersionInfo
(
P2VAR(Std_VersionInfoType, AUTOMATIC, CANIF_APPL_DATA) VersionInfo
);
#endif
#if (STD_ON == CANIF_PUBLIC_TX_BUFFERING)
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_ClearTransmitBuffer
(
uint8 ControllerId
);
#endif
#define CANIF_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif/* _CANIF_H_ */

View File

@ -0,0 +1,103 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanIf_Cbk.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Interface module call back head File
* Author : HeYang
********************************************************************************
* Description : The header file CanIf_Cbk.h contains the declaration of
* callback functions which is called by the Can module
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/04/2011 HeYang N/A Original
* 01.01.00 20/04/2011 HeYang N/A the parameter of memset
* 01.02.00 18/05/2011 HeYang N/A add the marco
CANIF_CANCONTROLLER_TX
* CANIF_CANCONTROLLER_RX
CANCONTROLLER_RANGE_RX
* 01.03.00 28/05/2011 HeYang N/A modify CanIf_SetPduMode
* 01.04.00 15/06/2011 HeYang N/A DPN_CANIF_110615_01
*
*
*
* 02.00.00 06/06/2012 HeYang N/A DPN_CANIF_120606_01
* 02.01.00 05/07/2012 HeYang N/A DPN_CANIF_120705_01
* 02.02.00 08/07/2013 NingChen N/A DPN_CANIF_130708_01
* 02.02.01 16/07/2013 NingChen N/A DPN_CANIF_130716_01
* 02.02.02 29/07/2013 NingChen N/A DPN_CANIF_130729_01
* 02.02.03 05/08/2013 NingChen N/A DPN_CANIF_130805_01
* 02.02.04 15/08/2013 NingChen N/A D10_CANIF_130815_01
* 02.02.05 17/09/2013 NingChen N/A D10_CANIF_130917_01
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANIF_CBK_H_
#define _CANIF_CBK_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanIf.h"
/*******************************************************************************
* Callback Function Declaration
*******************************************************************************/
#define CANIF_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_TxConfirmation
(
PduIdType CanTxPduId
);
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_RxIndication
(
Can_HwHandleType Hrh,
Can_IdType CanId,
uint8 CanDlc,
P2CONST(uint8, AUTOMATIC, CANIF_APPL_DATA) CanSduPtr
);
#if(CANIF_PUBLIC_CANCEL_TRANSMIT_SUPPORT == STD_ON)
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_CancelTxConfirmation
(
P2CONST(Can_PduType, AUTOMATIC, CANIF_APPL_DATA) PduInfoPtr
);
#endif
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_ControllerBusOff
(
uint8 Controller
);
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_ControllerWakeUp
(
uint8 Controller
);
extern FUNC(void, CANIF_PUBLIC_CODE) CanIf_ControllerModeIndication
(
uint8 Controller,
CanIf_ControllerModeType ControllerMode
);
#define CANIF_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif/* _CANIF_CBK_H_ */

View File

@ -0,0 +1,144 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : CanIf_Type.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Interface module type definitions head File
* Author : HeYang
********************************************************************************
* Description : The header file CanIf_Type.h contains the common type
* definitions of the module Can Interface
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 02/04/2011 HeYang N/A Original
* 01.01.00 20/04/2011 HeYang N/A the parameter of memset
* 01.02.00 18/05/2011 HeYang N/A add the marco
CANIF_CANCONTROLLER_TX¡¢
* CANIF_CANCONTROLLER_RX¡C
CANCONTROLLER_RANGE_RX
* 01.03.00 28/05/2011 HeYang N/A modify CanIf_SetPduMode
* 01.04.00 15/06/2011 HeYang N/A DPN_CANIF_110615_01
*
*
*
* 02.00.00 06/06/2012 HeYang N/A DPN_CANIF_120606_01
* 02.01.00 05/07/2012 HeYang N/A DPN_CANIF_120705_01
* 02.02.00 08/07/2013 NingChen N/A DPN_CANIF_130708_01
* 02.02.01 16/07/2013 NingChen N/A DPN_CANIF_130716_01
* 02.02.02 29/07/2013 NingChen N/A DPN_CANIF_130729_01
* 02.02.03 05/08/2013 NingChen N/A DPN_CANIF_130805_01
* 02.02.04 15/08/2013 NingChen N/A D10_CANIF_130815_01
* 02.02.05 17/09/2013 NingChen N/A D10_CANIF_130917_01
********************************************************************************
* END_FILE_HDR*/
#ifndef _CANIF_TYPE_H_
#define _CANIF_TYPE_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "Can_Type.h"
/*Operating modes of the CAN Controller and CAN Driver */
/*******************************************************************************
* Typedef
*******************************************************************************/
/*Operating modes of the CAN Controller and CAN Driver*/
typedef enum
{
/*UNINIT mode. Default mode of the CAN Driver and all CAN controllers
connected to one CAN network after power on. */
CANIF_CS_UNINIT = 0,
/*SLEEP mode. At least one of all CAN controllers connected to one CAN
network are set into the SLEEP mode and can be woken up by request of the
CAN Driver or by a network event (must be supported by CAN hardware) */
CANIF_CS_SLEEP,
/*STARTED mode. All CAN controllers connected to one CAN network are started
by the CAN Driver and in full-operational mode. */
CANIF_CS_STARTED,
/*STOPPED mode. At least one of all CAN controllers connected to one CAN
network is halted and does not operate on the network. */
CANIF_CS_STOPPED
}CanIf_ControllerModeType;
/*Request for PDU channel group. The request type of the channel defines it's
transmit or receive activity. Communication direction (transmission and/or
reception) of the channel can be controlled separately or together
by upper layers.*/
typedef enum
{
/*0000,Channel shall be set to the offline mode => no transmission and
reception */
CANIF_SET_OFFLINE = 0x00,
/*0111,Channel shall be set to online mode => full operation mode */
CANIF_SET_ONLINE = 0x07,
/*0110,Receive path of the corresponding channel shall be disabled*/
CANIF_SET_RX_OFFLINE = 0x06,
/*1001,Receive path of the corresponding channel shall be enabled*/
CANIF_SET_RX_ONLINE = 0x09,
/*0001,Transmit path of the corresponding channel shall be disabled*/
CANIF_SET_TX_OFFLINE = 0x01,
/*0100,Transmit path of the corresponding channel shall be set to the
offline active mode => notifications are processed but transmit
requests are blocked.*/
CANIF_SET_TX_OFFLINE_ACTIVE = 0x04,
/*1110,Transmit path of the corresponding channel shall be enabled*/
CANIF_SET_TX_ONLINE = 0x0e
}CanIf_PduSetModeType ;
/*Status of the PDU channel group. Current mode of the channel defines
its transmit or receive activity. Communication direction (transmission and
/or reception) of the channel can be controlled separately or together
by upper layers*/
typedef enum
{
/*000,Channel is in the offline mode => no transmission and reception*/
CANIF_GET_OFFLINE = 0,
/*100,Transmit path of the corresponding channel is in the offline active
mode => transmit notifications are processed but transmit requests are
blocked.The receive path is disabled.*/
CANIF_GET_OFFLINE_ACTIVE = 4,
/*101,Transmit path of the corresponding channel is in the offline active
mode => transmit notifications are processed but transmit requests are
blocked.The receive path is enabled.*/
CANIF_GET_OFFLINE_ACTIVE_RX_ONLINE = 5,
/*111,Channel is in the online mode => full operation mode*/
CANIF_GET_ONLINE = 7,
/*001,Receive path of the corresponding channel is enabled and transmit path
is disabled.*/
CANIF_GET_RX_ONLINE = 1,
/*110,Transmit path of the corresponding channel is enabled and receive path
is disabled.*/
CANIF_GET_TX_ONLINE = 6
}CanIf_PduGetModeType ;
/*Return value of CAN L-PDU notification status.*/
typedef enum
{
/*No transmit or receive event occurred for the requested L-PDU.*/
CANIF_NO_NOTIFICATION = 0,
/*The requested Rx/Tx CAN L-PDU was successfully transmitted or received.*/
CANIF_TX_RX_NOTIFICATION = 1
}CanIf_NotifStatusType ;
#endif/* _CANIF_TYPE_H_ */

View File

@ -0,0 +1,207 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DEM_CFG_H_
#define _DEM_CFG_H_
#include "Dcm_Cfg.h"
#include "Dem_Types.h"
#include "PduR_Dcm.h"
#include "calibration.h"
#include "nvm.h"
typedef u16 dem_addr_t; //TEMP_MODIFY
#define TOTAL_DTC_NUM (NUM_OF_DTC) /*配置 NUM_OF_DTC */
#define DTC_STATUS_USED_MASK (0x49U) /*配置 DTC MASK */
#define DTC_SNAP_SHOT_DATA_ENABLE (STD_OFF) /*配置是否支持快照 0: 不使用snap shot data */
#define DTC_EXTENDED_DATA_ENABLE (STD_OFF) /*配置是否支持擴展數據:0: 不使用EXTENDEDt data */
#define DEM_DTC_STORAGE_TO_EEPROM_EN (STD_ON)
#define TOTAL_MAX_STORED_DTC_NUM (NUM_OF_DTC) /*配置最大的 存儲 DTC 的個數 */
//#define DTC_TASK_TICK_PER_SEC (TASK_TICKS_PER_SEC*0.5) /*配置 CAN TASK PERIOD:100/s CAN 任務 每秒100次 */
//#define DTC_TIME_s(x) ((u16)((x)*DTC_TASK_TICK_PER_SEC))
#define EEPROM_INTIED_FLAG_ADDR (EEPROM_LOGIC_BASE_ADDR_FOR_DTC) //NVM_START_ADDR_DTC -- 注意
#define DEM_DTC_STORAGE_EEPROM_START_ADDR (dem_addr_t)(EEPROM_INTIED_FLAG_ADDR+2u) /*配置 DTC 存儲首地址 */
#if (TOTAL_DTC_NUM <253)
typedef uint8_t dtc_handle_t;
#else
typedef uint16_t dtc_handle_t;
#endif
#define DTC_NO_EXIST ((dtc_handle_t)(-1)) //其實就是 ff表示 不存在
#define DTC_IS_IN_GROUP ((dtc_handle_t)(-2)) //其實就是 fe表示在組內
#define DTC_INIT_FLAG_STORY_TO_EXT_EEPROM
#define DTC_RECORD_STORY_TO_EXT_EEPROM
#define DTC_ALL_GROUPS 0xFFFFFFu
#define DTC_NETWORK_COMM_GROUPS 0xC00000u
#define DTC_BODY_GROUPS 0x800000u
#define DTC_CHASSIS_GROUPS 0x400000u
#define DTC_POWERTRAIN_GROUPS 0X100000u
#define DTC_EMISSION_GROUPS 0x000000u
typedef uint16 IntEEPROM1_TAddress; /* Type of address to the EEPROM */
#define EEPROM_UNINITED 0u
#define EEPROM_INITED 1u
#define EEPROM_DTC_CLEAR 2u
#define DTC_SET_TIME_FOR_OUTPUT (80u) /* 80*10MS = 800mS */
#define DTC_TEST_FAILED (0u)
#define DTC_TEST_PASSED (1u)
#define TEST_RESULT_STATE_BIT_LENGTH (2U)
#define TOTAL_TEST_RESULT_NUM ((TOTAL_DTC_NUM)/(8/(TEST_RESULT_STATE_BIT_LENGTH)) + 1)
#define TOTAL_DTC_FLAG_NUM (TOTAL_DTC_NUM / 8 + 1)
//#define DTC_MONITORING_CYCLE_NUM (TOTAL_STORED_DTC_NUM / 8 + 1)
#define LAST_DTC_INDEX (TOTAL_DTC_NUM-1)
#define NO_DTC_STORED_INDEX (0xffu)
#define TOTAL_DTC_MONITORING_CYCLE 2u
#define DTC_MONITORING_CYCLE2 0u
#define DTC_MONITORING_CYCLE4 1u
#define TOTAL_DTC_SNAP_SHOT_ID_NUM 4u /* FE-5 4 did */
#define TOTAL_DTC_EXTENDED_DATA_NUM 1u
#define MAX_DTC_AGING_COUNTER_VALUE 40u
#define MIN_DTC_FAULT_DT_CNT_VALUE 16u /* -128 + 16 */
#define MAX_DTC_FAULT_DT_CNT_VALUE 223u /* 127 - 32 */
#define DTC_FAULT_DT_CNT_UP_STEP 32u
#define DTC_FAULT_DT_CNT_DOWN_STEP 16u
#define DTC_MONITORING_CYCLE0_MASK 0x01u
#define DTC_MONITORING_CYCLE1_MASK 0x02u
#define DTC_MONITORING_CYCLE2_MASK 0x04u
#define DTC_MONITORING_CYCLE3_MASK 0x08u
#define DTC_MONITORING_CYCLE4_MASK 0x10u
/* Define DTC index */
#define DTC_POWER_LOW_ID 0u /*0*/ /*低於9v 500ms*/
#define DTC_POWER_HIGH_ID 1u /*1*/ /*超過16v 500ms*/
#define DTC_PREV_BUTTON_STUCK_ID 2u //向上搜台
#define DTC_PHONE_BUTTON_STUCK_ID 3u //电话
#define DTC_VOICE_BUTTON_STUCK_ID 4u
#define DTC_VEDIO_BUTTON_STUCK_ID 5u
#define DTC_NEXT_BUTTON_STUCK_ID 6u
#define DTC_MUTE_BUTTON_STUCK_ID 7u
#define DTC_CUSTOM_BUTTON_STUCK_ID 8u
#define DTC_MENU2_CTRL_BUTTON_STUCK_ID 9u
#define DTC_LOST_COM_WITH_GW_ID 10u
#define DTC_SPDP_BUTTON_STUCK_ID 11u
#define DTC_SPDD_BUTTON_STUCK_ID 12u
#define DTC_DSPD_BUTTON_STUCK_ID 13u
#define DTC_DSPP_BUTTON_STUCK_ID 14u
#define DTC_LEFT_MENU_STUCK_ID 15u
#define DTC_LEFT_PICK_STUCK_ID 16u
#define DTC_RIGHT_PICK_STUCK_ID 17u
#define DTC_HEAT_OVERCURRENT_INDEX 18u
#define DTC_SWH_STRIP_SHORT_INDEX 19u
#define DTC_SWH_STRIP_OPEN_INDEX 20u
#define DTC_SWH_NTC_SHORT_INDEX 21u
#define DTC_SWH_NTC_OPEN_INDEX 22u
#define DTC_GROUP_BODY_INDEX_MIN (0U)
#define DTC_GROUP_BODY_INDEX_MAX (DTC_TAILGATE_PE_SW_STUCK_ID)
#define DTC_GROUP_NETWORK_INDEX_MIN (DTC_GROUP_BODY_INDEX_MAX+1)
#define DTC_GROUP_NETWORK_INDEX_MAX (DTC_LOST_COMMUNICATION_IMMO_ID)
#define DTC_VOLTAGE_IS_TOO_LOW (DTC_POWER_LOW_ID)
#define DTC_VOLTAGE_IS_TOO_HIGH (DTC_POWER_HIGH_ID)
typedef struct{
dtc_status_t dtc_status;
#if (DTC_SNAP_SHOT_DATA_ENABLE) /* not used for brilliance-auto */
dtc_snap_shot_data_t DTCSnapShotData;
#endif
#if (DTC_EXTENDED_DATA_ENABLE)
dtc_extended_data_t DTCextended_data;
#endif
} dtc_stored_data_t;
typedef struct{
u8 write_pointer; /* DTC_INDEX Stored to RAM */
u8 stored_dtc_index[TOTAL_MAX_STORED_DTC_NUM]; /* DTC_INDEX Stored to RAM ----是把SupportedDTC中的需要儲存到eeprom的buf id 轉到該數組中 所以<=11*/
/* Don't save cMonitoringCycle in EEPROM, it just used for the increasing of monitory cycle counter . */
dtc_stored_data_t dtc_stored_dt[TOTAL_MAX_STORED_DTC_NUM];
} dtc_info_struct_t;
#define SYS_PARM_STRGE_START_ADDR (0)
//#define DTC_SNAPSHOT_RECORD_LENGTH (sizeof(dtc_snap_shot_data_t) + 8) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
#define DTC_SNAPSHOT_RECORD_LENGTH (sizeof(dtc_snap_shot_data_t) + 2 * TOTAL_DTC_SNAP_SHOT_ID_NUM) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
#define DTC_EXTDATA_RECORD_LENGTH (sizeof(dtc_extended_data_t) + 1 * TOTAL_DTC_EXTENDED_DATA_NUM) /* snap_shot_data LENGTH + DID 4*2 BYTE LENGTH) */
#define _SnapShort_size_0 (fld_sizeof(dtc_snap_shot_data_t, main_ecu_supply_voltage))
#define _SnapShort_size_1 (fld_sizeof(dtc_snap_shot_data_t, vehicle_speed))
#define _SnapShort_size_2 (fld_sizeof(dtc_snap_shot_data_t, odometer))
#define _SnapShort_size_3 (fld_sizeof(dtc_snap_shot_data_t, tbox_datatime))
#define _SnapShort_ADDR_0 (offsetof1(dtc_snap_shot_data_t, main_ecu_supply_voltage) + SYS_PARM_STRGE_START_ADDR)
#define _SnapShort_ADDR_1 (offsetof1(dtc_snap_shot_data_t, vehicle_speed) + SYS_PARM_STRGE_START_ADDR)
#define _SnapShort_ADDR_2 (offsetof1(dtc_snap_shot_data_t, odometer) + SYS_PARM_STRGE_START_ADDR)
#define _SnapShort_ADDR_3 (offsetof1(dtc_snap_shot_data_t, tbox_datatime) + SYS_PARM_STRGE_START_ADDR)
#define _ExtData_ADDR_1 (sizeof(dtc_status_t) +sizeof(dtc_snap_shot_data_t) + SYS_PARM_STRGE_START_ADDR)
#define _ExtData_ADDR_2 (_ExtData_ADDR_1 + 1)
//extern const uint32 SupportedDTC[NUM_OF_DTC];
#if (DTC_SNAP_SHOT_DATA_ENABLE)
extern const u8 c_dtc_snap_shot_data_id[TOTAL_DTC_SNAP_SHOT_ID_NUM][2];
extern const u8 c_dtc_snap_shot_data_size[TOTAL_DTC_SNAP_SHOT_ID_NUM];
#endif
#if (DTC_EXTENDED_DATA_ENABLE)
extern const u8 c_dtc_extended_data_id[TOTAL_DTC_EXTENDED_DATA_NUM];
#endif
extern const u32 SupportedDTC[TOTAL_DTC_NUM] ;
#define DEM_TASK_TIME_UNIT 5 //10Ms跑一次任务
#define DEM_TASK_WAIT_EEPROM_INIT (3000/DEM_TASK_TIME_UNIT) //等待eeprom初始化的超时
#define DEM_CFG_ENABLE_MACHINE_STATE_FOR_INIT //使能--初始化要等到eeprom成功讀取之後
#endif

View File

@ -0,0 +1,58 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Dem.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : Diagnostic Event Manager head File
* Author : HeYang
********************************************************************************
* Description : Includes all user relevant information for the tracing of
* product errors.
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 06/06/2012 HeYang N/A Original
* 01.01.00 08/07/2013 Ning.Chen N/A
********************************************************************************
* END_FILE_HDR*/
#ifndef DEM_H
#define DEM_H
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Std_Types.h"
#include "Dem_IntErrId.h"
typedef uint16 Dem_EventIdType;
typedef enum
{
DEM_EVENT_STATUS_PASSED,
DEM_EVENT_STATUS_FAILED,
DEM_EVENT_STATUS_PREPASSED,
DEM_EVENT_STATUS_PREFAILED
}Dem_EventStatusType;
/*******************************************************************************
* Global Function Define
*******************************************************************************/
extern void Dem_ReportErrorStatus
(
Dem_EventIdType EventId,
uint8 EventStatus
);
#endif/* DEM_H */

View File

@ -0,0 +1,111 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#include "DEM_Cfg.h"
#include "Dcm_Cfg.h"
const u32 SupportedDTC[TOTAL_DTC_NUM] =
{
/*0*/ 0x911716u, /*低於9v 500ms*/ //排序見宏 DTC_POWER_LOW_ID
/*1*/ 0x911717u, /*超過16v 500ms*/
/*2*/ 0x9E0107u, /*上一频道开关卡住*/
/*3*/ 0x9E0207u, /*蓝牙电话开卡住故障*/
/*4*/ {0x9E0507u}, /*语音开关卡住故障*/
/*5*/ {0x9E0607u}, /*全景影像开关卡住故障*/
/*6*/ {0x9E0807u}, /*下一频道开关卡住故障*/
/*7*/ {0x9E1907u}, /*静音开关卡住故障*/
/*8*/ {0x9E1A07u}, /*定制开关卡住故障*/
/*9*/ {0x9E1C07u}, /*仪表菜单返回开关卡住故障*/
/*10*/ {0x9E2D07u}, /*巡航开关卡住故障*/
/*11*/ {0x9E2F07u}, /*速度+开关卡住故障*/
/*12*/ {0x9E3007u}, /*速度-开关卡住故障*/
/*13*/ {0x9E3307u}, /*时距减开关卡住故障*/
/*14*/ {0x9E3407u}, /*时距+开关卡住故障*/
/*15*/ {0x9E4500u}, /*左菜单卡滞*/
/*16*/ {0x9E2C02u}, /*左拨片卡滞*/
/*17*/ {0x9E2C03u}, /*右拨片卡滞*/
/*18*/ {0x9E3900u}, /*加热丝过流保护*/
/*19*/ {0x9E4114u}, /*加热丝短路*/
/*20*/ {0x9E4113u}, /*加热丝断路*/
/*21*/ {0x9E4214u}, /*NTC短路*/
/*22*/ {0x9E4213u}, /*NTC断路*/
};
//dtc_drv_cfg_t 第一個參數是消抖時間第二個參數是在什麼情況下消抖0是failed去抖第三個參數是否保存在eeprom
const dtc_drv_cfg_t dtc_cfg_tbl[TOTAL_DTC_NUM] =
{
{0, DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0, DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0, DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0, DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE},
{0,DEM_DTC_DEBOUNCE_RST, DTC_STORAGE_TO_EE}
};
#if (DTC_SNAP_SHOT_DATA_ENABLE) //支持快照的宏
const u8 c_dtc_snap_shot_data_id[TOTAL_DTC_SNAP_SHOT_ID_NUM][2] = { //TOTAL_DTC_SNAP_SHOT_ID_NUM=3 見吉利矩陣文檔
//DF00是 ECU POWER VOLTAGE //DF03 是The Odometer Of First Malfunction //DF04是 The Odometer Of last Malfunction
{0xA5, 0x00}, {0xA5, 0x01}, {0xA5, 0x03}, {0xA5, 0x04}/*, {0xDD, 0x04}, {0xDD, 0x05},{0xDD, 0x06}, */
};
//各快照的內容長度
const u8 c_dtc_snap_shot_data_size[TOTAL_DTC_SNAP_SHOT_ID_NUM] = {
_SnapShort_size_0, _SnapShort_size_1, _SnapShort_size_2, _SnapShort_size_3
};
#endif
#if (DTC_EXTENDED_DATA_ENABLE) //支持外部數據---吉利矩陣文檔中,有兩個 01是DTC Occurrence Counter 0-255
//02是 Self-Healing Counter
const u8 c_dtc_extended_data_id[TOTAL_DTC_EXTENDED_DATA_NUM] = { //該數組好像沒有用到
0x01 /*, 0x02, 0x03, 0x04, 0x10,*/
};
#endif

View File

@ -0,0 +1,47 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Dem_IntErrId.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : Diagnostic Event Manager IntErr head File
* Author : HeYang
********************************************************************************
* Description : for BSW event Id symbols .
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 06/06/2012 HeYang N/A Original
* 01.01.00 08/07/2013 Ning.Chen N/A
********************************************************************************
* END_FILE_HDR*/
#ifndef DEM_INTERRID_H
#define DEM_INTERRID_H
/*******************************************************************************
* Macro
*******************************************************************************/
/*Can Interface*/
/*Production Error,Assigned by DEM,Failed DLC Check */
#define CANIF_E_INVALID_DLC (0x6001U)
/*Production Error,Assigned by DEM,CAN Interface controller mode
state machine is in mode CANIF_CS_STOPPED */
#define CANIF_E_STOPPED (0x6002U)
/*Production Error,Assigned by DEM,CAN Interface controller mode
state machine is not in mode CANIF_CS_SLEEP */
#define CANIF_E_NOT_SLEEP (0x6003U)
#endif/* DEM_INTERRID_H */

View File

@ -0,0 +1,104 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DEM_TYPES_H_
#define _DEM_TYPES_H_
#include "common_types.h"
#define DEM_DTC_DEBOUNCE_RST (0U) /* 0: 仅test failed 去抖; */
#define DEM_DTC_DEBOUNCE_ACC (1U) /* 累加/减法去抖 test failed&passed 都采样去抖 */
#define DTC_NOT_STORAGE (0U) /* 0: DTC 不存储*/
#define DTC_STORAGE_TO_EE (1U) /* 1: DTC 存储*/
typedef union
{
uint8_t status_byt;
struct{
unsigned char test_failed :1; //用以確定故障是否存在
unsigned char test_failed_this_operation_cycle :1; //在這周期中,任何失敗的測試都曾發生
unsigned char pending_dtc :1; //故障狀態--當test至少通過一次且從未發生故障時
//在一個操作周期完成後才會清除。
unsigned char confirmed_dtc :1; //經過確認,--它並不總是表明,請求時麻煩就出現了
unsigned char test_not_completed_since_last_clr :1; //測試未完成
unsigned char test_failed_since_last_clr :1; //latch failure of bit1 ,only can be clear by cleardtc
unsigned char test_not_completed_this_operation_cycle :1; //如果相關的DTC測試曾經運行過在這個操作中完成
unsigned char warning_indicator_requested :1; //當警告指示是需要的
} status_bits;
} dtc_status_t;
typedef enum
{
DTC_RECORD_STORY_TO_RAM = 0,
DTC_RECORD_STORY_TO_INT_FLASH,
DTC_RECORD_STORY_TO_INT_EEPROM,
DTC_RECORD_STORY_TO_EXT_FLASH,
DTC_RECORD_STORY_TO_EXT_EEPROM
} dtc_story_mode_t;
typedef enum
{
DTC_TEST_STATE_NO_RESULT = 0,
DTC_TEST_STATE_FAILED,
DTC_TEST_STATE_PASSED,
DTC_TEST_STATE_UNKNOW
} test_result_state_e;
typedef uint8_t dtc_freq_t; /* DTC frequency(s) */
typedef uint8_t dtc_stry_start_addr_t; /* DTC addres(s) */
typedef void (*dtc_callback)(void);
typedef struct
{
dtc_freq_t confirm_debounce_time; /* Confirm Debounce delay Time , >= 1, < 255*/
bool debounce_mode; /* 0: 仅test failed 去抖; 1: test failed&passed 都采样去抖 見宏 DEM_DTC_DEBOUNCE_RST 和 DEM_DTC_DEBOUNCE_ACC */
bool story_mode; /* 配置是否存储到EEPROM, 1 存储到EEPROM 見宏 DTC_NOT_STORAGE 和 宏 DTC_STORAGE_TO_EE */
}dtc_drv_cfg_t;
typedef struct{
uint8_t c_main_ecu_supply_voltage;
uint8_t c_main_ecu_power_mode;
} dtc_snap_shot_data_t;
typedef struct{
uint8_t c_monitoring_cycle_counter[4];
/* signed char cDTCFaultDetectionCounter; */
} dtc_extended_data_t;
typedef struct{
/* const dword *pDTCNumber; */
dtc_status_t c_status;
/* dtc_snap_shot_data_t SnapShotData[TOTAL_DTC_NUM]; */
/* dtc_extended_data_t ExtendedData[TOTAL_DTC_NUM]; */
/*uint8_t dtc_fault_detection_counter;*/
} dtc_record_t;
#define fld_sizeof(s, m) sizeof(((s *)0)->m) //取s結構體中m的成員的長度
//#define offsetof(s,m) (( (uint8_tnt8_t) &( ( (s*)0 )->m )) - (size_t)((s*)0))
#define offsetof1(s,m) ( (uint8_t) &( ( (s*)0 )->m )) //取s結構體中m的地址
#endif

View File

@ -0,0 +1,123 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DEMM_H_
#define _DEMM_H_
#include "Dem_Types.h"
#include "DEM_Cfg.h"
#include "error.h"
#include "common_types.h"
#define DEM_ENTER_CRITICAL_METHOD (3u)
#if 1 //把目前沒有用到的放一起注明
#define DEM_DEV_ERR_CHECK (0u) //目前好像沒用到
#define DESC_TOTAL_ROUTINE_CONTROL_NUM 1u
#define DESC_TOTAL_ROUTINE_CONTROL_TYPE_NUM 3u
#define DEM_EEPROM_RES_PROTECTED 1u /* DEM 用到的存储EPROM 服务是否启用资源保护*/
#endif
/* Define ControlDTCSetting sub service */
#define DESC_CONTROL_DTC_SETTING_ON (TRUE) // 1
#define DESC_CONTROL_DTC_SETTING_OFF (FALSE) // 2
#if 1 //把目前沒有用到的放一起注明
/* Define Read Memory BY Address Sub Service */
#define DESC_READ_MEMORY_BY_ADDRESS_SHORT_ADDR 0x14
#define DESC_READ_MEMORY_BY_ADDRESS_LONG_ADDR 0x24
/* Define Read Memory BY Address Sub Service */
#define DESC_WRITE_MEMORY_BY_ADDRESS_SHORT_ADDR 0x14
#define DESC_WRITE_MEMORY_BY_ADDRESS_LONG_ADDR 0x24
#define DESC_SERVICE_REQ_LENGTH_NEED_CHECK 0xff
#define DESC_TIMER_100MS 20 /* unit: can_desc_task Call Cycle Time * Value, here 5 ms * 20 = 100ms */
#define DESC_TESTER_PRESENT_TIME_OUT_DELAY_TIME 140 /* unit: 100ms, here 50 * 100 ms = 5s */
#endif
/* 應用程序接口*/
//void dem_set_test_result(dtc_handle_t dtc_index, test_result_state_e result);
//void dem_clear_test_result(dtc_handle_t dtc_index);
//void dem_task_init(void);
void dem_task_init(void);
/**
* @brief dtc_task
* @retval none
*/
void dem_task(void);
/*
使DTC */
void dem_enable_dtc_record_update(void);
void dem_disable_dtc_record_update(void);
/* DCM 模塊接口*/
/*
UDS , DTC 使DTC檢測
*/
void dem_enable_dtc_setting(void);
void dem_disable_dtc_setting(void);
void dem_set_test_result(dtc_handle_t dtc_index, test_result_state_e result);
void dem_clear_test_result(dtc_handle_t dtc_index);
/*
void dem_get_status_of_dtc(void);
void dem_dcm_cancel_operation(void);
void dem_clear_all_dtc_record_information(void);
*/
/* 供DCM調用--根據 DTC三字節的id來清除*/
err_flag_e dem_clear_dtc(const u8 *dtc);
/*
DTC_RECORD.STATE
*/
/*bool_t dtc_get_state(u8 dtc_index, u8 *state);*/
u8 _dem_get_state(dtc_handle_t dtc_index);
void dem_test_fun(void);
/* 19 04 函數調用, dtc index 範圍由調用函數處理, 此函數內部不檢查有效範圍*/
bool demm_copy_snap_short_data_to_dcm_txbuff(dtc_handle_t dtc_index, u8 *dcm_txbuff);
/* 19 06 函數調用, dtc index 範圍由調用函數處理, 此函數內部不檢查有效範圍*/
bool demm_copy_extdata_to_dcm_txbuff(dtc_handle_t dtc_index, u8 *dcm_txbuff);
void demm_operation_cycle_chaned_event_proc(void);
typedef struct
{
u16 test[TOTAL_DTC_NUM]; /* debug only */
}demm_test_t;
//#define DEMM_DEBUG_EN //用于debug的
void dem_test_init(void);
#endif

View File

@ -0,0 +1,50 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Det.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : Development Error Tracer Header File
* Author : HeYang
********************************************************************************
* Description : Includes all user relevant information for the tracing of
* development errors. .
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 06/06/2012 HeYang N/A Original
* 01.01.00 08/07/2013 Ning.Chen N/A
********************************************************************************
* END_FILE_HDR*/
#ifndef DET_H
#define DET_H
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Std_Types.h"
/*******************************************************************************
* Global Function Declaration
*******************************************************************************/
extern void Det_ReportError
(
uint16 ModuleId,
uint8 InstanceId,
uint8 ApiId,
uint8 ErrorId
);
#endif/* DET_H */

View File

@ -0,0 +1,207 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name: CanTp.h
********************************************************************************
* Project/Product : CanTp programme
* Title: : CanTp.h
* Author: : donger.yang
********************************************************************************
* Description: Defination of Interface for CAN driver and other modes
*
********************************************************************************
* Limitations: None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -------------------
* 01.00.00 05/24/2010 qiuying.ma N/A Original
* 01.01.00 01/08/2013 rui.guo N/A HrAsrCanTp130108-01
* 01.02.00 04/12/2013 donger.yang N/A HrAsrCanTp130412-01
* 01.02.01 07/17/2013 donger.yang N/A HrAsrCanTp130717-01
* 02.02.02 08/13/2013 donger.yang N/A HrAsrCanTp130813-01
* 02.02.03 08/25/2013 donger.yang N/A HrAsrCanTp130825-01
* 02.02.04 08/27/2013 donger.yang N/A HrAsrCanTp130827-01
* 02.02.05 09/03/2013 donger.yang N/A HrAsrCanTp130903-01
********************************************************************************
*END_FILE_HDR*/
#ifndef CANTP_H
#define CANTP_H
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "CanTp_Cfg.h"
#define CANTP_VENDOR_ID (uint16)(0xFFFFu)
#define CANTP_MODULE_ID (uint16)(0x0023u)
/* CanTp Component release Version */
#define CANTP_SW_MAJOR_VERSION (uint8)(0x01u)
#define CANTP_SW_MINOR_VERSION (uint8)(0x00u)
#define CANTP_SW_PATCH_VERSION (uint8)(0x00u)
/* Autosar release version */
#define CANTP_AR_MAJOR_VERSION (uint8)(0x04u)
#define CANTP_AR_MINOR_VERSION (uint8)(0x00u)
#define CANTP_AR_PATCH_VERSION (uint8)(0x00u)
/*******************************************************************************
* Global data types and structures
*******************************************************************************/
/* AUTOSAR compliant */
typedef enum /* CanTpInternalState */
{
CANTP_OFF = 0,
CANTP_ON
} CanTpInternalState;
typedef enum
{
CANTP_RX_CHANNEL = 0,
CANTP_TX_CHANNEL
} CanTpChannelType;
typedef enum
{
CANTP_STANDARD = 0,
CANTP_EXTENDED,
CANTP_MIXED
} CanTpAddressingFormat;
typedef enum
{
CANTP_PHYSICAL = 0,
CANTP_FUNCTIONAL
} CanTpTaType;
typedef enum
{
CANTP_BS_PARAMETER = 0,
CANTP_STMIN_PARAMETER
} CanTpParameterType;
/*******************************************************************************
* Types for static-configuration (ROM/Flash)
*******************************************************************************/
/*RxNsdu (ROM)*/
typedef struct
{
PduIdType CanTpChannelId;
PduIdType CanTpRxNPduId;
PduIdType CanTpTxFcNPduId;
uint16 CanTpRxDl;
uint16 CanTpNar;
uint16 CanTpNbr;
uint16 CanTpNcr;
uint8 CanTpRxPaddingActive;
uint8 CanTpRxTaType;
uint8 CanTpRxAddrFormat;
uint8 CanTpBs;
uint8 CanTpSTmin;
uint8 CanTpRxWftMax;
uint8 CanTpRxNAe;
uint8 CanTpRxNSa;
uint8 CanTpRxNTa;
} CanTp_RxNsduCfgType;
/*TxNsdu (ROM)*/
typedef struct
{
PduIdType CanTpChannelId;
PduIdType CanTpTxNPduId;
PduIdType CanTpRxFcNPduId;
uint16 CanTpTxDl;
uint16 CanTpNas;
uint16 CanTpNbs;
uint16 CanTpNcs;
uint8 CanTpTxPaddingActive;
uint8 CanTpTxTaType;
uint8 CanTpTxAddrFormat;
uint8 CanTpTxNAe;
uint8 CanTpTxNSa;
uint8 CanTpTxNTa;
} CanTp_TxNsduCfgType;
/*RxPdu mapping table */
typedef struct
{
PduIdType RxSduIdx;
PduIdType TxSduIdx;
} CanTp_RxPduMapType;
typedef struct
{
boolean ChannelMode;
}CanTpChannelModeType;
/*******************************************************************************
* CanTp Overall (ROM)
*******************************************************************************/
/* Struct to hold the complete CanTp-configuration */
typedef struct
{
const CanTp_RxNsduCfgType* const CanTp_RxNsduCfg;
const CanTp_TxNsduCfgType* const CanTp_TxNsduCfg;
const CanTpChannelModeType* const ChannelMode;
} CanTp_CfgType;
/*******************************************************************************
* External administration data (RAM)
*******************************************************************************/
typedef struct
{
const CanTp_CfgType* CfgPtr;
CanTpInternalState InternalState;
} CanTp_AdminDataType;
/*******************************************************************************
* Global defines
*******************************************************************************/
#define CANTP_MODE_HALF_DUPLEX 0x00
#define CANTP_MODE_FULL_DUPLEX 0x01
#define CANTP_MAX_FRAME_LENGTH 0x08u
#define CANTP_UNUSED 0xFFu
/*******************************************************************************
* Gloable Data definitions
*******************************************************************************/
extern const CanTp_CfgType CanTp_Cfg;
/*******************************************************************************
* Prototypes of export functions
*******************************************************************************/
extern void CanTp_Init(const void* const pCfgPtr);
extern void CanTp_Shutdown(void);
extern void CanTp_MainFunction(void);
extern Std_ReturnType CanTp_Transmit(PduIdType CanTpTxSduId, const PduInfoType* pData);
#if (CANTP_TC == STD_ON)
extern Std_ReturnType CanTp_CancelTransmitRequest(PduIdType CanTpTxSduId);
#endif
extern Std_ReturnType CanTp_CancelReceiveRequest(PduIdType CanTpRxSduId);
extern Std_ReturnType CanTp_ChangeParameterRequest(PduIdType CanTpSduId,CanTpParameterType parameter,uint16 value);
#if (CANTP_VERSION_INFO_API == STD_ON)
extern void CanTp_GetVersionInfo(Std_VersionInfoType* pVersionInfo);
#endif
#endif

View File

@ -0,0 +1,37 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _CANTP_CBK_H_
#define _CANTP_CBK_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
/*******************************************************************************
* Prototypes of export functions
*******************************************************************************/
extern void CanTp_RxIndication(PduIdType CanTpRxPduId, const PduInfoType* pCanTpRxPduPtr);
extern void CanTp_TxConfirmation(PduIdType CanTpTxPduId);
#endif

View File

@ -0,0 +1,31 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _CANTRCV_H_
#define _CANTRCV_H_
#include "gpio.h" /* derivative-specific definitions */
#include "Std_Types.h"
#define CAN_TRSCV_TYPE (1U) /* 0: TLE6250; 1: TLE6251DS /TJA1040 */
void CanTrcv_Init(void);
void CanTrcv_Disable(void);
#endif

View File

@ -0,0 +1,118 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Can_Cfg.h
*
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Driver(MSCAN) module configuration File
* Author : Hirain
********************************************************************************
* Description : Contain the pre-compile-time configuration parameters.
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 02.00.01 15/08/2013 NingChen N/A D10_MSCAN_130815_1
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _CAN_CFG_H_
#define _CAN_CFG_H_
#include "fm33lg0xx_fl.h"
#include "mf_config.h"
#include "cpu.h"
/*******************************************************************************
* Common Macro
*******************************************************************************/
/* event process mode */
#define CAN_INTERRUPT (1u)
#define CAN_POLLING (0u)
#define CAN_STANDARD_ID_ONLY (1u)
#define CAN_EXTERNED_ID_ONLY (2u)
#define CAN_MIXED_ID (3u)
#define CAN_HOH_TX_MASK ((uint8)0x01)
#define CAN_HOH_RX_MASK ((uint8)0x00)
#define CAN_HOH_FULL_MASK ((uint8)0x02)
#define CAN_HOH_BASIC_MASK ((uint8)0x00)
/*******************************************************************************
* CanGeneral
*******************************************************************************/
#define CAN_DEV_ERROR_DETECT STD_OFF
#define CAN_HW_TRANSMIT_CANCELLATION STD_OFF
#define CAN_IDENTICAL_ID_CANCELLATION STD_OFF
#define CAN_MULTIPLEXED_TRANSMISSION STD_OFF
#define CAN_TIMEOUT_DURATION (100u)
#define CAN_VERSION_INFO_API STD_OFF
#define CAN_MAIN_FUNCTION_BUS_OFF_PERIOD (1u)
#define CAN_MAIN_FUNCTION_MODE_PERIOD (1u)
#define CAN_MAIN_FUNCTION_READ_PERIOD (1u)
#define CAN_MAIN_FUNCTION_WAKEUP_PERIOD (1u)
#define CAN_MAIN_FUNCTION_WRITE_PERIOD (1u)
#define USE_CANIF STD_ON
#define CAN_AUTOSET_INTERRUPT_PRIORITY STD_OFF
#define CAN_ID_TYPE_SUPPORT CAN_STANDARD_ID_ONLY
#if (CAN_ID_TYPE_SUPPORT ==CAN_STANDARD_ID_ONLY)
#define CAN_ENABLE_EXTERNED_ID STD_OFF
#else
#define CAN_ENABLE_EXTERNED_ID STD_ON
#endif
#define CAN_USED_HOH_NUM (4u)
#define CAN_VENDOR_ID_VALUE ((uint16)26)
#define CAN_MODULE_ID_VALUE ((uint16)80)
#define CAN_INSTANCE_ID_VALUE_0 ((uint8)0)
/*******************************************************************************
* CanController
*******************************************************************************/
#define CAN_USED_CONTROLLER_NUM (1u)
#define CAN0_CONTROLLER_ACTIVATION STD_ON
#define CAN0_CONTROLLER_BAUD_RATE (500u)
#define CAN0_CLOCK_REFERENCE (8000u)
#define CAN0_CONTROLLER_BASE_ADDRESS (0x140u)
#define CAN0_CLKSRC_BUSCLK STD_OFF
#define CAN0_RX_PROCESSING CAN_INTERRUPT
#define CAN0_TX_PROCESSING CAN_INTERRUPT
#define CAN0_WAKEUP_PROCESSING CAN_INTERRUPT
#define CAN0_WAKEUP_SUPPORT STD_ON
#define CAN0_BUSOFF_PROCESSING CAN_INTERRUPT
#define CAN_PHY0_ACTIVATION CAN0_CONTROLLER_ACTIVATION
#define CAN_PHY0_RX_PROCESSING CAN0_RX_PROCESSING
#define CAN_PHY0_TX_PROCESSING CAN0_TX_PROCESSING
#define CAN_PHY0_WAKEUP_PROCESSING CAN0_WAKEUP_PROCESSING
#define CAN_PHY0_WAKEUP_SUPPORT CAN0_WAKEUP_SUPPORT
#define CAN_PHY0_BUSOFF_PROCESSING CAN0_BUSOFF_PROCESSING
#define CAN_PHY0_TO_LOGIC (0u)
#define Can_DisableGlobalInterrupts() System_DisableIrqGlobal()
#define Can_EnableGlobalInterrupts() System_EnableIrqGlobal()
#endif /* _CAN_CFG_H_ */

View File

@ -0,0 +1,120 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Can_PBcfg.c
*
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : CAN Driver(MSCAN) module configuration File
* Author : Hirain
********************************************************************************
* Description : This file contains the post-build time configurable
* parameters of CAN Driver
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 02.00.01 15/08/2013 NingChen N/A D10_MSCAN_130815_1
*
********************************************************************************
* END_FILE_HDR*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Can.h"
#include "mf_config.h"
#include "fm33lg0xx_fl.h"
/*******************************************************************************
* Config Parameters
*******************************************************************************/
#define CAN_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
CONST(uint8, CAN_CONFIG_CONST) CanControllerIDtoPhys[CAN_USED_CONTROLLER_NUM]=
{
#if (CAN_USED_CONTROLLER_NUM >= 1)
0u,
#endif
};
CONST(Can_RegInitType, CAN_CONFIG_CONST) CanRegInit[CAN_USED_CONTROLLER_NUM] =
{
#if (CAN_USED_CONTROLLER_NUM >= 1)
{
/* 波特率预分频 */
0x00000000ul,
/* 波特率设置= CAN_CLK/(BRP+1)/(TS1_Tq+TS2_Tq+1); 8M/(0+1)/(12+3+1)=500K */
/* 采样点 = (TS1_Tq+1)/(TS1_Tq+TS2_Tq+1+1); (12+1)/(12+3+1) = 81.75% */
FL_CAN_SJW_2Tq << 7 | FL_CAN_TS2_3Tq << 4 | FL_CAN_TS1_12Tq,
CAN_ICR_CRXNEMP_Msk | CAN_ICR_CBSOFF_Msk | CAN_IER_TXOKIE_Msk,
0,
/*CanInitAFMR1*/
0x700,
/*CanInitAFIR1*/
0x300,
0x700,
0x400,
0x700,
0x500,
0x700,
0x700,
},
#endif
};
CONST(Can_HardwareObjectConfigType, CAN_CONFIG_CONST)
CanHardwareObjectConfig[CAN_USED_HOH_NUM] =
{
{
/* CanObjectId0*/
0,
0,
CAN_HOH_RX_MASK|CAN_HOH_BASIC_MASK,
},
{
/* CanObjectId1*/
0,
0,
CAN_HOH_TX_MASK|CAN_HOH_BASIC_MASK,
},
{
/* CanObjectId2*/
0,
1,
CAN_HOH_TX_MASK|CAN_HOH_BASIC_MASK,
},
{
/* CanObjectId2*/
0,
2,
CAN_HOH_TX_MASK|CAN_HOH_BASIC_MASK,
},
};
CONST(Can_HwHandleType, CAN_CONFIG_CONST)
CanControllerIDtoHRH[CAN_USED_CONTROLLER_NUM] =
{
0,
};
#define CAN_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"

View File

@ -0,0 +1,122 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief AUTOSAR 4.0
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _CANIF_CFG_H_
#define _CANIF_CFG_H_
#include "Com_Cfg.h"
#define CANIF_FILTER_TYPE_INDEX (0x02u)
#define CANIF_FILTER_TYPE_LINEAR (0x03u)
#define CANIF_DISPATCH_UL_CDD (0u)
#define CANIF_DISPATCH_UL_CAN_SM (1u)
#define CANIF_DISPATCH_UL_ECUM (2u)
/*******************************************************************************
* CanIfPrivateCfg
*******************************************************************************/
/*SWS Item CANIF245_Conf :
Container Name CanIfPrivateCfg{CanInterfacePrivateConfiguration}
Description This container contains the private configuration
(parameters) of the CAN Interface.*/
/*CANIF617_Conf Selects whether the DLC check is supported.
True: Enabled False: Disabled */
#define CANIF_PRIVATE_DLC_CHECK STD_ON
/*CANIF619_Conf Selects the desired software filter mechanism for reception
only.Each implemented software filtering method is identified
by this enumeration number.
Range: Types implemented software filtering methods*/
//如果接收的hrh只有一路的話可以考虙用線性模式
#define CANIF_PRIVATE_SOFTWARE_FILTER_TYPE CANIF_FILTER_TYPE_INDEX
/*******************************************************************************
* CanIfPublicCfg
*******************************************************************************/
/*SWS Item CANIF246_Conf :
Container Name CanIfPublicCfg{CanInterfacePublicConfiguration}
Description This container contains the public configuration (parameters)
of the CAN Interface*/
/*CANIF614_Conf Enables and disables the development error detection and
notification mechanism. */
#define CANIF_PUBLIC_DEV_ERROR_DETECT STD_ON //開啟來會編不過;但是STM32,S32K等可以
#define CANIF_PUBLIC_TX_BUFFERING STD_ON
#define CANIF_PUBLIC_CANCEL_TRANSMIT_SUPPORT STD_ON
#define CANIF_PUBLIC_SETDYNAMICTXID_API STD_OFF
#define CANIF_PUBLIC_READRXPDU_DATA_API STD_OFF
#define CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API STD_OFF
#define CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API STD_OFF
#define CANIF_PUBLIC_VERSION_INFO_API STD_OFF
#define CANIF_USED_CONTROLLER_NUM (CAN_USED_CONTROLLER_NUM) //應該直接關聯 DRIVE層的 通道數量,保持一致
#define CANIF_UPPER_LAYER_HANDLE STD_ON
#define CANIF_PDU_CHANNEL_MODE_CONTROL STD_ON
#define CANIF_RX_PDU_RANGE_CANID STD_ON
#define CANIF_HRH_RANGE_FILTER STD_OFF
#define CANIF_VENDOR_ID_VALUE ((uint16)26)
#define CANIF_MODULE_ID_VALUE ((uint16)60)
#define CANIF_INSTANCE_ID_VALUE_0 ((uint8)0)
/*******************************************************************************
* CanIfDispatchCfg
*******************************************************************************/
/*SWS Item CANIF250_Conf :
Container Name CanIfDispatchCfg{CanInterfaceDispatcherConfiguration}
Description Callback functions provided by upper layer modules of the
CanIf. The callback functions defined in this container are
common to all configured CAN Driver / CAN Transceiver
Driver modules. */
/*add for OSEK NM*/
#define CANIF_SUPPORT_OSEK_NM STD_OFF //TEMP_DELETE
/*CANIF547_Conf*/
/*This parameter defines the upper layer (UL) module to which the notifications
of all ControllerBusOff events from the CAN Driver modules have to be routed via
<User_ControllerBusOff>. There is no possibility to configure no upper layer
(UL) module as the provider of <User_ControllerBusOff>.*/
#define CANIF_DISPATCH_USERCTRLBUSOFF_UL CANIF_DISPATCH_UL_CDD
/*CANIF548_Conf*/
#define CANIF_DISPATCH_USERSETWAKEUPEVENT_UL CANIF_DISPATCH_UL_CDD
#define CANIF_DISPATCH_USERCTRLBUSOFF_DEFINED_NAME /*user define*/
#define CANIF_DISPATCH_USERSETWAKEUPEVENT_DEFINED_NAME /*user define*/
#define ADPT_UDS_TX_HANDLE 4 // CanIfTxPduConfig 中的 tp发送的那个 buf index
#define NM_TX_HANDLE 3 // 和 CanIfTxPduConfig 上的buf id相一致
//#define CAN_INTERFACE_DEBUG 1
#endif /* _CANIF_CFG_H_ */

View File

@ -0,0 +1,679 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief AUTOSAR 4.0
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanIf.h"
#include "Com_Cbk.h"
#include "CanTp_Cbk.h"
#include "CanNm_Cbk.h"
/*******************************************************************************
* Macro
*******************************************************************************/
#define CANIF_CFG_TOTAL_TXPDUID (5u)
#define CANIF_CFG_TOTAL_RXPDUID (18u)
#if (STD_ON == CANIF_RX_PDU_RANGE_CANID)
#define CANIF_CFG_RANGE_CANID_RXPDUID (1u)
#endif
//如果多路can可以考虙增加數量但是没有在drive層找到相對應的宏
#define CANIF_CFG_TOTAL_HRH (1u)
/*******************************************************************************
* Global Data Define, No need to be configed
*******************************************************************************/
#define CANIF_START_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
#if (STD_ON == CANIF_PUBLIC_TX_BUFFERING)
VAR(boolean, CANIF_PRIVATE_DATA)
CanIfTxBufferPDUFillflag[CANIF_CFG_TOTAL_TXPDUID]; //每一發送的PDU 有滿的標志
VAR(uint8, CANIF_PRIVATE_DATA) CanIfTxBufferSdu[CANIF_CFG_TOTAL_TXPDUID][8];
VAR(Can_PduType, CANIF_PRIVATE_DATA)
CanIfTxBufferPdu[CANIF_CFG_TOTAL_TXPDUID];
#endif
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
VAR(Can_IdType, CANIF_PRIVATE_DATA)
CanIfTxPduCanIdForDynamic[CANIF_CFG_TOTAL_TXPDUID]; //動態分配CANID 即重置CAN ID值
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA)
CanIfTxNotifStatus[CANIF_CFG_TOTAL_TXPDUID]; //發送的指示 狀態
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
VAR(CanIf_NotifStatusType, CANIF_PRIVATE_DATA)
CanIfRxNotifStatus[CANIF_CFG_TOTAL_RXPDUID]; //接收的指示狀態
#endif
#if (STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
VAR(uint8, CANIF_PRIVATE_DATA)
CanIfRxBufferSduData[CANIF_CFG_TOTAL_RXPDUID][8];
VAR(PduLengthType, CANIF_PRIVATE_DATA)
CanIfRxBufferSduLength[CANIF_CFG_TOTAL_RXPDUID] ;
#endif
#define CANIF_STOP_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
#define CANIF_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanRxPduIds
= CANIF_CFG_TOTAL_RXPDUID; //發的PDU 最大組數
CONST(PduIdType, CANIF_CONFIG_CONST) CanIfInitNumberOfCanTxPduIds
= CANIF_CFG_TOTAL_TXPDUID; //收的PDU 最大組數
CONST(Can_HwHandleType, CANIF_CONFIG_CONST) CanIfInitNumberofHrh
= CANIF_CFG_TOTAL_HRH;
/*******************************************************************************
* Config Parameters
*******************************************************************************/
#if (STD_ON == CANIF_RX_PDU_RANGE_CANID)
CONST(CanIf_RxPduCanIdRangeType, CANIF_CONFIG_CONST)
CanIfRxPduCanIdRangeConfig[CANIF_CFG_RANGE_CANID_RXPDUID]=
{
{
0x500, /* CanIfRxPduCanIdRangeLowerCanId*/
0x57F, /* CanIfRxPduCanIdRangeLowerCanId*/
CanNm_RxIndication /* CanNm_RxIndication*/
}
};
#endif
CONST(CanIf_RxPduConfigType, CANIF_CONFIG_CONST)
CanIfRxPduConfig[CANIF_CFG_TOTAL_RXPDUID] =
{
/* 0*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfRxPduUpperLayerHandle */
#endif
0x316, /* Mpc CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/ //就是 CanHardwareObjectConfig的[0] 只收
8u,//COM_RXIPDUEMS_ENGINERPM_BUFFER_SIZE, /* CanIfRxPduDlc */ //CAN_FRAME_COM_DLC
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
1, /*CanIfRxPduNextHrh*/
#endif
},
/* 1*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
1, /* CanIfRxPduUpperLayerHandle */
#endif
0x055, /* Meter CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8u, /* CanIfRxPduDlc */ //CAN_FRAME_COM_DLC
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
2, /*CanIfRxPduNextHrh*/
#endif
},
/* 2*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
2, /* CanIfRxPduUpperLayerHandle */
#endif
0x12d, /* BCM1 CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8u, /* CanIfRxPduDlc */ // CAN_FRAME_COM_DLC
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
3, /*CanIfRxPduNextHrh*/
#endif
},
/* 3*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
3, /* CanIfRxPduUpperLayerHandle */
#endif
0x633u, // 把50D 临时改成一个非表中的项 CAN_RX_ID_BCM2 /* CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8u, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
4, /*CanIfRxPduNextHrh*/
#endif
},
/* 4*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
4, /* CanIfRxPduUpperLayerHandle */
#endif
0x49a, /* 4G_MOD CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8u, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
5, /*CanIfRxPduNextHrh*/
#endif
},
/* 5*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
5, /* CanIfRxPduUpperLayerHandle */
#endif
0x385, /* Multi_media CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8u, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
6, /*CanIfRxPduNextHrh*/
#endif
},
/* 6*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
6, /* CanIfRxPduUpperLayerHandle */
#endif
0x0a2, //0X26D /* CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
7, /*CanIfRxPduNextHrh*/
#endif
},
/* 7*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
7, /* CanIfRxPduUpperLayerHandle */
#endif
0x394, /* BCM_EVP2 CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
8, /*CanIfRxPduNextHrh*/
#endif
},
/* 8*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
8, /* CanIfRxPduUpperLayerHandle */
#endif
0x2db, /*AIR_CD_CTRL CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
9, /*CanIfRxPduNextHrh*/
#endif
},
/* 9*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
9, /* CanIfRxPduUpperLayerHandle */
#endif
0x40d, /* VCU CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
10, /*CanIfRxPduNextHrh*/
#endif
},
/* 10*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
10, /* CanIfRxPduUpperLayerHandle */
#endif
0x407, /* BCM_L CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
11, /*CanIfRxPduNextHrh*/
#endif
},
/* 11*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
11, /* CanIfRxPduUpperLayerHandle */
#endif
0x4bf, /*METER_1_DIR CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
12, /*CanIfRxPduNextHrh*/
#endif
},
/* 12*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
12, /* CanIfRxPduUpperLayerHandle */
#endif
0x4e6, /*BCM_R CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
13, /*CanIfRxPduNextHrh*/
#endif
},
/* 13*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
13, /* CanIfRxPduUpperLayerHandle */
#endif
0x4c1, /* HEAT CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
14, /*CanIfRxPduNextHrh*/
#endif
},
/* 14*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
14, /* CanIfRxPduUpperLayerHandle */
#endif
0x29c, /* ADAS CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
Com_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
15, /*CanIfRxPduNextHrh*/
#endif
},
/* 15*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfRxPduUpperLayerHandle */
#endif
0x50D, /* CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
NULL_PTR, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
(&(CanIfRxPduCanIdRangeConfig [0])), /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
16, /*CanIfRxPduNextHrh*/
#endif
},
/* 16*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfRxPduUpperLayerHandle */
#endif
0x711, //0X18DADFF1 /* CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
CanTp_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
17, /*CanIfRxPduNextHrh*/
#endif
},
/* 17*/ /* CanIfRxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
1, /* CanIfRxPduUpperLayerHandle */
#endif
0x7df, //0X18DB33F1 /* CanId*/
STANDARD_CAN, /* CanIdType */
0, /*CanIfRxPduHrhIdRef*/
8, /* CanIfRxPduDlc */
CanTp_RxIndication, /* CanIfRxPduUserRxIndicationName */
#if(STD_ON == CANIF_PUBLIC_READRXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfRxPduReadNotifyStatus */
#endif
#if(STD_ON == CANIF_PUBLIC_READRXPDU_DATA_API)
FALSE, /* CanIfRxPduReadData */
#endif
#if(STD_ON == CANIF_RX_PDU_RANGE_CANID)
NULL_PTR, /* CanIfRxPduRangePtr */
#endif
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE)
CANIF_LAST_HRH_RXPDUID, /*CanIfRxPduNextHrh*/
#endif
}
};
#if(CANIF_FILTER_TYPE_INDEX == CANIF_PRIVATE_SOFTWARE_FILTER_TYPE) //默認是 這配置宏
CONST(Can_HwHandleType, CANIF_CONFIG_CONST)
CanIfHrhFirstRxPduID[CANIF_CFG_TOTAL_HRH] =
{
/* HRH-0 */
0,
};
#endif
#if(STD_ON == CANIF_HRH_RANGE_FILTER) //默認宏 關閉
CONST(CanIf_HrhRangeCfgType, CANIF_CONFIG_CONST)
CanIfHrhRangeCfg[CANIF_CFG_TOTAL_HRH] =
{
/*HRH-0*/
{
0x85, /*CanIfHrhRangeRxPduLowerCanId*/
0x7df, /*CanIfHrhRangeRxPduUpperCanId */
STANDARD_CAN /* CanIfHrhRangeRxPduRangeCanIdType */
},
};
#endif
CONST(CanIf_TxPduConfigType, CANIF_CONFIG_CONST)
CanIfTxPduConfig[CANIF_CFG_TOTAL_TXPDUID] =
{
/*0*/ /* CanIfTxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfTxPduUpperLayerHandle*/
#endif
0x4a8, // /* CanId*/
STANDARD_CAN, /* CanIdType */
1, /* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
8u, /* CanIfTxPduDLC */ //CAN_FRAME_COM_DLC
Com_TxConfirmation, /* CanIfRxPduUserRxIndicationName */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
STATIC_TXPDU, /* CanIfTxPduType */
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfTxPduReadNotifyStatus */
#endif
},
/*1*/ /* CanIfTxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
1, /* CanIfTxPduUpperLayerHandle*/
#endif
0x3b0, // /* CanId*/
STANDARD_CAN, /* CanIdType */
1, /* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig 的 buf id */
8u, /* CanIfTxPduDLC */ //COM_TX_MSG_2_MAX_LEN 如果這裡超過,最大長度,會只發當前長度
Com_TxConfirmation, /* CanIfRxPduUserRxIndicationName */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
STATIC_TXPDU, /* CanIfTxPduType */
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfTxPduReadNotifyStatus */
#endif
},
/*2*/ /* CanIfTxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
2, /* CanIfTxPduUpperLayerHandle*/
#endif
0x429, //157 /* CanId*/
STANDARD_CAN, /* CanIdType */
1, /* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
8, /* CanIfTxPduDLC */
Com_TxConfirmation, /* CanIfRxPduUserRxIndicationName */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
STATIC_TXPDU, /* CanIfTxPduType */
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfTxPduReadNotifyStatus */
#endif
},
/*3*/ /* CanIfTxPduId*/
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfTxPduUpperLayerHandle*/
#endif
0x532, /* CanId*/
STANDARD_CAN, /* CanIdType */
1, /* CanIfTxPduHthIdRef */
8, /* CanIfTxPduDLC */
CanNm_TxConfirmation, /* CanIfRxPduUserRxIndicationName */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
STATIC_TXPDU, /* CanIfTxPduType */
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfTxPduReadNotifyStatus */
#endif
},
/*4*/ /* CanIfTxPduId*/ //注意这个buf Index 就是 ADPT_UDS_TX_HANDLE ,并且要修改 CanTp_TxNsduCfg 中的第二个参数
{
#if (STD_ON == CANIF_UPPER_LAYER_HANDLE)
0, /* CanIfTxPduUpperLayerHandle*/
#endif
0x719, /* CanId*/
STANDARD_CAN, /* CanIdType */
1, /* CanIfTxPduHthIdRef 指的就是 CanHardwareObjectConfig的 buf id */
8, /* CanIfTxPduDLC */
CanTp_TxConfirmation, /* CanIfRxPduUserRxIndicationName */
#if (STD_ON == CANIF_PUBLIC_SETDYNAMICTXID_API)
STATIC_TXPDU, /* CanIfTxPduType */
#endif
#if(STD_ON == CANIF_PUBLIC_READTXPDU_NOTIFY_STATUS_API)
FALSE, /* CanIfTxPduReadNotifyStatus */
#endif
},
};
#define CANIF_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"

View File

@ -0,0 +1,76 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#if !defined(CANTP_CFG_H)
#define CANTP_CFG_H
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanIf.h"
#include "PduR_CanTp.h"
#define CANTP_VERSION_INFO_API STD_OFF
#define CANTP_DEV_ERROR_DETECT STD_OFF
#define CANTP_PROD_ERROR_DETECT STD_ON
#define CANTP_TC STD_ON
#define CANTP_MAIN_FUNCTION_PERIOD 5u
#define CANTP_FILLPATTERN 0xAAu //沒有用到的值 填充成
#define CANTP_CHANNELS 1u //好像表示的是, 發和收 各一個通道為了mainfunction --可能就是物理通道相關的邏輯通道:
#define CANTP_NUM_RX_SDUS 2u //接收有兩 SDUS ,分別是功能和物理尋址
#define CANTP_NUM_TX_SDUS 1u //TX ,响應
#define CANTP_NUM_RX_CHANNELS CANTP_CHANNELS //CANTP模塊 用於接收N-SDU的通道數 為什麼是1 可不可以理解成/*CanIfRxPduHrhIdRef*/ //就是 CanHardwareObjectConfig的[0] 只收
#define CANTP_NUM_TX_CHANNELS CANTP_CHANNELS //CANTP模塊 用於發送N-SDU的通道數 為什麼是1
#define CanTp_CanInterruptDisable() Can_DisableGlobalInterrupts()
#define CanTp_CanInterruptRestore() Can_EnableGlobalInterrupts()
#define CanTp_CanTransmit(txSduIdx,pduInfo) CanIf_Transmit(txSduIdx,pduInfo)
#define CanTp_CanCancelTransmit(txSduIdx) CanIf_CancelTransmit(txSduIdx)
//以下幾個函數,相當於 調dcm的接口
#define CanTp_NUSDataIndication(rxSduIdx,canTpErrorCode) {PduR_CanTpRxIndication(rxSduIdx,canTpErrorCode);CanTp_ChannelInit(CANTP_RXTPCHANNEL_ID(rxSduIdx));}
#define CanTp_NUSDataConfirm(txSduIdx,canTpErrorCode) PduR_CanTpTxConfirmation(txSduIdx,canTpErrorCode)
#define CanTp_NUSDataFFIndication(rxSduIdx,length,bufferSizePtr) PduR_CanTpStartOfReception(rxSduIdx,length,bufferSizePtr)
#define CanTp_NUSDataSFIndication(rxSduIdx,length,bufferSizePtr) PduR_CanTpStartOfReception(rxSduIdx,length,bufferSizePtr)
#define CanTp_CopyRxData(rxSduIdx,pduInfo,bufferSizePtr) PduR_CanTpCopyRxData(rxSduIdx,pduInfo,bufferSizePtr)
#define CanTp_CopyTxData(txSduIdx,pduInfo,NULL_PTR,bufferSizePtr) PduR_CanTpCopyTxData(txSduIdx,pduInfo,NULL_PTR,bufferSizePtr)
/***************測試用的****************************/
//#define CAN_TP_DEBUG 1 //DEBUG 測試相關
//#define CAN_TP_IN_TEST 1 //TP層內部測試用
#endif /* CANTP_CFG_H */

View File

@ -0,0 +1,114 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "CanTp.h"
#include "CanTp_Cfg.h"
#include "boot_app.h"
const CanTp_RxNsduCfgType CanTp_RxNsduCfg[];
const CanTp_TxNsduCfgType CanTp_TxNsduCfg[];
const CanTpChannelModeType CanTpChannelMode[CANTP_CHANNELS];
const CanTp_CfgType CanTp_Cfg =
{
CanTp_RxNsduCfg /* Pointer to RxNsdu-cfg-table */,
CanTp_TxNsduCfg /* Pointer to TxNsdu-cfg-table */,
CanTpChannelMode /* Extended SDU indirection table */,
};
const CanTp_RxNsduCfgType CanTp_RxNsduCfg[CANTP_NUM_RX_SDUS] =
{
{
0 /*Tp Channel Num 是通道id的順序*/, //目前TP才一個channel --目前自身tp層而言
0 /* CANTP_RXNPDU_ID; from CanIf */, // CanIfRxPduConfig 中的 CanIfRxPduUpperLayerHandle /* CanIfRxPduUpperLayerHandle ----TP層的PDU排序*/
ADPT_UDS_TX_HANDLE /* CANTP_TXFC_NPDU_ID; to CanIf */, //要發送响應 的lf層的 pdu id 就是 CanIfTxPduConfig 中的bufid。幸亏没有改
1u /* CANTP_DL */, //應該是最小要接收的長度
150 /* CANTP_NAR */, //接收方數據幀經數據鏈路層發送的時間; 單位是maintpfunction的調用周期
10 /* CANTP_NBR */, //接收方發送流控制幀的間隔时間 單位是maintpfunction的調用周期
150 /* CANTP_NCR */, //接收方接收連續幀的等待時間單位是maintpfunction的調用周期
CANTP_ON /* CANTP_PADDING_ACTIVATION */, //相當於 是否激活
CANTP_PHYSICAL /* CANTP_TA_TYPE */, //物理尋址
CANTP_STANDARD /* CANTP_ADDRESSING_FORMAT */, //CAN 地址 用標準地址
0 /* CANTP_BS */, //流控幀的允許一次連續發送的CF的數量 如果是0表示再無流控制幀即無限制
10 /* CANTP_STMIN */, //流控幀的最小間隔時間10表示10ms
1 /* CANTP_WFTMAX */, //接收方最多連續發送多少個等待FC幀個數
CANTP_UNUSED /* CANTP_RX_NAE */, //混合尋址模式時的擴展地址
CANTP_UNUSED /* CANTP_RX_NSA */, //混合尋址模式時的源地址
CANTP_UNUSED /* CANTP_RX_NTA */, //混合尋址模式時的目標地址
},
{
0 /*Tp Channel Num 是通道id的順序*/, //目前TP才一個channel --目前自身tp層而言
1 /* CANTP_RXNPDU_ID; from CanIf */, // CanIfRxPduConfig 中的 CanIfRxPduUpperLayerHandle /* CanIfRxPduUpperLayerHandle ----TP層的PDU排序*/
ADPT_UDS_TX_HANDLE /* CANTP_TXFC_NPDU_ID; to CanIf */, //要發送响應 的lf層的 pdu id 就是 CanIfTxPduConfig 中的bufid。幸亏没有改
1u /* CANTP_DL */, //應該是最小要的接收長度
150 /* CANTP_NAR */, //接收方數據幀經數據鏈路層發送的時間; 單位是maintpfunction的調用周期
10 /* CANTP_NBR */,
150 /* CANTP_NCR */,
CANTP_ON /* CANTP_PADDING_ACTIVATION */,
CANTP_FUNCTIONAL /* CANTP_TA_TYPE */, //功能尋址
CANTP_STANDARD /* CANTP_ADDRESSING_FORMAT */, //CAN 地址 用標準地址
0 /* CANTP_BS */, //流控幀的允許一次連續發送的CF的數量 //流控幀的允許一次連續發送的CF的數量 如果是0表示再無流控制幀即無限制
10 /* CANTP_STMIN */, //流控幀的最小間隔時間10表示10ms
1 /* CANTP_WFTMAX */, //接收方最多連續發送多少個等待FC幀個數
CANTP_UNUSED /* CANTP_RX_NAE */, //混合尋址模式時的擴展地址
CANTP_UNUSED /* CANTP_RX_NSA */, //混合尋址模式時的源地址
CANTP_UNUSED /* CANTP_RX_NTA */, //混合尋址模式時的目標地址
}
};
const CanTp_TxNsduCfgType CanTp_TxNsduCfg[CANTP_NUM_TX_SDUS] =
{
{
0 /*Tp Channel Num 是通道id的順序--自身tp層而言*/,
ADPT_UDS_TX_HANDLE /* CANTP_TXNPDU_ID; to CanIf 應該是 CanIfTxPduConfig 中的 buf id*/, //要發送 的lf層的 pdu id 就是 CanIfTxPduConfig 中的bufid。幸亏没有改 就是 CanIf_Transmit的 第一個參數
0 /* CANTP_RXFC_NPDU_ID; from CanIf */, //為什麼是750 不是7df
1 /* CANTP_DL */, //最小要發送的長度
150 /* CANTP_NAS */, ////發送方數據幀經數據璉路層發送的時間
150 /* CANTP_NBS */, //發送方接收流控制幀的等待時間
10 /* CANTP_NCS */, //發送方發送連續幀的間隔時間
CANTP_ON /* CANTP_PADDING_ACTIVATION */,
CANTP_PHYSICAL /* CANTP_TA_TYPE ---發送類型 分功能和類型 */,
CANTP_STANDARD /* CANTP_ADDRESSING_FORMAT --標準,擴展,混合*/,
CANTP_UNUSED /* CANTP_RX_NAE */,
CANTP_UNUSED /* CANTP_TX_NSA */,
CANTP_UNUSED /* CANTP_TX_NTA */,
}
};
const CanTpChannelModeType CanTpChannelMode[CANTP_CHANNELS]=
{
{
CANTP_MODE_HALF_DUPLEX
},
};

View File

@ -0,0 +1,269 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Com.h"
#if(STD_ON == CANIF_SUPPORT_OSEK_NM)
#include "Ls_Nm.h"
#endif
#include "Dem.h"
#include "fault_detect.h"
#include "can_app.h"
/*****************************************************************************
* Include Files
*****************************************************************************/
#include "common_types.h"
#include "common_memory.h"
#include "Can.h"
#include "CanIf.h"
#include "Com.h"
#include "CanTrcv.h"
#include "Dcm.h"
#include "CanTp.h"
//#include "common_timer.h"
#include "key_app.h"
#include "gpio_cfg.h"
#include "common_memory.h"
//#include "OsekNm.h"
#include "Com_Cfg.h"
#include "crc.h"
#include "cpu.h"
/*PRQA S 1503,2987++*/
//發送前置 可以添加功能安全相關處理
void Com_TxIpduCallout(PduIdType PduId)
{
}
//接收前置 可以添加功能安全相關處理
void Com_RxIpduCallout(PduIdType PduId)
{
}
/**********以下是發送相關的*************************/
//
/*發送確認--SWS R 4A8*/
void AppIpduSteering_RIGHT_switch_4A8_Conf(void)
{
app_sig_sws_r_multimedia_tx_conf();
app_sig_sws_r_left_menu_tx_conf();
app_sig_sws_r_voicd_expand_2_tx_conf();
app_sig_sws_r_auto_show_in_tx_conf();
app_sig_sws_r_auto_show_out_tx_conf();
app_sig_sws_r_mileage_clear_tx_conf();
AppCan_EventSig_SWS_R_MediaReset_TxConf();
AppCan_EventSig_SWS_R_OtherRecover_TxConf();
}
/*發送超時--SWS R 4A8*/
void AppIpduSteering_RIGHT_switch_4A8_TxTOIndication(void)
{
uint8_t i;
for(i = 0; i < 8; i ++)
{
TxIpduSteering_RIGHT_switch_4A8._c[i] = TxIpduSteering_RIGHT_switch_4A8DefualtValue._c[i];
}
}
/*發送確認--SWS L 3B0*/
void AppIpduSteering_LEFT_switch_3B0_Conf(void)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_rolling_count ++;
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
/*發送超時--SWS L 3B0*/
void AppIpduSteering_LEFT_switch_3B0_TxTOIndication(void)
{
uint8_t i;
for(i = 0; i < 8; i ++)
{
TxIpduSteering_LEFT_switch_3B0._c[i] = TxIpduSteering_LEFT_switch_3B0DefualtValue._c[i];
}
}
/*發送確認--SWS C 429*/
void AppIpduSteering_customization_switch_429_Conf(void)
{
}
/*發送超時--SWS C 429*/
void AppIpduSteering_customization_switch_429_TxTOIndication(void)
{
uint8_t i;
for(i = 0; i < 8; i ++)
{
TxIpduSteering_customization_switch_429._c[i] = TxIpduSteering_customization_switch_429DefualtValue._c[i];
}
}
/**********以下是接收相關的*************************/
void AppIpduMPC_316_Ind(void)
{
app_mpc_316_rx_conf();
}
void AppIpduMETER_055_Ind(void)
{
app_meter_055_rx_conf();
}
void AppIpduBCM_1_12D_Ind(void)
{
app_bcm_1_12d_rx_conf();
}
void AppIpduBCM_2_50D_Ind(void)
{
app_bcm_2_50d_rx_conf();
}
void AppIpduMOD_4G_49A_Ind(void)
{
app_mod_4g_49a_rx_conf();
}
void AppIpduMultimedia_385_Ind(void)
{
app_multimedia_385_rx_conf();
}
void AppIpduCloud_services_0A2_Ind(void)
{
app_cloud_services_0a2_rx_conf();
}
void AppIpduBCM_EvP2_394_Ind(void)
{
app_bcm_evp2_394_rx_conf();
}
void AppIpduAir_condition_ctrl_2DB_Ind(void)
{
app_air_condition_ctrl_2db_rx_conf();
}
void AppIpduVCU_40D_Ind(void)
{
app_vcu_40d_rx_conf();
}
void AppIpduBCM_L_407_Ind(void)
{
app_bcm_l_407_rx_conf();
}
void AppIpduMETER_1_dir_4BF_Ind(void)
{
app_meter_1_dir_4bf_rx_conf();
}
void AppIpduBCM_R_4E6_Ind(void)
{
app_bcm_r_4e6_rx_conf();
}
void AppIpduHEAT_4C1_Ind(void)
{
app_bcm_heat_4c1_rx_conf();
}
void AppIpduAds_29C_Ind(void)
{
app_ads_29c_rx_conf();
}
void AppIpduMPC_316_TimeOutInd(void)
{
app_mpc_316_to_conf();
}
void AppIpduMETER_055_TimeOutInd(void)
{
app_meter_055_to_conf();
}
void AppIpduBCM_1_12D_TimeOutInd(void)
{
app_bcm_1_12d_to_conf();
}
void AppIpduBCM_2_50D_TimeOutInd(void)
{
app_bcm_2_50d_to_conf();
}
void AppIpduMOD_4G_49A_TimeOutInd(void)
{
app_mod_4g_49a_to_conf();
}
void AppIpduMultimedia_385_TimeOutInd(void)
{
app_multimedia_385_to_conf();
}
void AppIpduCloud_services_0A2_TimeOutInd(void)
{
app_cloud_services_0a2_to_conf();
}
void AppIpduBCM_EvP2_394_TimeOutInd(void)
{
app_bcm_evp2_394_to_conf();
}
void AppIpduAir_condition_ctrl_2DB_TimeOutInd(void)
{
app_air_condition_ctrl_2db_to_conf();
}
void AppIpduVCU_40D_TimeOutInd(void)
{
app_vcu_40d_to_conf();
}
void AppIpduBCM_L_407_TimeOutInd(void)
{
app_bcm_l_407_to_conf();
}
void AppIpduMETER_1_dir_4BF_TimeOutInd(void)
{
app_meter_1_dir_4bf_to_conf();
}
void AppIpduBCM_R_4E6_TimeOutInd(void)
{
app_bcm_r_4e6_to_conf();
}
void AppIpduHEAT_4C1_TimeOutInd(void)
{
app_bcm_heat_4c1_to_conf();
}
void AppIpduADS_29C_TimeOutInd(void)
{
app_ads_29c_to_conf();
}

View File

@ -0,0 +1,680 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#include "Com.h"
#if(COM_TXIPDUNUM>=1)
IpduSteering_RIGHT_switch_4A8_bufType TxIpduSteering_RIGHT_switch_4A8;
IpduSteering_LEFT_switch_3B0_bufType TxIpduSteering_LEFT_switch_3B0;
IpduSteering_customization_switch_429_bufType TxIpduSteering_customization_switch_429;
COM_CONST IpduSteering_RIGHT_switch_4A8_bufType TxIpduSteering_RIGHT_switch_4A8DefualtValue=
{
{
0x01u,0x00u,0x00u,0x00u,0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u, 0x00u,0x00u,
}
};
COM_CONST IpduSteering_LEFT_switch_3B0_bufType TxIpduSteering_LEFT_switch_3B0DefualtValue=
{
{
0x04u,0x00u,0x00u,0x00u,0x00u, 0x01u,0x00u,0x00u,0x00u,0x00u, 0x00u, 0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduSteering_customization_switch_429_bufType TxIpduSteering_customization_switch_429DefualtValue=
{
{
0x00u,0x00u,0x00u,0x01u,0x00u, 0x00u,0x00u,0x03u,0x00u,0x00u,0x00u, 0x00u,0x02u
}
};
COM_CONST PduInfoType COM_TxDataInitInfo[COM_TXIPDUNUM] =
{
{TxIpduSteering_RIGHT_switch_4A8._c,8u},
{TxIpduSteering_LEFT_switch_3B0._c,8u},
{TxIpduSteering_customization_switch_429._c,8u}
};
COM_CONST COM_UINT8 COM_TxIpduSigNum[COM_TXIPDUNUM] =
{
14u,
16u,
8u,
};
COM_CONST COM_TxSigStruct COM_TxSigTable[COM_TXSIGNUM] =
{
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 0,COM_SENDTYPEONEVENT | COM_SENDTYPEREPETITION,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 1,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
{ 2,COM_SENDTYPECYCLIC,(Com_SigInActiveType*)0},
};
COM_CONST COM_UINT8* COM_TxIpduDefaultValue[COM_TXIPDUNUM] =
{
TxIpduSteering_RIGHT_switch_4A8DefualtValue._c,
TxIpduSteering_LEFT_switch_3B0DefualtValue._c,
TxIpduSteering_customization_switch_429DefualtValue._c
};
COM_CONST COM_UINT8 COM_IpduTxTypeTable[COM_TXIPDUNUM] =
{
(COM_SENDTYPEONEVENT | COM_SENDTYPETIMEOUTMONITOR),
(COM_SENDTYPECYCLIC | COM_SENDTYPETIMEOUTMONITOR) ,
(COM_SENDTYPECYCLIC | COM_SENDTYPETIMEOUTMONITOR)
};
COM_CONST COM_UINT16 COM_IdpuTxCycCntTable[COM_TXIPDUNUM] =
{
100u,
50u,
1000u,
};
COM_CONST COM_UINT16 COM_IdpuTxFastCycleTable[COM_TXIPDUNUM] =
{
0u,
0u,
0u
};
COM_CONST COM_UINT16 COM_TxIpduOffsetInTxSigTable[COM_TXIPDUNUM] =
{
0u,
14u,
30u
};
COM_CONST COM_UINT16 COM_IpduTxDelayCntTable[COM_TXIPDUNUM] =
{
0u,
0u,
0u
};
COM_CONST COM_UINT16 COM_IpduRepetitionTxCycCntTable[COM_TXIPDUNUM] =
{
100u,
0u,
0u
};
COM_UINT8 COM_IpduRepetitionTxNumTable[COM_TXIPDUNUM] =
{
1u,
1u,
1u
};
COM_CONST COM_UINT16 COM_IpduTxTimeOutCntTable[COM_TXIPDUNUM] =
{
5000u,
250u,
5000u
};
COM_CONST COM_UINT16 COM_IpduTxOffsetTimerTable[COM_TXIPDUNUM] =
{
0u,
0u,
0u
};
#ifdef COM_ENABLE_TX_TO_INDFUN
COM_CONST COM_TxTimeOutFun COM_IpduTxTimeOutFunPtr[COM_TXIPDUNUM] =
{
AppIpduSteering_RIGHT_switch_4A8_TxTOIndication,
AppIpduSteering_LEFT_switch_3B0_TxTOIndication,
AppIpduSteering_customization_switch_429_TxTOIndication
};
#endif
#ifdef COM_ENABLE_TX_CONFIRMATIONFUN
COM_CONST COM_TxConfirmationFun COM_IpduTxConfirmFunPtr[COM_TXIPDUNUM] =
{
AppIpduSteering_RIGHT_switch_4A8_Conf,
AppIpduSteering_LEFT_switch_3B0_Conf,
AppIpduSteering_customization_switch_429_Conf
};
#endif
COM_CONST COM_UINT16 COM_UnderlyHandle[COM_TXIPDUNUM]=
{
0u,
1u,
2u
};
#endif /*#if(COM_TXIPDUNUM>=1)*/
#if(COM_RXIPDUNUM>=1)
IpduMPC_316_bufType RxIpduMPC_316;
IpduMETER_055_bufType RxIpduMETER_055;
IpduBCM_1_12D_bufType RxIpduBCM_1_12D;
IpduBCM_2_50D_bufType RxIpduBCM_2_50D;
IpduMOD_4G_49A_bufType RxIpduMOD_4G_49A;
IpduMultimedia_385_bufType RxIpduMultimedia_385;
IpduCloud_services_0A2_bufType RxIpdCloud_services_0A2;
IpduBCM_EvP2_394_bufType RxIpduBCM_EvP2_394;
IpduAir_condition_ctrl_2DB_bufType RxIpduAir_condition_ctrl_2DB;
IpduVCU_40D_bufType RxIpduVCU_40D;
IpduBCM_L_407_bufType RxIpduBCM_L_407;
IpduMETER_1_dir_4BF_bufType RxIpduMETER_1_dir_4BF;
IpduBCM_R_4E6_bufType RxIpduBCM_R_4E6;
IpduHEAT_4C1_bufType RxIpduHEAT_4C1;
IpduADS_29C_bufType RxIpduADS_29C;
COM_CONST IpduMPC_316_bufType RxIpduMPC_316DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMETER_055_bufType RxIpduMETER_055DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduBCM_1_12D_bufType RxIpduBCM_1_12DDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x01u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_2_50D_bufType RxIpduBCM_2_50DDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMOD_4G_49A_bufType RxIpduMOD_4G_49ADefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMultimedia_385_bufType RxIpduMultimedia_385DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduCloud_services_0A2_bufType RxIpdCloud_services_0A2DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduBCM_EvP2_394_bufType RxIpduBCM_EvP2_394DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduAir_condition_ctrl_2DB_bufType RxIpduAir_condition_ctrl_2DBDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduVCU_40D_bufType RxIpduVCU_40DDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_L_407_bufType RxIpduBCM_L_407DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMETER_1_dir_4BF_bufType RxIpduMETER_1_dir_4BFDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_R_4E6_bufType RxIpduBCM_R_4E6DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduHEAT_4C1_bufType RxIpduHEAT_4C1DefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduADS_29C_bufType RxIpduADS_29CDefualtValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
#ifdef COM_ENABLE_RX_TIMEOUTVAULE
COM_CONST IpduMPC_316_bufType RxIpduMPC_316TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMETER_055_bufType RxIpduMETER_055TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduBCM_1_12D_bufType RxIpduBCM_1_12DTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_2_50D_bufType RxIpduBCM_2_50DTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMOD_4G_49A_bufType RxIpduMOD_4G_49ATimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMultimedia_385_bufType RxIpduMultimedia_385TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduCloud_services_0A2_bufType RxIpdCloud_services_0A2TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduBCM_EvP2_394_bufType RxIpduBCM_EvP2_394TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,
}
};
COM_CONST IpduAir_condition_ctrl_2DB_bufType RxIpduAir_condition_ctrl_2DBTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduVCU_40D_bufType RxIpduVCU_40DTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_L_407_bufType RxIpduBCM_L_407TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduMETER_1_dir_4BF_bufType RxIpduMETER_1_dir_4BFTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduBCM_R_4E6_bufType RxIpduBCM_R_4E6TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduHEAT_4C1_bufType RxIpduHEAT_4C1TimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
COM_CONST IpduADS_29C_bufType RxIpduADS_29CTimeoutValue=
{
{
0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u,0x00u
}
};
#endif
COM_CONST PduInfoType COM_RxDataInitInfo[COM_RXIPDUNUM] =
{
{RxIpduMPC_316._c,8u},
{RxIpduMETER_055._c,8u},
{RxIpduBCM_1_12D._c,8u},
{RxIpduBCM_2_50D._c,8u},
{RxIpduMOD_4G_49A._c,8u},
{RxIpduMultimedia_385._c,8u},
{RxIpdCloud_services_0A2._c,8u},
{RxIpduBCM_EvP2_394._c,8u},
{RxIpduAir_condition_ctrl_2DB._c,8u},
{RxIpduVCU_40D._c,8u},
{RxIpduBCM_L_407._c,8u},
{RxIpduMETER_1_dir_4BF._c,8u},
{RxIpduBCM_R_4E6._c,8u},
{RxIpduHEAT_4C1._c,8u},
{RxIpduADS_29C._c,8u}
};
COM_CONST COM_UINT8* COM_RxIpduDefaultValue[COM_RXIPDUNUM] =
{
RxIpduMPC_316DefualtValue._c,
RxIpduMETER_055DefualtValue._c,
RxIpduBCM_1_12DDefualtValue._c,
RxIpduBCM_2_50DDefualtValue._c,
RxIpduMOD_4G_49ADefualtValue._c,
RxIpduMultimedia_385DefualtValue._c,
RxIpdCloud_services_0A2DefualtValue._c,
RxIpduBCM_EvP2_394DefualtValue._c,
RxIpduAir_condition_ctrl_2DBDefualtValue._c,
RxIpduVCU_40DDefualtValue._c,
RxIpduBCM_L_407DefualtValue._c,
RxIpduMETER_1_dir_4BFDefualtValue._c,
RxIpduBCM_R_4E6DefualtValue._c,
RxIpduHEAT_4C1DefualtValue._c,
RxIpduADS_29CDefualtValue._c
};
#ifdef COM_ENABLE_RX_TIMEOUTVAULE
COM_CONST COM_UINT8* COM_IpduRxTimeoutValue[COM_RXIPDUNUM] =
{
RxIpduMPC_316TimeoutValue._c,
RxIpduMETER_055TimeoutValue._c,
RxIpduBCM_1_12DTimeoutValue._c,
RxIpduBCM_2_50DTimeoutValue._c,
RxIpduMOD_4G_49ATimeoutValue._c,
RxIpduMultimedia_385TimeoutValue._c,
RxIpdCloud_services_0A2TimeoutValue._c,
RxIpduBCM_EvP2_394TimeoutValue._c,
RxIpduAir_condition_ctrl_2DBTimeoutValue._c,
RxIpduVCU_40DTimeoutValue._c,
RxIpduBCM_L_407TimeoutValue._c,
RxIpduMETER_1_dir_4BFTimeoutValue._c,
RxIpduBCM_R_4E6TimeoutValue._c,
RxIpduHEAT_4C1TimeoutValue._c,
RxIpduADS_29CTimeoutValue._c
};
#endif
COM_CONST ComTpBufferSize COM_TpRxIpduBufferSize[COM_RXIPDUNUM]=
{
COM_RXIPDUMPC_316_BUFFER_SIZE,
COM_RXIPDUMETER_055_BUFFER_SIZE,
COM_RXIPDUBCM_1_12D_BUFFER_SIZE,
COM_RXIPDUBCM_2_50D_BUFFER_SIZE,
COM_RXIPDUMOD_4G_49A_BUFFER_SIZE,
COM_RXIPDUMULTIMEDIA_385_BUFFER_SIZE,
COM_RXIPDUCLOUD_SERVICES_0A2_BUFFER_SIZE,
COM_RXIPDUBCM_EVP2_394_BUFFER_SIZE,
COM_RXIPDUAIR_CONDITION_CTRL_2DB_BUFFER_SIZE,
COM_RXIPDUVCU_40D_BUFFER_SIZE,
COM_RXIPDUBCM_L_407_BUFFER_SIZE,
COM_RXIPDUMETER_1_DIR_4BF_BUFFER_SIZE,
COM_RXIPDUBCM_R_4E6_BUFFER_SIZE,
COM_RXIPDUHEAT_4C1_BUFFER_SIZE,
COM_RXIPDUADS_29C_BUFFER_SIZE
};
COM_CONST COM_UINT8 COM_RxIpduSigNum[COM_RXIPDUNUM] =
{
3,
1,
3,
1,
5,
1,
2,
1,
1,
1,
1,
2,
1,
3,
3,
};
COM_CONST COM_RxSigStruct COM_RxSigTable[COM_RXSIGNUM] =
{
{0,0u},
{0,0u},
{0,0u},
{1,0u},
{2,0u},
{2,0u},
{2,0u},
{3,0u},
{4,0u},
{4,0u},
{4,0u},
{4,0u},
{4,0u},
{5,0u},
{6,0u},
{6,0u},
{7,0u},
{8,0u},
{9,0u},
{10,0u},
{11,0u},
{11,0u},
{12,0u},
{13,0u},
{13,0u},
{13,0u},
{14,0u},
{14,0u},
{14,0u},
};
COM_CONST COM_UINT16 COM_RxIpduOffsetInRxSigTable[COM_RXIPDUNUM] =
{
0,
3,
4,
7,
8,
13,
14,
16,
17,
18,
19,
20,
22,
23,
26,
};
COM_CONST COM_IpduRxTimeOut_Struct COM_IpduRxTOTimerTable[COM_RXIPDUNUM] =
{
{0,COM_RXTIMEOUTMONITOR_YES,5000u},
{1,COM_RXTIMEOUTMONITOR_YES,5000u},
{2,COM_RXTIMEOUTMONITOR_YES,5000u},
{3,COM_RXTIMEOUTMONITOR_YES,500u},
{4,COM_RXTIMEOUTMONITOR_YES,5000u},
{5,COM_RXTIMEOUTMONITOR_YES,500u},
{6,COM_RXTIMEOUTMONITOR_YES,500u},
{7,COM_RXTIMEOUTMONITOR_YES,5000u},
{8,COM_RXTIMEOUTMONITOR_YES,5000u},
{9,COM_RXTIMEOUTMONITOR_YES,5000u},
{10,COM_RXTIMEOUTMONITOR_YES,5000u},
{11,COM_RXTIMEOUTMONITOR_YES,5000u},
{12,COM_RXTIMEOUTMONITOR_YES,5000u},
{13,COM_RXTIMEOUTMONITOR_YES,5000u},
{14,COM_RXTIMEOUTMONITOR_YES,5000u}
};
#ifdef COM_ENABLE_RX_INDICATIONFUN
COM_CONST COM_RxIndicationFun COM_IpduRxIndicationFunPtr[COM_RXIPDUNUM] =
{
AppIpduMPC_316_Ind,
AppIpduMETER_055_Ind,
AppIpduBCM_1_12D_Ind,
AppIpduBCM_2_50D_Ind,
AppIpduMOD_4G_49A_Ind,
AppIpduMultimedia_385_Ind,
AppIpduCloud_services_0A2_Ind,
AppIpduBCM_EvP2_394_Ind,
AppIpduAir_condition_ctrl_2DB_Ind,
AppIpduVCU_40D_Ind,
AppIpduBCM_L_407_Ind,
AppIpduMETER_1_dir_4BF_Ind,
AppIpduBCM_R_4E6_Ind,
AppIpduHEAT_4C1_Ind,
AppIpduAds_29C_Ind
};
#endif
#ifdef COM_ENABLE_RX_TIMEOUTINDICATIONFUN
COM_CONST COM_TimeoutIndicationFun COM_IpduRxTimeoutFunPtr[COM_RXIPDUNUM] =
{
AppIpduMPC_316_TimeOutInd,
AppIpduMETER_055_TimeOutInd,
AppIpduBCM_1_12D_TimeOutInd,
AppIpduBCM_2_50D_TimeOutInd,
AppIpduMOD_4G_49A_TimeOutInd,
AppIpduMultimedia_385_TimeOutInd,
AppIpduCloud_services_0A2_TimeOutInd,
AppIpduBCM_EvP2_394_TimeOutInd,
AppIpduAir_condition_ctrl_2DB_TimeOutInd,
AppIpduVCU_40D_TimeOutInd,
AppIpduBCM_L_407_TimeOutInd,
AppIpduMETER_1_dir_4BF_TimeOutInd,
AppIpduBCM_R_4E6_TimeOutInd,
AppIpduHEAT_4C1_TimeOutInd,
AppIpduADS_29C_TimeOutInd
};
#endif
#endif /*#if(COM_RXIPDUNUM>=1)*/
#ifdef COM_ENABLE_ROUTESIGNAL
#if((COM_TXIPDUNUM>=1) && (COM_RXIPDUNUM>=1) && (COM_GWIPDUNUM>=1) && (COM_GWSIGNUM>=1))
COM_CONST COM_SignalGatewayInfoType COM_SignalGatewayInfo[COM_GWSIGNUM]=
{
};
COM_CONST COM_SignalGatewayIpduInfoType COM_SignalGatewayIpduInfo[COM_GWIPDUNUM]=
{
};
#endif/*#if((COM_TXIPDUNUM>=1) && (COM_RXIPDUNUM>=1) && (COM_GWIPDUNUM>=1) && (COM_GWSIGNUM>=1))*/
#endif/*#ifdef COM_ENABLE_ROUTESIGNAL6*/
#if(COM_IPDUGROUPNUM>=1)
COM_CONST COM_GroupIpduInfoType COM_GroupIpduInfo[]=
{
{0,COM_DIRECTION_TX},
{1,COM_DIRECTION_TX},
{2,COM_DIRECTION_TX},
{0,COM_DIRECTION_RX},
{1,COM_DIRECTION_RX},
{2,COM_DIRECTION_RX},
{3,COM_DIRECTION_RX},
{4,COM_DIRECTION_RX},
{5,COM_DIRECTION_RX},
{6,COM_DIRECTION_RX},
{7,COM_DIRECTION_RX},
{8,COM_DIRECTION_RX},
{9,COM_DIRECTION_RX},
{10,COM_DIRECTION_RX},
{11,COM_DIRECTION_RX},
{12,COM_DIRECTION_RX},
{13,COM_DIRECTION_RX},
{14,COM_DIRECTION_RX},
};
COM_CONST COM_IpduGroupInfoType COM_IpduGroupInfo[COM_IPDUGROUPNUM]= //<2F><>ǰ<EFBFBD><C7B0> COM_GroupIpduInfo <20>Ŀ<EFBFBD><C4BF>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ
{
{0,3},
{3,15}
};
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,495 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Com.h"
#include "crc.h"
/*******************************************************************************
* for Com_SendSignal
*******************************************************************************/
void COM_SendSig_SWS_R_SID(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_SID=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_SID);
}
void COM_SendSig_SWS_R_Multimedia(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Multimedia=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_MULTIMEDIA);
}
void COM_SendSig_SWS_R_Meter_menu(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Meter_menu=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_METER_MENU);
}
void COM_SendSig_SWS_R_voicd_expand(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_voicd_expand = (*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_VOICD_EXPAND);
}
void COM_SendSig_SWS_R_voicd_expand_2(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_voicd_expand_2=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_VOICD_EXPAND_2);
}
void COM_SendSig_SWS_R_LEFT_Menu(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_LEFT_Menu=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_LEFT_MENU);
}
void COM_SendSig_SWS_R_paddle_shift(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_paddle_shift=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_PADDLE_SHIFT);
}
void COM_SendSig_SWS_R_cruise(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_cruise=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_CRUISE);
}
void COM_SendSig_SWS_R_auto_show_in(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_auto_show_in=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_AUTO_SHOW_IN);
}
void COM_SendSig_SWS_R_auto_show_out(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_auto_show_out=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_AUTO_SHOW_OUT);
}
void COM_SendSig_SWS_R_mileage_clear(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_mileage_clear=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_MILEAGE_CLEAR);
}
void COM_SendSig_SWS_Media_Reset(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Media_Reset=(*(COM_CONST uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_MEDIA_RESET);
}
void COM_SendSig_SWS_Other_Recover(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Other_Recover=(*(COM_CONST uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_OTHER_RECOVER);
}
void COM_SendSig_SWS_R_checksum(COM_CONST void* SigValue)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_checksum=(*(uint8 *)SigValue);
Com_SetSendRequest(COM_TX_SIGSWS_R_CHECKSUM);
}
void COM_SendSig_SWS_L_Dis_set(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Dis_set=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Spd_set(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Spd_set=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Cancel_dipilot(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Cancel_dipilot=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Cruise_spd_limit(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Cruise_spd_limit=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_reset(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_reset=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Cruise_fault(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Cruise_fault=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_set(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_set=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Dsp_sub(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Dsp_sub=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Dsp_plus(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Dsp_plus=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Lane_line_assist(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Lane_line_assist=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_cruise_set(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_cruise_set=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_acc(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_acc=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Left_pick(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Left_pick=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_Right_pick(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_Right_pick=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_rolling_count(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_rolling_count=(*(uint8 *)SigValue);
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum = crc_8_for_sa3f(&(TxIpduSteering_LEFT_switch_3B0._c[0]), 7);
}
void COM_SendSig_SWS_L_checksum(COM_CONST void* SigValue)
{
TxIpduSteering_LEFT_switch_3B0.IpduSteering_LEFT_switch_3B0.SWS_L_checksum=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_vibration_cfg(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_vibration_cfg=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_vibration_state(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_vibration_state=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_Heat_cfg(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_Heat_cfg=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_swh_state(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_swh_state=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_sws_cfg(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_sws_cfg=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_auto_heat(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_auto_heat=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_heat_gear(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_heat_gear=(*(uint8 *)SigValue);
}
void COM_SendSig_SWS_C_heat_gear_cfg(COM_CONST void* SigValue)
{
TxIpduSteering_customization_switch_429.IpduSteering_customization_switch_429.SWS_C_heat_gear_cfg=(*(uint8 *)SigValue);
}
#if (COM_TXIPDUNUM>=1) //<2F>l<EFBFBD><6C><EFBFBD><EFBFBD>̖<EFBFBD><CC96><EFBFBD>P
COM_CONST COM_SendSignalFun COM_SendSignalFunPrt[COM_TXSIGNUM]=
{
COM_SendSig_SWS_R_SID,
COM_SendSig_SWS_R_Multimedia,
COM_SendSig_SWS_R_Meter_menu,
COM_SendSig_SWS_R_voicd_expand,
COM_SendSig_SWS_R_voicd_expand_2,
COM_SendSig_SWS_R_LEFT_Menu,
COM_SendSig_SWS_R_paddle_shift,
COM_SendSig_SWS_R_cruise,
COM_SendSig_SWS_R_auto_show_in,
COM_SendSig_SWS_R_auto_show_out,
COM_SendSig_SWS_R_mileage_clear,
COM_SendSig_SWS_Media_Reset,
COM_SendSig_SWS_Other_Recover,
COM_SendSig_SWS_R_checksum,
COM_SendSig_SWS_L_Dis_set,
COM_SendSig_SWS_L_Spd_set,
COM_SendSig_SWS_L_Cancel_dipilot,
COM_SendSig_SWS_L_Cruise_spd_limit,
COM_SendSig_SWS_L_reset,
COM_SendSig_SWS_L_Cruise_fault,
COM_SendSig_SWS_L_set,
COM_SendSig_SWS_L_Dsp_sub,
COM_SendSig_SWS_L_Dsp_plus,
COM_SendSig_SWS_L_Lane_line_assist,
COM_SendSig_SWS_L_cruise_set,
COM_SendSig_SWS_L_acc,
COM_SendSig_SWS_L_Left_pick,
COM_SendSig_SWS_L_Right_pick,
COM_SendSig_SWS_L_rolling_count,
COM_SendSig_SWS_L_checksum,
COM_SendSig_SWS_C_vibration_cfg,
COM_SendSig_SWS_C_vibration_state,
COM_SendSig_SWS_C_Heat_cfg,
COM_SendSig_SWS_C_swh_state,
COM_SendSig_SWS_C_sws_cfg,
COM_SendSig_SWS_C_auto_heat,
COM_SendSig_SWS_C_heat_gear,
COM_SendSig_SWS_C_heat_gear_cfg
};
#endif
/*******************************************************************************
* for Com_ReceiveSignal
*******************************************************************************/
//mpc
void COM_ReceiveSigMPC_L_lt_status(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMPC_316.IpduMPC_316.MPC_L_lt_status;
}
void COM_ReceiveSigMPC_R_lt_status(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMPC_316.IpduMPC_316.MPC_R_lt_status;
}
void COM_ReceiveSigMPC_Ld_alarm_mode_sta(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMPC_316.IpduMPC_316.MPC_Ld_alarm_mode_sta;
}
//meter
void COM_ReceiveSigMETER_BackgroundLightLvlCmd(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMETER_055.IpduMETER_055.METER_BackgroundLightLvlCmd;
}
//bcm1
void COM_ReceiveSigBCM1_power_gear(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear;
}
void COM_ReceiveSigBCM1_vehicle_state(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_vehicle_state;
}
void COM_ReceiveSigBCM1_vehicle_state1(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_vehicle_state1;
}
//bcm2
void COM_ReceiveSigBCM2_nm_sleep_state(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_2_50D.IpduBCM_2_50D.BCM2_nm_sleep_state;
}
//4g mod
void COM_ReceiveSigMOD_4G_Ecl_power_req(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMOD_4G_49A.IpduMOD_4G_49A.MOD_4G_Ecl_power_req;
}
void COM_ReceiveSigMOD_4G_ota_light_req(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMOD_4G_49A.IpduMOD_4G_49A.MOD_4G_ota_light_req;
}
void COM_ReceiveSigMOD_4G_enter_ota_mode_req(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMOD_4G_49A.IpduMOD_4G_49A.MOD_4G_enter_ota_mode_req;
}
void COM_ReceiveSigMOD_4G_ota_update_req(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMOD_4G_49A.IpduMOD_4G_49A.MOD_4G_ota_update_req;
}
void COM_ReceiveSigMOD_4G_checksum(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMOD_4G_49A.IpduMOD_4G_49A.MOD_4G_checksum;
}
//multi
void COM_ReceiveSigMULTIMEDIA_Sw_heat(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMultimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat;
}
//cloud service
void COM_ReceiveSigCloud_Service_remote_cmd(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpdCloud_services_0A2.IpduCloud_services_0A2.Cloud_Service_remote_cmd;
}
//cloud service
void COM_ReceiveSigCloud_Service_Sw_heat(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpdCloud_services_0A2.IpduCloud_services_0A2.Cloud_Service_Sw_heat;
}
//bcm evp2
void COM_ReceiveSigBCM_EVP2_vehicle_state(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_EvP2_394.IpduBCM_EvP2_394.BCM_EVP2_vehicle_state;
}
//air condition ctrl
void COM_ReceiveSigAIR_CD_ctrl_temp_show(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduAir_condition_ctrl_2DB.IpduAir_condition_ctrl_2DB.AIR_CD_ctrl_temp_show;
}
void COM_ReceiveSigVCU_ECM_Vehicle_code_s(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduVCU_40D.IpduVCU_40D.VCU_ECM_Vehicle_code_s;
}
//vcu
void COM_ReceiveSigBCM_L_nm_type(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_L_407.IpduBCM_L_407.BCM_L_nm_type;
}
//BCM L
void COM_ReceiveSigMETER1_BackgroundLightLvlCmd(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMETER_1_dir_4BF.IpduMETER_1_dir_4BF.METER1_BackgroundLightLvlCmd;
}
void COM_ReceiveSigThe_Limit_Acc(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduMETER_1_dir_4BF.IpduMETER_1_dir_4BF.The_Limit_Acc;
}
//METER 1 DIR
void COM_ReceiveSigBCM_R_air_temp_show(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduBCM_R_4E6.IpduBCM_R_4E6.BCM_R_air_temp_show;
}
//BCM R
void COM_ReceiveSigHEAT_subid(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduHEAT_4C1.IpduHEAT_4C1.HEAT_subid;
}
//HEAT_SUB_ID
void COM_ReceiveSigHEAT_auto_heat(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduHEAT_4C1.IpduHEAT_4C1.HEAT_auto_heat;
}
//HEAT_AUTO
void COM_ReceiveSigHEAT_heat_gear(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduHEAT_4C1.IpduHEAT_4C1.HEAT_heat_gear;
}
//HEAT_GEAR
void COM_ReceiveSigADS_ACC_Mode_Displayl(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduADS_29C.IpduADS_29C.ADS_ACC_Mode_Displayl;
}
//DNP_STATS
//DNP_WARNING
void COM_ReceiveSigADS_DNP_Stats(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduADS_29C.IpduADS_29C.ADS_DNP_Stats;
}
void COM_ReceiveSigADS_DNP_Take_Over_Req_S(void* SigValue)
{
(*(uint8 *)SigValue) = RxIpduADS_29C.IpduADS_29C.ADS_DNP_Take_Over_Req_S;
}
/*PRQA S 1503--*/
#if (COM_RXIPDUNUM>=1)
COM_CONST COM_ReceivedSignalFun COM_ReceivedSignalFunPrt[COM_RXSIGNUM]={
COM_ReceiveSigMPC_L_lt_status,
COM_ReceiveSigMPC_R_lt_status,
COM_ReceiveSigMPC_Ld_alarm_mode_sta,
COM_ReceiveSigMETER_BackgroundLightLvlCmd,
COM_ReceiveSigBCM1_power_gear,
COM_ReceiveSigBCM1_vehicle_state,
COM_ReceiveSigBCM1_vehicle_state1,
COM_ReceiveSigBCM2_nm_sleep_state,
COM_ReceiveSigMOD_4G_Ecl_power_req,
COM_ReceiveSigMOD_4G_ota_light_req,
COM_ReceiveSigMOD_4G_enter_ota_mode_req,
COM_ReceiveSigMOD_4G_ota_update_req,
COM_ReceiveSigMOD_4G_checksum,
COM_ReceiveSigMULTIMEDIA_Sw_heat,
COM_ReceiveSigCloud_Service_remote_cmd,
COM_ReceiveSigCloud_Service_Sw_heat,
COM_ReceiveSigBCM_EVP2_vehicle_state,
COM_ReceiveSigAIR_CD_ctrl_temp_show,
COM_ReceiveSigVCU_ECM_Vehicle_code_s,
COM_ReceiveSigBCM_L_nm_type,
COM_ReceiveSigMETER1_BackgroundLightLvlCmd,
COM_ReceiveSigThe_Limit_Acc,
COM_ReceiveSigBCM_R_air_temp_show,
COM_ReceiveSigHEAT_subid,
COM_ReceiveSigHEAT_auto_heat,
COM_ReceiveSigHEAT_heat_gear,
COM_ReceiveSigADS_ACC_Mode_Displayl,
COM_ReceiveSigADS_DNP_Stats,
COM_ReceiveSigADS_DNP_Take_Over_Req_S,
};
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,291 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Include files
********************************************************************************/
#include "Dcm_Cfg.h"
#include "Dcm.h"
CONST(uint8, DCM_VARIABLE) gSidMap_1[72]=
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x01,0xFF,0xFF,0x02,0xFF,0xFF,0xFF,
0xFF,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x04,0xFF,0xFF,0xFF,0xFF,0x05,
0x06,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x08,
0xFF,0x09,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0a,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x0b,0xFF,0xFF
};
static CONST(DcmDsdServiceTable, DCM_VARIABLE) gServiceTable_1[DCM_NUM_OF_SERVICE]=
{
#if(DCM_SERVICE_10_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_DiagnosticSessionControl, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1)},
DCM_SUBSERVICESTART, (NUM_OF_10_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x10 */
#endif
#if(DCM_SERVICE_11_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_EcuReset, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_1),(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1)},
NUM_OF_10_SUB_FUNCTION, (NUM_OF_10_SUB_FUNCTION+
NUM_OF_11_SUB_FUNCTION-1u),PHYSICAL_REQ_SUPPORTED},/* 0x11 */
#endif
#if(DCM_SERVICE_14_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_ClearDiagnosticInformation, UDS_SERVICE_WITHOUT_SUB_FUNCTION,(DCM_SEC_LEV_SL_ALL),(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1) },
(DCM_NUM_OF_SUB_SERVICE-1u),(DCM_NUM_OF_SUB_SERVICE-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x14 */
#endif
#if(DCM_SERVICE_19_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_ReadDTCInformation, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1) },
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION),(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x19 */
#endif
#if(DCM_SERVICE_22_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_ReadDataByIdentifier, UDS_SERVICE_WITHOUT_SUB_FUNCTION,(DCM_SEC_LEV_SL_ALL),(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1)},
(DCM_NUM_OF_SUB_SERVICE-1u),(DCM_NUM_OF_SUB_SERVICE-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x22 */
#endif
#if(DCM_SERVICE_27_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_SecurityAccess, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1) },
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION),(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION-1u),
PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x27 */
#endif
#if(DCM_SERVICE_28_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_CommunicationControl, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1 },
(NUM_OF_10_SUB_FUNCTION+ NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION),(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x28 */
#endif
#if(DCM_SERVICE_2E_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_WriteDataByIdentifier, UDS_SERVICE_WITHOUT_SUB_FUNCTION,(DCM_SEC_LEV_SL_39B),(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1)},
(DCM_NUM_OF_SUB_SERVICE-1u),(DCM_NUM_OF_SUB_SERVICE-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x2E */
#endif
#if(DCM_SERVICE_2F_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_InputOutputControlByIdentifier, UDS_SERVICE_WITHOUT_SUB_FUNCTION,DCM_SEC_LEV_SL_ALL,DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1},
(DCM_NUM_OF_SUB_SERVICE-1),(DCM_NUM_OF_SUB_SERVICE-1u),PHYSICAL_REQ_SUPPORTED}, /* 0x2F */
#endif
#if(DCM_SERVICE_31_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_RoutineControl, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1|DCM_SESSION_PROGRAMMING)},
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION),
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+NUM_OF_31_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED}, /* 0x31 */
#endif
#if(DCM_SERVICE_3E_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_TesterPresent, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1)},
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+NUM_OF_31_SUB_FUNCTION),
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+NUM_OF_31_SUB_FUNCTION+NUM_OF_3E_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x3E */
#endif
#if(DCM_SERVICE_85_ENABLED==STD_ON)
{ DCM_DSDSIDTABID,{&DspInternal_Uds_ControlDTCSetting, UDS_SERVICE_WITH_SUB_FUNCTION, (DCM_SEC_LEV_SL_ALL),DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1},
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+NUM_OF_31_SUB_FUNCTION+NUM_OF_3E_SUB_FUNCTION),
(NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+NUM_OF_31_SUB_FUNCTION+NUM_OF_3E_SUB_FUNCTION+NUM_OF_85_SUB_FUNCTION-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},/* 0x85 */
#endif
{ 1,{DCM_NULL, UDS_SERVICE_WITHOUT_SUB_FUNCTION,DCM_SEC_LEV_LOCK,DEFAULT_AND_EXTENDED_SEESION_HANDLE},(DCM_NUM_OF_SUB_SERVICE-1u),(DCM_NUM_OF_SUB_SERVICE-1u),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED} /* 0xFF */
};
P2CONST(CurrentSidMapType, DCM_VARIABLE, DCM_VARIABLE) gCurrentSidMap=gSidMap_1;
P2CONST(DcmDsdServiceTable, DCM_VARIABLE, DCM_VARIABLE) gCurrentDcmDsdServiceTable=gServiceTable_1;
CONST(Dcm_CurentDcmDsdServiceTableSizeType, DCM_VARIABLE) gCurentDcmDsdServiceTableSize=DCM_NUM_OF_SERVICE;
CONST(DcmDsdSubService, DCM_VARIABLE) gDcmDsdSubService[DCM_NUM_OF_SUB_SERVICE]=
{
#if(DCM_SERVICE_10_ENABLED==STD_ON)
#if(DCM_SERVICE_10_Default==STD_ON)
{&App_Default, &App_DefaultPost, DCM_DEFAULT_SESSION, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_10_Programming==STD_ON)
{&App_Programming, &App_ProgrammingPost, DCM_PROGRAMMING_SESSION, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_10_Extended_Diagnostic==STD_ON)
{&App_Extended_Diagnostic, &App_Extended_DiagnosticPost, DCM_EXTENDED_DIAGNOSTIC_SESSION, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_10_UserDefined1==STD_ON)
{&App_Kuwe_Session, &App_Kuwe_SessionPost, DCM_Kuwe_Session_SESSION, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_11_ENABLED==STD_ON)
#if(DCM_SERVICE_11_HardReset==STD_ON)
{&App_HardReset, &App_HardResetPost, DCM_HARD_RESET, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_1),
(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1), PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_11_SoftReset==STD_ON)
{&App_SoftReset, &App_SoftResetPost, DCM_SOFT_RESET, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_1),
(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1), PHYSICAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_19_ENABLED==STD_ON)
#if(reportNumberOfDTCByStatusMask==STD_ON)
{&App_ReportNumberOfDTCByStatusMask, DCM_NULL, DCM_REPORTNUMBEROFDTCBYSTATUSMASK, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(reportDTCByStatusMask==STD_ON)
{&App_ReportDTCByStatusMask, DCM_NULL, DCM_REPORTDTCBYSTATUSMASK, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(reportDTCSnapshotRecordByDTCNumber==STD_ON)
{&App_ReportDTCSnapshotRecordByDTCNumber, DCM_NULL, DCM_REPORTDTCSNAPSHOTRECORDBYDTCNUMBER, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(reportDTCExtendedDataRecordByDTCNumber==STD_ON)
{&App_ReportDTCExtendedDataRecordByDTCNumber, DCM_NULL, DCM_REPORTDTCEXTENDEDDATARECORDBYDTCNUMBER, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(reportSupportedDTC==STD_ON)
{&App_ReportSupportedDTC, DCM_NULL, DCM_REPORTSUPPORTEDDTC, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_27_ENABLED==STD_ON)
#if(DCM_SERVICE_27_Request_Seed_L1==STD_ON)
{&App_Request_Seed_L1, DCM_NULL, REQUEST_SEED_L1, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L1==STD_ON)
{&App_Send_Key_L1, DCM_NULL, SEND_KEY_L1, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Request_Seed_L2==STD_ON)
{&App_Request_Seed_L2, DCM_NULL, REQUEST_SEED_L2, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC | DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L2==STD_ON)
{&App_Send_Key_L2, DCM_NULL, SEND_KEY_L2, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC | DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Request_Seed_L3==STD_ON)
{&App_Request_Seed_L3, DCM_NULL, REQUEST_SEED_L3, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L3==STD_ON)
{&App_Send_Key_L3, DCM_NULL, SEND_KEY_L3, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Request_Seed_L4==STD_ON)
{&App_Request_Seed_L4, DCM_NULL, REQUEST_SEED_L4, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L4==STD_ON)
{&App_Send_Key_L4, DCM_NULL, SEND_KEY_L4, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Request_Seed_L5==STD_ON)
{&App_Request_Seed_L5, DCM_NULL, REQUEST_SEED_L5, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L5==STD_ON)
{&App_Send_Key_L5, DCM_NULL, SEND_KEY_L5, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Request_Seed_L6==STD_ON)
{&App_Request_Seed_L6, DCM_NULL, REQUEST_SEED_L6, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_27_Send_Key_L6==STD_ON)
{&App_Send_Key_L6, DCM_NULL, SEND_KEY_L6, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_28_ENABLED==STD_ON)
#if(DCM_SERVICE_28_EnableRxAndTx==STD_ON)
{&App_EnableRxAndTx, DCM_NULL, ENABLE_RX_AND_TX, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_28_EnableRxAndDisableTx==STD_ON)
{&App_EnableRxAndDisableTx, DCM_NULL, ENBALE_RX_AND_DISABLE_TX, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_28_DisableRxAndTx==STD_ON)
{&App_DisableRxAndTx, DCM_NULL, DISABLE_RX_AND_TX, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_2C_ENABLED==STD_ON)
#endif
#if(DCM_SERVICE_31_ENABLED==STD_ON)
#if(DCM_SERVICE_31_startRoutine==STD_ON)
{DCM_NULL, DCM_NULL, START_ROUTINE, SUB_FUNCTION_SUPPORTED,DCM_SEC_LEV_ALL,DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_REQ_SUPPORTED}, /* 40,0x31 01 */
#endif
#if(DCM_SERVICE_31_stopRoutine==STD_ON)
{DCM_NULL, DCM_NULL, STOP_ROUTINE, SUB_FUNCTION_SUPPORTED,DCM_SEC_LEV_LOCK,DEFAULT_AND_EXTENDED_SEESION_HANDLE, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED}, /* 41,0x31 02 */
#endif
#if(DCM_SERVICE_31_requestRoutineResults==STD_ON)
{DCM_NULL, DCM_NULL, REQUEST_ROUTINE_RESULT, SUB_FUNCTION_SUPPORTED,DCM_SEC_LEV_SL_39B,DEFAULT_AND_EXTENDED_SEESION_HANDLE, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED}, /* 42,0x31 03 */
#endif
#endif
#if(DCM_SERVICE_3E_ENABLED==STD_ON)
{DCM_NULL, DCM_NULL, ZERO_SUB_FUNCTION, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
(DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1), PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_85_ENABLED==STD_ON)
#if(DCM_SERVICE_85_DTCRecordOn==STD_ON)
{&App_DTCRecordOn, DCM_NULL, DTC_RECORD_ON, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#if(DCM_SERVICE_85_DTCRecordOff==STD_ON)
{&App_DTCRecordOff, DCM_NULL, DTC_RECORD_OFF, SUB_FUNCTION_SUPPORTED, (DCM_SEC_LEV_SL_ALL),
DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1, PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
#endif
#endif
#if(DCM_SERVICE_86_ENABLED==STD_ON)
#endif
{DCM_NULL, DCM_NULL, 0, SUB_FUNCTION_SUPPORTED,DCM_SEC_LEV_LOCK,DEFAULT_AND_EXTENDED_SEESION_HANDLE,PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED} /* 54,0xFF */
};

View File

@ -0,0 +1,816 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DCM_CFG_H_
#define _DCM_CFG_H_
/*******************************************************************************
* Include files
********************************************************************************/
#include "can_cfg.h"
#include "Dcm_Types.h"
#include "PduR_Dcm.h"
/*******************************************************************************
* Macros and Tyedef
********************************************************************************/
#define DCM_SEC_LEV_SL_1 DCM_SEC_LEV_L1
#define DCM_SEC_LEV_SL_3 DCM_SEC_LEV_L2
#define DCM_SEC_LEV_SL_5 DCM_SEC_LEV_L3
#define DCM_SEC_LEV_SL_7 DCM_SEC_LEV_L4
#define DCM_SEC_LEV_SL_9 DCM_SEC_LEV_L5
#define DCM_SEC_LEV_SL_B DCM_SEC_LEV_L6
#define DCM_SEC_LEV_SL_C DCM_SEC_LEV_L7
#define DCM_SEC_LEV_SL_ALL DCM_SEC_LEV_ALL
//#define DCM_SEC_LEV_SL_15 (DCM_SEC_LEV_SL_1|DCM_SEC_LEV_SL_5)
#define DCM_SEC_LEV_SL_39B (DCM_SEC_LEV_SL_1)
#define DCM_SEC_LEV_SL_UNLOCK (DCM_SEC_LEV_SL_1)
/******************************************************************************\
| The following macros are non-configurable |
\*****************************************************************************/
#define UseBlockId 0x01u
#define UseDataClientServer 0x02u
#define UseDataSenderReceiver 0x03u
#define UseEcuSignal 0x04u
#define UseFnc 0x05u
#define DCM_NULL ((void*)0)
#define SUB_FUNCTION_NOT_SUPPORTED 0x00u
#define SUB_FUNCTION_SUPPORTED 0x01u
#define PHYSICAL_REQ_SUPPORTED 0x01u
#define FUNCTIONAL_REQ_SUPPORTED 0x02u
#define PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED 0x03u
/* For 0x19 */
#define DCM_REPORTNUMBEROFDTCBYSTATUSMASK 0x01u
#define DCM_REPORTDTCBYSTATUSMASK 0x02u
#define DCM_REPORTDTCSNAPSHOTIDENTIFICATION 0x03u
#define DCM_REPORTDTCSNAPSHOTRECORDBYDTCNUMBER 0x04u
#define DCM_REPORTDTCSNAPSHOTRECORDBYRECORDNUMBER 0x05u
#define DCM_REPORTDTCEXTENDEDDATARECORDBYDTCNUMBER 0x06u
#define DCM_REPORTNUMBEROFDTCBYSEVERITYMASKRECORD 0x07u
#define DCM_REPORTDTCBYSEVERITYMASKRECORD 0x08u
#define DCM_REPORTSEVERITYINFORMATIONOFDTC 0x09u
#define DCM_REPORTSUPPORTEDDTC 0x0Au
#define DCM_REPORTFIRSTTESTFAILEDDTC 0x0Bu
#define DCM_REPORTFIRSTCONFIRMEDDTC 0x0Cu
#define DCM_REPORTMOSTRECENTTESTFAILEDDTC 0x0Du
#define DCM_REPORTMOSTRECENTCONFIRMEDDTC 0x0Eu
#define DCM_REPORTMIRRORMEMORYDTCBYSTATUSMASK 0x0Fu
#define DCM_REPORTMIRRORMEMORYDTCEXTENDEDDATARECORDBYDTCNUMBER 0x10u
#define DCM_REPORTNUMBEROFMIRRORMEMORYDTCBYSTATUSMASK 0x11u
#define DCM_REPORTNUMBEROFEMISSIONSRELATEDOBDDTCBYSTATUSMASK 0x12u
#define DCM_REPORTEMISSIONSRELATEDOBDDTCBYSTATUSMASK 0x13u
/* For 0x27 */
#define REQUEST_SEED_L1 0x01u
#define SEND_KEY_L1 0x02u
#define REQUEST_SEED_L2 0x03u
#define SEND_KEY_L2 0x04u
#define REQUEST_SEED_L3 0x05u
#define SEND_KEY_L3 0x06u
#define REQUEST_SEED_L4 0x07u
#define SEND_KEY_L4 0x08u
#define REQUEST_SEED_L5 0x09u
#define SEND_KEY_L5 0x0Au
#define REQUEST_SEED_L6 0x0Bu
#define SEND_KEY_L6 0x0Cu
#define REQUEST_SEED_L7 0x0Du
#define SEND_KEY_L7 0x0Eu
#define REQUEST_SEED_L8 0x0Fu
#define SEND_KEY_L8 0x10u
/* For 0x28 */
#define ENABLE_RX_AND_TX 0x00u
#define ENBALE_RX_AND_DISABLE_TX 0x01u
#define DISABLE_RX_AND_ENBALE_TX 0x02u
#define DISABLE_RX_AND_TX 0x03u
#define NORMAL_MSG 0x01u
#define NM_MSG 0x02u
#define BOTH_NORMAL_AND_NM_MSG 0x03u
/* For 0x2C */
#define DEFINEBYIDENTIFIER 0x01u
#define DEFINEBYMEMORYADDRESS 0x02u
#define CLEARDYNAMICALLYDEFINEDDATAIDENTIFIER 0x03u
/* For 0x2F */
#define RETURN_CONTROL_TO_ECU 0x00u
#define RESET_TO_DEFAULT 0x01u
#define FREEZE_CURRENT_STATE 0x02u
#define SHORT_TERM_ADJUSTMENT 0x03u
/* For 0x31 */
#define START_ROUTINE 0x01u
#define STOP_ROUTINE 0x02u
#define REQUEST_ROUTINE_RESULT 0x03u
/* For 0x3E */
#define ZERO_SUB_FUNCTION 0x00u
/* For 0x85 */
#define DTC_RECORD_ON 0x01u
#define DTC_RECORD_OFF 0x02u
#define DcmTransmit(DcmTxPduId,PduInfoPtr) PduR_DcmTransmit(DcmTxPduId,PduInfoPtr)
#define Dcm_DefaultSessionPost(result) App_DefaultPost(result)
#define DCM_VENDOR_ID (uint16)(0xFFFFu) /* Supplier ID */
#define DCM_MODULE_ID (uint16)(0x0023u) /* Dcm Moudle ID */
/* CanTp Component release Version */
#define DCM_SW_MAJOR_VERSION (uint8)(0x01u)
#define DCM_SW_MINOR_VERSION (uint8)(0x01u)
#define DCM_SW_PATCH_VERSION (uint8)(0x00u)
/* Autosar release version */
#define DCM_AR_MAJOR_VERSION (uint8)(0x01u)
#define DCM_AR_MINOR_VERSION (uint8)(0x00u)
#define DCM_AR_PATCH_VERSION (uint8)(0x00u)
/***********************************************************************************\
| The following macros are configurable |
\***********************************************************************************/
#define DCM_DSP_DATA_USE_PORT UseFnc
#define DCM_DEV_ERROR_DETECT STD_OFF
#define DCM_OEM_INDICATION STD_OFF
#define DCM_SUPPLIER_INDICATION STD_OFF
#define DCM_RESPONSE_ALL_REQ STD_OFF
#define DCM_VERSION_INFO_API STD_ON
/* For 15031-5 */
#define ISO_15031_5 STD_OFF
#define ISO_15031_5_MultiChannel STD_OFF
/* Related to Dcm calling cycle */
#define DCM_TASK_TIME (uint32)5u
/* Related to 0x78 negative response */
#define DCM_DSL_DIAG_RESP_FORCE_RESP_PEND_EN STD_ON
#define DCM_NUM_MAX_RESPPEND 4294967295u
/* Related to customized service */
#define DCM_COSTOMIZED_SERVCIE_SUPPORTED STD_OFF
/* Related to Obd service */
/* Related to Uds service */
#define DCM_NUM_OF_SERVICE 13u
#define DCM_NUM_OF_SUB_SERVICE (NUM_OF_10_SUB_FUNCTION+NUM_OF_11_SUB_FUNCTION+\
NUM_OF_19_SUB_FUNCTION+NUM_OF_27_SUB_FUNCTION+\
NUM_OF_28_SUB_FUNCTION+NUM_OF_2C_SUB_FUNCTION+\
NUM_OF_31_SUB_FUNCTION+NUM_OF_3E_SUB_FUNCTION+\
NUM_OF_85_SUB_FUNCTION+NUM_OF_86_SUB_FUNCTION+1u)
#define UDS_SERVICE_WITHOUT_SUB_FUNCTION 0u
#define UDS_SERVICE_WITH_SUB_FUNCTION 1u
#define DCM_DSDSIDTABID 1u
#define DCM_SUBSERVICESTART 0u
#define DCM_SERVICE_10_ENABLED STD_ON
#if(DCM_SERVICE_10_ENABLED==STD_ON)
/*For user defined session control subfunction*/
/*start*/
#define DCM_Kuwe_Session_SESSION 0x60
#define DCM_SESSION_Kuwe_Session DCM_SESSION_USERDEFINED1
#define DCM_SERVICE_10_Default STD_ON
#define DCM_SERVICE_10_Programming STD_ON
#define DCM_SERVICE_10_Extended_Diagnostic STD_ON
#define DCM_SERVICE_10_UserDefined1 STD_ON
#define DCM_SERVICE_10_UserDefined2 STD_OFF
#define DCM_SERVICE_10_UserDefined3 STD_OFF
#define DCM_SERVICE_10_UserDefined4 STD_OFF
#define DCM_SERVICE_10_UserDefined5 STD_OFF
#define KIND_OF_SESSION 4u
#define NUM_OF_10_SUB_FUNCTION 4u
#define DEFAULT_AND_EXTENDED_SEESION_HANDLE (DCM_SESSION_DEFAULT | DCM_SESSION_EXTENDED_DIAGNOSTIC)
#define EXTENDED_SEESION_HANDLE DCM_SESSION_EXTENDED_DIAGNOSTIC
#define RESPONSE_WITH_P2TIMER STD_ON
#else
#define NUM_OF_10_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_11_ENABLED STD_ON
#if(DCM_SERVICE_11_ENABLED==STD_ON)
#define DCM_SERVICE_11_HardReset STD_ON
#define DCM_SERVICE_11_SoftReset STD_ON
#define DCM_SERVICE_11_EnableRapidPowerShutDown STD_OFF
#define DCM_SERVICE_11_DisableRapidPowerShutDown STD_OFF
#define DCM_SERVICE_11_UserDefined1 STD_OFF
#define DCM_SERVICE_11_UserDefined2 STD_OFF
#define DCM_SERVICE_11_KeyOffOnReset STD_OFF
#define NUM_OF_11_SUB_FUNCTION 2u
#else
#define NUM_OF_11_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_14_ENABLED STD_ON
#define DCM_SERVICE_19_ENABLED STD_ON
#if(DCM_SERVICE_19_ENABLED==STD_ON)
#define reportNumberOfDTCByStatusMask STD_ON
#define reportDTCByStatusMask STD_ON
#define reportDTCSnapshotRecordByDTCNumber STD_OFF
#define reportDTCExtendedDataRecordByDTCNumber STD_OFF
#define reportSupportedDTC STD_ON
#define reportDTCBySeverityMaskRecord STD_OFF
#define reportSeverityInformationOfDTC STD_OFF
#define reportDTCSnapshotRecordByRecordNumber STD_OFF
#define reportNumberOfDTCBySeverityMaskRecord STD_OFF
#define reportEmissionsRelatedOBDDTCByStatusMask STD_OFF
#define reportNumberOfMirrorMemoryDTCByStatusMask STD_OFF
#define reportNumberOfEmissionsRelatedOBDDTCByStatusMask STD_OFF
#define reportDTCSnapshotIdentification STD_OFF
#define reportMirrorMemoryDTCExtendedDataRecordByDTCNumber STD_OFF
#define reportMostRecentConfirmedDTC STD_OFF
#define reportMostRecentTestFailedDTC STD_OFF
#define reportMirrorMemoryDTCByStatusMask STD_OFF
#define reportFirstConfirmedDTC STD_OFF
#define reportFirstTestFailedDTC STD_OFF
#define NUM_OF_19_SUB_FUNCTION 3u
#else
#define NUM_OF_19_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_22_ENABLED STD_ON
#define DCM_SERVICE_22_COMBINED_DID STD_OFF
#if(DCM_SERVICE_22_COMBINED_DID == STD_ON)
#define MAX_NUM_OF_DID_TO_READ 1u
#else
#define MAX_NUM_OF_DID_TO_READ 1u
#endif
#if(DCM_SERVICE_22_ENABLED==STD_ON)
#define NUMBER_OF_READ_DID 34u
#endif
#define DCM_SERVICE_23_ENABLED STD_OFF
#define DCM_SERVICE_24_ENABLED STD_OFF
#define DCM_SERVICE_27_ENABLED STD_ON
#if(DCM_SERVICE_27_ENABLED==STD_ON)
#define DCM_SERVICE_27_Request_Seed_L1 STD_ON
#define DCM_SERVICE_27_Send_Key_L1 STD_ON
#define DCM_SERVICE_27_Request_Seed_L2 STD_ON
#define DCM_SERVICE_27_Send_Key_L2 STD_ON
#define DCM_SERVICE_27_Request_Seed_L3 STD_ON
#define DCM_SERVICE_27_Send_Key_L3 STD_ON
#define DCM_SERVICE_27_Request_Seed_L4 STD_ON
#define DCM_SERVICE_27_Send_Key_L4 STD_ON
#define DCM_SERVICE_27_Request_Seed_L5 STD_ON
#define DCM_SERVICE_27_Send_Key_L5 STD_ON
#define DCM_SERVICE_27_Request_Seed_L6 STD_ON
#define DCM_SERVICE_27_Send_Key_L6 STD_ON
#define KIND_OF_SECURITY_LEVEL 7u //分別是哪七個呢,宏呢 DCM_SERVICE_27_SECURITY_MAP_LOCK
#define NUM_OF_27_SUB_FUNCTION 12u
#define DISABLE_SECURITY_ACCESS_ATTEMPT_NUMBER_RESET STD_OFF
#else
#define NUM_OF_27_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_28_ENABLED STD_ON
#if(DCM_SERVICE_28_ENABLED==STD_ON)
#define DCM_SERVICE_28_EnableRxAndTx STD_ON
#define DCM_SERVICE_28_EnableRxAndDisableTx STD_ON
#define DCM_SERVICE_28_DisableRxAndTx STD_ON
#define DCM_SERVICE_28_DisableRxAndEnableTx STD_OFF
#define NUM_OF_28_SUB_FUNCTION 3u
#else
#define NUM_OF_28_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_2A_ENABLED STD_OFF
#define NUMBER_OF_PERIODIC_DID 1u
#define DCM_SERVICE_2C_ENABLED STD_OFF
#define NUM_OF_2C_SUB_FUNCTION 0u
#define DCM_SERVICE_2E_ENABLED STD_ON
#if(DCM_SERVICE_2E_ENABLED==STD_ON)
#define NUMBER_OF_WRITE_DID 9u
#endif
#define DCM_SERVICE_2F_ENABLED STD_ON
#if(DCM_SERVICE_2F_ENABLED==STD_ON)
#define NUMBER_OF_CONTROL_DID 3u
#endif
#define DCM_SERVICE_31_ENABLED STD_ON
#if(DCM_SERVICE_31_ENABLED==STD_ON)
#define DCM_SERVICE_31_startRoutine STD_ON
#define DCM_SERVICE_31_stopRoutine STD_ON
#define DCM_SERVICE_31_requestRoutineResults STD_ON
#define NUMBER_OF_RID 1u
#define NUM_OF_31_SUB_FUNCTION 3u
#else
#define NUM_OF_31_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_3D_ENABLED STD_OFF
#define DCM_SERVICE_3E_ENABLED STD_ON
#if(DCM_SERVICE_3E_ENABLED==STD_ON)
#define NUM_OF_3E_SUB_FUNCTION 1u
#else
#define NUM_OF_3E_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_85_ENABLED STD_ON
#if(DCM_SERVICE_85_ENABLED==STD_ON)
#define DCM_SERVICE_85_DTCRecordOn STD_ON
#define DCM_SERVICE_85_DTCRecordOff STD_ON
#define NUM_OF_85_SUB_FUNCTION 2u
#else
#define NUM_OF_85_SUB_FUNCTION 0u
#endif
#define DCM_SERVICE_86_ENABLED STD_OFF
#define NUM_OF_86_SUB_FUNCTION 0u
/* Related to diagnostic buffer */
#define DCM_PAGEDBUFFER_ENABLED STD_OFF
#define UDS_FUNC_BUFFER_SIZE 8u //因為每幀都被復制到物理中了
#define UDS_PHYS_BUFFER_SIZE 440u
#define NEG_RESP_BUFFER_SIZE 3u
#if(DCM_SERVICE_2A_ENABLED==STD_ON)
#define PERODIC_RESP_BUFFER_SIZE 8
#endif
/* Additional applicaiton callback */
#define DCM_GENERAL_DIAGNOSTIC_REQUEST_CTL STD_OFF
typedef uint32 DcmDslBufferSize;
typedef void (*EcucFunctionNameDef)(void);
typedef uint8 (*EcucSubFunctionNameDef)(Dcm_MsgContextType* Function);
typedef void (*VoidEcucSubFunctionNameDef)(Dcm_MsgContextType* Function);
typedef void (*EcucPostSubFunctionNameDef)(Std_ReturnType Result);
/* For Uds service table */
typedef struct
{
EcucFunctionNameDef DcmDsdSidTabFnc;
uint8 DcmDsdSidTabSubfuncAvail;
uint8 DcmDsdSidTabSecurityLevelRef;
uint8 DcmDsdSidTabSessionLevelRef;
}DcmDsdService;
typedef struct
{
uint8 DcmDsdSidTabId;
DcmDsdService ServiceTable;
uint8 FirstSubService; /* self-defined */
uint8 LastSubService; /* self-defined */
uint8 AddressingMode;
}DcmDsdServiceTable;
/* For Uds sub-service table */
typedef struct
{
VoidEcucSubFunctionNameDef DcmDsdSubFunction;/* self-defined */
EcucPostSubFunctionNameDef DcmDsdSubFunctionPost;/* self-defined */
uint8 DcmDsdSubServiceId;
uint8 DcmDsdSubServiceIdSupported;/* self-defined */
uint8 DcmDsdSubServiceSecurityLevelRef;
uint8 DcmDsdSubServiceSessionLevelRef;
uint8 AddressingMode;/* self-defined */
}DcmDsdSubService;
/* For security access */
typedef struct
{
/* uint32 DcmDspSecurityADRSize;*/
uint32 DcmDspSecurityDelayTime;
uint32 DcmDspSecurityDelayTimeOnBoot;
uint32 DcmDspSecurityKeySize;
uint8 DcmDspSecurityLevel;
uint8 DcmDspSecurityNumAttDelay;
uint32 DcmDspSecuritySeedSize;
}DcmDspSecurityRow;
typedef enum
{
KEY_IS_NOT_VALID=0x00u,
KEY_IS_VALID=0x01u
}DcmDspSecurityAccessKey;
/* For session control */
typedef enum
{
DCM_NO_BOOT,
DCM_OEM_BOOT,
DCM_SYS_BOOT
}DcmDspSessionForBoot;
typedef struct
{
DcmDspSessionForBoot DcmDspSession;
uint8 DcmDspSessionLevel;
uint32 DcmDspSessionP2ServerMax;
uint32 DcmDspSessionP2StarServerMax;
}DcmDspSessionRow;
/* For 0x22 */
typedef struct
{
uint32 DcmDspDidIdentifier;
boolean DcmDspDidUsed;
uint16 DcmDspDataSize;
#if(DCM_DSP_DATA_USE_PORT==UseFnc)
VoidEcucSubFunctionNameDef DcmDspDataReadFnc;
#endif
#if(DCM_DSP_DATA_USE_PORT==UseEcuSignal)
VoidEcucSubFunctionNameDef DcmDspDataEcuSignal;
VoidEcucSubFunctionNameDef DcmDspDataReadEcuSignal;
#endif
uint8 DcmDspDidReadSecurityLevelRef;
uint8 DcmDspDidReadSessionRef;
uint8 AddressingMode;
}Dcm_22_ServiceInfoType;
/* For 0x23 */
typedef struct
{
uint32 DcmDspReadMemoryRangeHigh;
uint32 DcmDspReadMemoryRangeLow;
uint8 DcmDspReadMemoryRangeSecurityLevelRef;
uint8 DcmDspReadMemoryRangeSessionRef;
uint8 AddressingMode;
}DcmDspReadMemoryRangeInfo;
typedef uint8 Dcm_MemoryAddressFormatType;
typedef uint8 Dcm_MemorySizeFormatType;
/* For 0x24 */
typedef struct
{
uint32 DcmDspDidIdentifier;
boolean DcmDspDidUsed;
uint16 DcmDspDataSize;
#if(DCM_DSP_DATA_USE_PORT==UseFnc)
VoidEcucSubFunctionNameDef DcmDspDataGetScalingInfoFnc;
#endif
#if(DCM_DSP_DATA_USE_PORT==UseEcuSignal)
VoidEcucSubFunctionNameDef DcmDspDataEcuSignal;
VoidEcucSubFunctionNameDef DcmDspDataReadEcuSignal;
#endif
uint8 DcmDspDidReadSecurityLevelRef;
uint8 DcmDspDidReadSessionRef;
uint8 AddressingMode;
}Dcm_24_ServiceInfoType;
/* For 0x2A */
typedef struct
{
uint8 DcmDspDidIdentifier;
boolean DcmDspDidUsed;
uint16 DcmDspDataSize;
#if(DCM_DSP_DATA_USE_PORT==UseFnc)
VoidEcucSubFunctionNameDef DcmDspDataReadFnc;
#endif
uint8 DcmDspDidReadSecurityLevelRef;
uint8 DcmDspDidReadSessionRef;
uint8 AddressingMode;
}Dcm_2A_ServiceInfoType;
/* For 0x2C */
typedef struct
{
uint32 DcmDspDidIdentifier;
uint16 DcmDspDataSize;
uint8 DcmDspDidReadSecurityLevelRef;/* security level must be the same as in 0x22 */
uint8 DcmDspDidReadSessionRef;/* session type must be the same as in 0x22 */
uint8 AddressingMode;
}Dcm_2C_ServiceInfoType;
/* For 0x2E */
typedef struct
{
uint32 DcmDspDidIdentifier;
boolean DcmDspDidUsed;
uint16 DcmDspDataSize;
#if(DCM_DSP_DATA_USE_PORT==UseFnc)
VoidEcucSubFunctionNameDef DcmDspDataWriteFnc;
#endif
#if(DCM_DSP_DATA_USE_PORT==UseEcuSignal)
VoidEcucSubFunctionNameDef DcmDspDataEcuSignal;
#endif
uint8 DcmDspDidWriteSecurityLevelRef;
uint8 DcmDspDidWriteSessionRef;
uint8 AddressingMode;
}Dcm_2E_ServiceInfoType;
/* For 0x2F */
typedef struct
{
uint32 DcmDspDidControlOptionRecordSize; /* This define the size of controlOptionRecord without the InputOutputControlParameter */
uint32 DcmDspDidControlEnableMaskRecordSize;/* This is only useful when use InputOutputControlParameter */
uint32 DcmDspDidControlStatusRecordSize;
}DcmDspDidControlRecordSizes;
typedef struct
{
uint32 DcmDspDidIdentifier;
uint8 DcmDspDidControlSecurityLevelRef;
uint8 DcmDspDidControlSessionRef;
uint8 AddressingMode;
DcmDspDidControlRecordSizes RecordSizes;
#if(DCM_DSP_DATA_USE_PORT==UseFnc)
VoidEcucSubFunctionNameDef DcmDspDataReturnControlToEcuFnc;
VoidEcucSubFunctionNameDef DcmDspDataResetToDefaultFnc;
VoidEcucSubFunctionNameDef DcmDspDataFreezeCurrentStateFnc;
VoidEcucSubFunctionNameDef DcmDspDataShortTermAdjustmentFnc;
#endif
VoidEcucSubFunctionNameDef OtherFnc;/* self-defined */
}Dcm_2F_ServiceInfoType;
/* For 0x31 */
typedef struct
{
uint8 DcmDspRoutineSecurityLevelRef;
uint8 DcmDspRoutineSessionRef;
uint8 AddressingMode;
}DcmDspRoutineAuthorization;
typedef struct
{
uint32 DcmDspRoutineSignalLength;
/* uint32 DcmDspRoutineSignalPos; */ /* Reserved */
}DcmDspRoutineSignal;
typedef struct
{
DcmDspRoutineAuthorization RoutineAuthorization;
DcmDspRoutineSignal DcmDspRoutineRequestResOut;/*not used */
DcmDspRoutineSignal DcmDspRoutineStopIn;
DcmDspRoutineSignal DcmDspRoutineStopOut; /*not used */
DcmDspRoutineSignal DcmDspStartRoutineIn;
DcmDspRoutineSignal DcmDspStartRoutineOut; /*not used */
}DcmDspRoutineInfo;
typedef struct
{
uint16 DcmDspRoutineIdentifier;
boolean DcmDspRoutineUsed; /*not used */
boolean DcmDspRoutineUsePort;/*not used */
boolean DcmDspRoutineFixedLength;
VoidEcucSubFunctionNameDef DcmDspStartRoutineFnc;
VoidEcucSubFunctionNameDef DcmDspStopRoutineFnc;
VoidEcucSubFunctionNameDef DcmDspRequestResultsRoutineFnc;
DcmDspRoutineInfo DcmDspRoutineInfoRef;
}DcmDspRoutine;
/* For 0x3D */
typedef struct
{
uint32 DcmDspWriteMemoryRangeHigh;
uint32 DcmDspWriteMemoryRangeLow;
uint8 DcmDspWriteMemoryRangeSecurityLevelRef;
uint8 DcmDspWriteMemoryRangeSessionRef;
uint8 AddressingMode;
}DcmDspWriteMemoryRangeInfo;
/* For 0x86 */
typedef struct
{
void(*DcmDspDidRoeActivateFnc)();
uint32 DcmDspDidRoeEventId;
boolean DcmDspRoeInitOnDSC;
uint32 DcmDspRoeInterMessageTime;
uint16 DcmDspRoeMaxEventLength;
uint8 DcmDspRoeMaxNumberOfRetry;
uint16 DcmDspRoeMaxQueueLength;
boolean DcmDspRoeQueueEnabled;
}DcmDspRoe;
#if 0
#define NUM_OF_DTC 11u
#else
/**************************************************************************************************
* Pre-compile parameter
**************************************************************************************************/
extern CONST(uint8, DCM_VARIABLE) gSidMap_1[72];
extern P2CONST(CurrentSidMapType, DCM_VARIABLE, DCM_VARIABLE) gCurrentSidMap;
extern P2CONST(DcmDsdServiceTable, DCM_VARIABLE, DCM_VARIABLE) gCurrentDcmDsdServiceTable;
extern CONST(uint32, DCM_VARIABLE) gCurentDcmDsdServiceTableSize;
/* For 0x10,0x11,0x19,0x27,0x28,0x2C,0x31,0x3E,0x85 0x86 */
extern CONST(DcmDsdSubService, DCM_VARIABLE) gDcmDsdSubService[DCM_NUM_OF_SUB_SERVICE];
/**************************************************************************************************
* Link-compile parameter
**************************************************************************************************/
extern CONST(uint32, DCM_VARIABLE) gDcmDspNonDefaultSessionS3Server;
extern CONST(DcmDspSessionRow, DCM_VARIABLE) gDcmDspSessionRow[KIND_OF_SESSION];
#if(DCM_SERVICE_27_ENABLED==STD_ON)
extern CONST(DcmDspSecurityRow, DCM_VARIABLE) gDcmDspSecurityRow[KIND_OF_SECURITY_LEVEL];
#endif
#if(DCM_SERVICE_22_ENABLED==STD_ON)
extern CONST(Dcm_22_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_22[NUMBER_OF_READ_DID]; /* For 0x22 */
extern CONST(Dcm_DspMaxDidToReadType, DCM_VARIABLE) DcmDspMaxDidToRead;
#endif
#if((DCM_SERVICE_23_ENABLED==STD_ON)|| (DCM_SERVICE_2C_ENABLED==STD_ON)||(DCM_SERVICE_3D_ENABLED==STD_ON))
extern CONST(Dcm_MemoryAddressFormatType, DCM_VARIABLE) gMemoryAddressFormat;
extern CONST(Dcm_MemorySizeFormatType, DCM_VARIABLE) gMemorySizeFormat;
#endif
#if(DCM_SERVICE_23_ENABLED==STD_ON)
extern CONST(DcmDspReadMemoryRangeInfo, DCM_VARIABLE) gDcmDspReadMemoryRangeInfo_23[NUMBER_OF_READ_ADDRESS_SEG];
#endif
#if(DCM_SERVICE_24_ENABLED==STD_ON)
extern CONST(Dcm_24_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_24[NUMBER_OF_READ_DID_24]; /* For 0x24 */
#endif
#if(DCM_SERVICE_2A_ENABLED==STD_ON)
extern CONST(Dcm_2A_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2A[NUMBER_OF_PERIODIC_DID];/* For 0x2A */
#endif
#if(DCM_SERVICE_2C_ENABLED==STD_ON)
extern CONST(Dcm_2C_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2C[NUMBER_OF_DYN_DID]; /* For 0x2C */
#endif
#if(DCM_SERVICE_2E_ENABLED==STD_ON)
extern CONST(Dcm_2E_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2E[NUMBER_OF_WRITE_DID]; /* For 0x2E */
#endif
#if(DCM_SERVICE_2F_ENABLED==STD_ON)
extern CONST(Dcm_2F_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2F[NUMBER_OF_CONTROL_DID]; /* For 0x2F */
#endif
#if(DCM_SERVICE_31_ENABLED==STD_ON)
extern CONST(DcmDspRoutine, DCM_VARIABLE) DcmDspRoutineIdentifierTable_31[NUMBER_OF_RID]; /* For 0x31 */
#endif
#if(DCM_SERVICE_3D_ENABLED==STD_ON)
extern CONST(DcmDspWriteMemoryRangeInfo, DCM_VARIABLE) gDcmDspWriteMemoryRangeInfo_3D[NUMBER_OF_WRITE_ADDRESS_SEG];
#endif
/**************************************************************************************************
* Application Callback Function Prototye
**************************************************************************************************/
#if(DCM_GENERAL_DIAGNOSTIC_REQUEST_CTL==STD_ON)
extern FUNC(Std_ReturnType,DCM_CODE) App_DiagnosticActive(void);
#endif
#if(DCM_COSTOMIZED_SERVCIE_SUPPORTED==STD_ON)
extern FUNC(void,DCM_CODE) App_CustomizedServcie(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
#define NUM_OF_DTC 23u
/* 10 */
extern FUNC(void,DCM_CODE) App_DefaultPre(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Default(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Programming(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Extended_Diagnostic(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Kuwe_Session(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_DefaultPost(Std_ReturnType Result);
extern FUNC(void,DCM_CODE) App_ProgrammingPost(Std_ReturnType Result);
extern FUNC(void,DCM_CODE) App_Extended_DiagnosticPost(Std_ReturnType Result);
extern FUNC(void,DCM_CODE) App_Kuwe_SessionPost(Std_ReturnType Result);
/* 11 */
extern FUNC(void,DCM_CODE) App_HardReset(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_SoftReset(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_HardResetPost(Std_ReturnType Result);
extern FUNC(void,DCM_CODE) App_SoftResetPost(Std_ReturnType Result);
/* 14 */
extern FUNC(void,DCM_CODE) App_ClearDiagnosticInformation(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 19 */
extern FUNC(void,DCM_CODE) App_ReportNumberOfDTCByStatusMask(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_ReportDTCByStatusMask(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_ReportDTCSnapshotRecordByDTCNumber(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_ReportDTCExtendedDataRecordByDTCNumber(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_ReportSupportedDTC(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 22 */
extern FUNC(void,DCM_CODE) App_Read0xF100(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0x01A0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF1A0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xb070(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0x0003_net_type(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0x0005_left_sws(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0x0004_right_sws(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0x0008_right_pick(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xB101_left_menu(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xb073(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xb074(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xb075(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xA030(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF1F2(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF1F1(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF19E(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF194(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF192(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF191(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF188(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF181(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF182(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF180(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF186(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF187(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF189(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF18A(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF18B(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF18C(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF190(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF193(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF195(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF197(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF198(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF199(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Read0xF19D(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 23 */
#if(DCM_SERVICE_23_ENABLED==STD_ON)
extern FUNC(void,DCM_CODE) App_ReadAddress(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
/* 24 */
/* 27 */
extern VAR(uint8, DCM_VARIABLE) gSecurityAcessSequence[KIND_OF_SECURITY_LEVEL];
extern FUNC(void,DCM_CODE) App_Request_Seed_L1(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L1(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Request_Seed_L2(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L2(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Request_Seed_L3(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L3(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Request_Seed_L4(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L4(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Request_Seed_L5(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L5(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Request_Seed_L6(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Send_Key_L6(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 28 */
extern FUNC(void,DCM_CODE) App_EnableRxAndTx(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_EnableRxAndDisableTx(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_DisableRxAndTx(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 2A */
/* 2E */
extern FUNC(void,DCM_CODE) App_Write0x01A0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF1A0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF112(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF190(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF197(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF198(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF199(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF19D(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_Write0xF18C(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
/* 2F */
#if(DCM_SERVICE_2F_ENABLED==STD_ON)
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0x201f_motor(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment201f_motor(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0xff00(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment0xff00(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0x2020(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment0x2020(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0x5001(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment0x5001(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0x3904(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment0x3904(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ReturnControlToEcu0x3905(Dcm_MsgContextType* pMsgContext);
extern FUNC(void,DCM_CODE) App_ShortTermAdjustment0x3905(Dcm_MsgContextType* pMsgContext);
#endif
/* 31 */
#if(DCM_SERVICE_31_ENABLED==STD_ON)
extern VAR(uint8, DCM_VARIABLE) gRountineControlSequence[NUMBER_OF_RID];
extern VAR(uint8, DCM_VARIABLE) gRountineControlDidHandle;
#endif
extern FUNC(void,DCM_CODE) App_StartRoutine0x0206(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x01b0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x01b0(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x04FE(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x04FE(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x0203(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0x0203(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x0203(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x5902(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0x5902(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x5902(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x5903(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0x5903(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x5903(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0x5904(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0x5904(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0x5904(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF30(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF30(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF30(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF31(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF31(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF31(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF32(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF32(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF32(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF33(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF33(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF34(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF34(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF34(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF35(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF35(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF36(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF36(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF37(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF37(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF38(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF38(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF39(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF39(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF39(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xDF3A(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StopRoutine0xDF3A(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_RequestRoutineResults0xDF3A(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_StartRoutine0xFF02(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_WriteAddress(Dcm_MsgContextType* pMsgContext);
/* 3D */
#if(DCM_SERVICE_3D_ENABLED==STD_ON)
extern FUNC(void,DCM_CODE) App_WriteAddress(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
/* 85 */
extern VAR(uint8, DCM_VARIABLE) gDTCSwitch;
extern VAR(uint8, DCM_VARIABLE) DTCStatus[NUM_OF_DTC];
extern FUNC(void,DCM_CODE) App_DTCRecordOn(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_DTCRecordOff(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_DTCRecordOn(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_CODE) App_DTCRecordOff(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
///////修改了源码的宏--适合比亚迪
#define DCM_USE_FOR_BYD
#endif

View File

@ -0,0 +1,156 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
/*******************************************************************************
* Include files
********************************************************************************/
#include "Dcm_Types.h"
#include "Dcm_Cfg.h"
#include "common_cfg.h"
#include "system_config.h"
#include "service_27.h"
CONST(Dcm_DspNonDefaultSessionS3ServerType, DCM_VARIABLE) gDcmDspNonDefaultSessionS3Server=5000;/*Unit:ms*/
CONST(DcmDspSessionRow, DCM_VARIABLE) gDcmDspSessionRow[KIND_OF_SESSION]=
{
{DCM_NO_BOOT, DCM_SESSION_DEFAULT ,50u,5000u},
{DCM_NO_BOOT, DCM_SESSION_PROGRAMMING ,50u,5000u},
{DCM_NO_BOOT, DCM_SESSION_EXTENDED_DIAGNOSTIC ,50u,5000u},
{DCM_NO_BOOT, DCM_SESSION_USERDEFINED1 ,50u,5000u}
};
#if(DCM_SERVICE_27_ENABLED==STD_ON)
//#define DCM_KEY_LEN 4u
CONST(DcmDspSecurityRow, DCM_VARIABLE) gDcmDspSecurityRow[KIND_OF_SECURITY_LEVEL]=
{
{10000u,1u,DCM_KEY_LEN,DCM_SEC_LEV_L1, 0x3u,4u},
{10000u,1u,DCM_KEY_LEN,DCM_SEC_LEV_L2, 0x3u,4u},
{10000u,10000u,DCM_KEY_LEN,DCM_SEC_LEV_L3, 0x3u,4u},
{10000u,10000u,DCM_KEY_LEN,DCM_SEC_LEV_L4, 0x3u,4u},
{10000u,1u,DCM_KEY_LEN,DCM_SEC_LEV_L5, 0x3u,4u},
{10000u,1u,DCM_KEY_LEN,DCM_SEC_LEV_L6, 0x3u,4u},
{10000u,1u,DCM_KEY_LEN,DCM_SEC_LEV_L7, 0x3u,4u}
};
#endif
/* For 0x22 */
#if(DCM_SERVICE_22_ENABLED==STD_ON)
#if(DCM_SERVICE_22_COMBINED_DID==STD_ON)
CONST(Dcm_DspMaxDidToReadType, DCM_VARIABLE) DcmDspMaxDidToRead=1u;
#else
CONST(Dcm_DspMaxDidToReadType, DCM_VARIABLE) DcmDspMaxDidToRead=1u;
#endif
#endif
/* 0x22 */
#if(DCM_SERVICE_22_ENABLED==STD_ON)
CONST(Dcm_22_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_22[NUMBER_OF_READ_DID]=
{
{0xF100u,1u,4u, &App_Read0xF100,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0x01a0u,1u,1u, &App_Read0x01A0,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF1a0u,1u,1u, &App_Read0xF1A0,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xb070u,1u,4u, &App_Read0xb070,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0x0005u,1u,5u, &App_Read0x0005_left_sws,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0x0004u,1u,2u, &App_Read0x0004_right_sws,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0x0008u,1u,5u, &App_Read0x0008_right_pick,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xb101u,1u,5u, &App_Read0xB101_left_menu,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xb075u,1u,1u, &App_Read0xb075,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xa030u,1u,80u, &App_Read0xA030,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF1F2u,1u,14u, &App_Read0xF1F2,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF1F1u,1u,14u, &App_Read0xF1F1,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF19Eu,1u,14u, &App_Read0xF19E,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF194u,1u,9u, &App_Read0xF194,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF192u,1u,24u, &App_Read0xF192,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF191u,1u,14u, &App_Read0xF191,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF188u,1u,14u, &App_Read0xF188,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF181u,1u,15u, &App_Read0xF181,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF182u,1u,14u, &App_Read0xF182,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF180u,1u,9u, &App_Read0xF180,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF186u,1u,1u, &App_Read0xF186,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF187u,1u,14u, &App_Read0xF187,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF189u,1u,16u, &App_Read0xF189,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF18Au,1u,6u, &App_Read0xF18A,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF18Bu,1u,4u, &App_Read0xF18B,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF18Cu,1u,15u, &App_Read0xF18C,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF190u,1u,17u, &App_Read0xF190,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF193u,1u,5u, &App_Read0xF193,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF195u,1u,6u, &App_Read0xF195,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF197u,1u,8u, &App_Read0xF197,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF198u,1u,20u, &App_Read0xF198,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF199u,1u,4u, &App_Read0xF199,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0xF19Du,1u,4u, &App_Read0xF19D,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
{0x0003u,1u,5u, &App_Read0x0003_net_type,(DCM_SEC_LEV_ALL), (DCM_SESSION_DEFAULT|DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_AND_FUNCTIONAL_REQ_SUPPORTED},
};
#endif
/* 0x2E */
#if(DCM_SERVICE_2E_ENABLED==STD_ON)
CONST(Dcm_2E_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2E[NUMBER_OF_WRITE_DID]=
{
{0x01A0u,1u,1u, &App_Write0x01A0,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF1A0u,1u,1u, &App_Write0xF1A0,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF112u,1u,8u, &App_Write0xF112,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF190u,1u,17u, &App_Write0xF190,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF197u,1u,8u, &App_Write0xF197,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF198u,1u,20u, &App_Write0xF198,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF199u,1u,4u, &App_Write0xF199,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},
{0xF19Du,1u,4u, &App_Write0xF19D,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_PROGRAMMING|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED} ,
{0xF18Cu,1u,15u, &App_Write0xF18C,DCM_SEC_LEV_SL_39B, (DCM_SESSION_EXTENDED_DIAGNOSTIC),PHYSICAL_REQ_SUPPORTED}
};
#endif
/* 0x2F */
#if(DCM_SERVICE_2F_ENABLED==STD_ON)
CONST(Dcm_2F_ServiceInfoType, DCM_VARIABLE) gDcmDsdSubService_2F[NUMBER_OF_CONTROL_DID]=
{
{0xff00u,DCM_SEC_LEV_SL_ALL,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED,{0u,2u,0u},&App_ReturnControlToEcu0xff00,DCM_NULL,DCM_NULL,&App_ShortTermAdjustment0xff00,DCM_NULL},
{0x2020u,DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED,{0u,1u,0u},&App_ReturnControlToEcu0x2020,DCM_NULL,DCM_NULL,&App_ShortTermAdjustment0x2020,DCM_NULL},
{0x5001u,DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED,{0u,1u,0u},&App_ReturnControlToEcu0x5001,DCM_NULL,DCM_NULL,&App_ShortTermAdjustment0x5001,DCM_NULL},
};
#endif
/* 0x31 */
#if(DCM_SERVICE_31_ENABLED==STD_ON)
CONST(DcmDspRoutine, DCM_VARIABLE) DcmDspRoutineIdentifierTable_31[NUMBER_OF_RID]=
{
{0x0203u,1u,0u,1u,&App_StartRoutine0x0203,&App_StopRoutine0x0203,&App_RequestRoutineResults0x0203,{{DCM_SEC_LEV_ALL,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{1u},{0u},{1u},{0u},{1u}}},
#if 0
{0x0206u,1u,0u,1u,&App_StartRoutine0x0206,DCM_NULL,DCM_NULL,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{0u},{0u},{0u},{0u},{1u}}},
{0x01b0u,1u,0u,1u,&App_StartRoutine0x01b0,DCM_NULL,&App_RequestRoutineResults0x01b0,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC),PHYSICAL_REQ_SUPPORTED},{16u},{1u},{1u},{16u},{1u}}},
{0x04FEu,1u,0u,1u,&App_StartRoutine0x04FE,DCM_NULL,&App_RequestRoutineResults0x04FE,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{1u},{1u},{1u},{1u},{1u}}},
{0x5902u,1u,0u,1u,&App_StartRoutine0x5902,&App_StopRoutine0x5902,&App_RequestRoutineResults0x5902,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{1u},{0u},{1u},{0u},{1u}}},
{0x5903u,1u,0u,1u,&App_StartRoutine0x5903,&App_StopRoutine0x5903,&App_RequestRoutineResults0x5903,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{1u},{0u},{1u},{0u},{1u}}},
{0x5904u,1u,0u,1u,&App_StartRoutine0x5904,&App_StopRoutine0x5904,&App_RequestRoutineResults0x5904,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{1u},{0u},{1u},{0u},{1u}}},
{0xDF30u,1u,0u,1u,&App_StartRoutine0xDF30,&App_StopRoutine0xDF30,&App_RequestRoutineResults0xDF30,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{7u},{0u},{1u},{2u},{1u}}},
{0xDF31u,1u,0u,1u,&App_StartRoutine0xDF31,&App_StopRoutine0xDF31,&App_RequestRoutineResults0xDF31,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{5u},{0u},{1u},{2u},{1u}}},
{0xDF32u,1u,0u,1u,&App_StartRoutine0xDF32,&App_StopRoutine0xDF32,&App_RequestRoutineResults0xDF32,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{9u},{0u},{1u},{2u},{1u}}},
{0xDF33u,1u,0u,1u,&App_StartRoutine0xDF33,DCM_NULL,&App_RequestRoutineResults0xDF33,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{12u},{0u},{0u},{0u},{1u}}},
{0xDF34u,1u,0u,1u,&App_StartRoutine0xDF34,&App_StopRoutine0xDF34,&App_RequestRoutineResults0xDF34,{{DCM_SEC_LEV_SL_39B,(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1),PHYSICAL_REQ_SUPPORTED},{2u},{0u},{1u},{2u},{1u}}},
{0xDF35u,1u,0u,1u,&App_StartRoutine0xDF35,DCM_NULL,&App_RequestRoutineResults0xDF35,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{19u},{0u},{0u},{2u},{1u}}},
{0xDF36u,1u,0u,1u,&App_StartRoutine0xDF36,DCM_NULL,&App_RequestRoutineResults0xDF36,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{5u},{0u},{0u},{4u},{1u}}},
{0xDF37u,1u,0u,1u,&App_StartRoutine0xDF37,DCM_NULL,&App_RequestRoutineResults0xDF37,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{1u},{0u},{0u},{8u},{1u}}},
{0xDF38u,1u,0u,1u,&App_StartRoutine0xDF38,DCM_NULL,&App_RequestRoutineResults0xDF38,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{1u},{0u},{0u},{6u},{1u}}},
{0xDF39u,1u,0u,1u,&App_StartRoutine0xDF39,&App_StopRoutine0xDF39,&App_RequestRoutineResults0xDF39,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{19u},{0u},{1u},{2u},{1u}}},
{0xDF3Au,1u,0u,1u,&App_StartRoutine0xDF3A,&App_StopRoutine0xDF3A,&App_RequestRoutineResults0xDF3A,{{DCM_SEC_LEV_SL_39B,DCM_SESSION_USERDEFINED1,PHYSICAL_REQ_SUPPORTED},{19u},{0u},{1u},{1u},{1u}}},
{0xFF02u,1u,0u,1u,&App_StartRoutine0xFF02,DCM_NULL,DCM_NULL,{{(DCM_SEC_LEV_SL_39B),(DCM_SESSION_EXTENDED_DIAGNOSTIC|DCM_SESSION_USERDEFINED1|DCM_SESSION_PROGRAMMING),PHYSICAL_REQ_SUPPORTED},{0u},{0u},{0u},{0u},{1u}}},
#endif
};
#endif

View File

@ -0,0 +1,340 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _CCP_H_
#define _CCP_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Ccp_Cfg.h"
#include "CanIf.h"
/*******************************************************************************
* Macro definition
*******************************************************************************/
/* Declare CCP-protocol version */
#define CCP_VERSION_MAJOR ((uint8)(0x02u))
#define CCP_VERSION_MINOR ((uint8)(0x01u))
/* Resource Mask */
#define CCP_RM_ALL_LOCKED ((uint8)(0x00u))
#define CCP_RM_CAL ((uint8)(0x01u))
#define CCP_RM_DAQ ((uint8)(0x02u))
#define CCP_RM_PGM ((uint8)(0x40u))
/* CCP Status */
#define CCP_DISCONNECTED ((uint8)(0x00u))
#define CCP_CONNECTED ((uint8)(0x20u))
#define CCP_TMP_DISCONNECTED ((uint8)(0x10u))
#define CCP_RESUME ((uint8)(0x04u))
#define CCP_STORE ((uint8)(0x40u))
#define CCP_RUN ((uint8)(0x80u))
/* Basic Commands */
#define CCP_CONNECT ((uint8)(0x01u))
#define CCP_SET_MTA ((uint8)(0x02u))
#define CCP_DNLOAD ((uint8)(0x03u))
#define CCP_UPLOAD ((uint8)(0x04u))
#define CCP_TEST ((uint8)(0x05u))
#define CCP_START_STOP ((uint8)(0x06u))
#define CCP_DISCONNECT ((uint8)(0x07u))
#define CCP_START_STOP_ALL ((uint8)(0x08u))
#define CCP_SHORT_UPLOAD ((uint8)(0x0Fu))
#define CCP_GET_DAQ_SIZE ((uint8)(0x14u))
#define CCP_SET_DAQ_PTR ((uint8)(0x15u))
#define CCP_WRITE_DAQ ((uint8)(0x16u))
#define CCP_EXCHANGE_ID ((uint8)(0x17u))
#define CCP_GET_CCP_VERSION ((uint8)(0x1Bu))
#define CCP_DNLOAD6 ((uint8)(0x23u))
/* Optional Commands */
#define CCP_GET_CAL_PAGE ((uint8)(0x09u))
#define CCP_SET_S_STATUS ((uint8)(0x0Cu))
#define CCP_GET_S_STATUS ((uint8)(0x0Du))
#define CCP_BUILD_CHKSUM ((uint8)(0x0Eu))
#define CCP_CLEAR_MEMORY ((uint8)(0x10u))
#define CCP_SET_CAL_PAGE ((uint8)(0x11u))
#define CCP_GET_SEED ((uint8)(0x12u))
#define CCP_UNLOCK ((uint8)(0x13u))
#define CCP_PROGRAM ((uint8)(0x18u))
#define CCP_MOVE ((uint8)(0x19u))
#define CCP_DIAG_SERVICE ((uint8)(0x20u))
#define CCP_ACTION_SERVICE ((uint8)(0x21u))
#define CCP_PROGRAM6 ((uint8)(0x22u))
/* Response ID */
#define CCP_RESPONSE_CODE ((uint8)(0xFFu))
/* Error codes */
#define CCP_NO_ERROR ((uint8)(0x00u))
#define CCP_DAQ_OVERLOAD ((uint8)(0x01u))
#define CCP_COMMAND_BUSY ((uint8)(0x10u))
#define CCP_DAQ_BUSY ((uint8)(0x11u))
#define CCP_INTERNAL_TIMEOUT ((uint8)(0x12u))
#define CCP_KEY_REQUEST ((uint8)(0x18u))
#define CCP_SESSION_REQUEST ((uint8)(0x19u))
#define CCP_COLD_START_REQ ((uint8)(0x20u))
#define CCP_CAL_INIT_REQ ((uint8)(0x21u))
#define CCP_DAQ_INIT_REQ ((uint8)(0x22u))
#define CCP_CODE_UPDATE_REQ ((uint8)(0x23u))
#define CCP_UNKNOWN_COMMAND ((uint8)(0x30u))
#define CCP_COM_SYNTAX_ERROR ((uint8)(0x31u))
#define CCP_OUT_OF_RANGE ((uint8)(0x32u))
#define CCP_ACCESS_DENIED ((uint8)(0x33u))
#define CCP_OVERLOAD ((uint8)(0x34u))
#define CCP_ACCESS_LOCKED ((uint8)(0x35u))
#define CCP_RESOURCE_USELESS ((uint8)(0x36u))
/* Session Status */
#define CCP_DEFAULT_SESSION ((uint8)(0x00u))
#define CCP_SESSION_CAL ((uint8)(0x01u))
#define CCP_SESSION_DAQ ((uint8)(0x02u))
#define CCP_SESSION_RESUME ((uint8)(0x04u))
#define CCP_SESSION_STORE ((uint8)(0x40u))
#define CCP_SESSION_RUN ((uint8)(0x80u))
/* For Disconnect */
#define CCP_END_SESSION ((uint8)(0x01u))
#define CCP_TEM_END_SESSION ((uint8)(0x00u))
/* For Exchange ID */
#define CCP_ASCII_TYPE ((uint8)(0x00u))
/* For Upload */
#define CCP_UPLOAD_MAX ((uint8)(0x05u))
/* For Get DAQ Size */
#define CCP_UNDEFINED_DAQ ((uint8)(0x00u))
#define CCP_NO_FIRST_PID ((uint8)(0x00u))
/* For Get_S_Status */
#define CCP_NO_ADDITIONAL_INFO ((uint8)(0x00u))
/* For Start_Stop */
#define CCP_STOP_DAQ ((uint8)(0x00u))
#define CCP_START_DAQ ((uint8)(0x01u))
#define CCP_PREPARE_DAQ ((uint8)(0x02u))
/* For Start_Stop_All */
#define CCP_STOP_DAQ_ALL ((uint8)(0x00u))
#define CCP_START_DAQ_ALL ((uint8)(0x01u))
/* For Program */
#define CCP_PROGRAM_MAX_LENGTH ((uint8)(0x05u))
#define CCP_PROGRAM6_LENGTH ((uint8)(0x06u))
/* For Seed&Key */
#define CCP_NEED_UNLOCK ((uint8)(0x01u))
#define CCP_NO_UNLOCK ((uint8)(0x00u))
#define CCP_RIGHT_KEY ((uint8)(0x00u))
#define CCP_WRONG_KEY ((uint8)(0x01u))
/* For Checksum */
#define CCP_CHECKSUM_RESULT_BYTES ((uint8)(0x02u))
#define CCP_CRC_TABLE_LENGTH (256u)
/* Other Definition */
#define CCP_COMMAND_CODE (CCP_RX_Data[CCP_Index_0])
#define CCP_CTR (CCP_RX_Data[CCP_Index_1])
#define CCP_CAN_LENGTH ((uint8)(8u))
#define CCP_MAX_ELEMENT ((uint8)(7u))
#define CCP_READ_BUF_LENGTH ((uint8)(5u))
#define CCP_DEFAULT_ZERO ((uint8)(0x00u))
#define CCP_DEFAULT_ZERO_16 ((uint16)(0x00u))
#define CCP_DEFAULT_ZERO_32 (0uL)
#define CCP_ALL_BITS_SET_8 ((uint8)0xFFu)
#define CCP_ALL_BITS_SET_16 ((uint16)0xFFFFu)
#define CCP_NO_PRESCALER ((uint16)(1u))
#define CCP_DAQ_CHANNEL_DEFAULT ((uint8)(0xFFu))
/* Index Order Definition */
#define CCP_Index_0 (0u)
#define CCP_Index_1 (1u)
#define CCP_Index_2 (2u)
#define CCP_Index_3 (3u)
#define CCP_Index_4 (4u)
#define CCP_Index_5 (5u)
#define CCP_Index_6 (6u)
#define CCP_Index_7 (7u)
/* Offset Definition */
#define CCP_OffSet_0 ((uint8)(0u))
#define CCP_OffSet_1 ((uint8)(1u))
#define CCP_OffSet_2 ((uint8)(2u))
#define CCP_OffSet_3 ((uint8)(3u))
#define CCP_OffSet_4 ((uint8)(4u))
#define CCP_OffSet_5 ((uint8)(5u))
#define CCP_OffSet_6 ((uint8)(6u))
#define CCP_OffSet_7 ((uint8)(7u))
/* Normal Value Definition */
#define CCP_UINT8_0 ((uint8)(0u))
#define CCP_UINT8_1 ((uint8)(1u))
#define CCP_UINT8_2 ((uint8)(2u))
#define CCP_UINT8_3 ((uint8)(3u))
#define CCP_UINT8_4 ((uint8)(4u))
#define CCP_UINT8_5 ((uint8)(5u))
#define CCP_UINT8_6 ((uint8)(6u))
#define CCP_UINT8_7 ((uint8)(7u))
/* Definition for bit moving */
#define CCP_MOVE_BITS_1 (1u)
#define CCP_MOVE_BITS_8 (8u)
#define CCP_MOVE_BITS_16 (16u)
#define CCP_MOVE_BITS_24 (24u)
/* Pointer to Null Definitions */
#define CCP_NULL (0u)
/*******************************************************************************
* Macro Function
*******************************************************************************/
#ifdef CCP_MOTOROLA
#define CCP_Get_First_Byte(x) ((uint8)((x)>> 8u))
#define CCP_Get_Second_Byte(x) ((uint8)((x)&((uint16)0x00FFu)))
#define CCP_Make_16Bits(x,y) ((uint16)((((uint16)(x))<<((uint16)8u))|((uint16)(y))))
#define CCP_Get_1Byte(x) ((uint8)(((x)>>24u) & ((0x00FFuL))))
#define CCP_Get_2Byte(x) ((uint8)(((x)>>16u) & (0x00FFuL)))
#define CCP_Get_3Byte(x) ((uint8)(((x)>> 8u) & (0x00FFuL)))
#define CCP_Get_4Byte(x) ((uint8)((x) & (0x00FFuL)))
#else
#define CCP_Get_First_Byte(x) ((uint8)((x)&(0x00FFu)))
#define CCP_Get_Second_Byte(x) ((uint8)((x)>>((uint16)8u)))
#define CCP_Make_16Bits(x,y) ((uint16)((((uint16)(y))<<((uint16)8u))|((uint16)(x))))
#define CCP_Get_1Byte(x) ((uint8)((x)& (0x00FFu)))
#define CCP_Get_2Byte(x) ((uint8)(((x)>>8u)& (0x00FFu)))
#define CCP_Get_3Byte(x) ((uint8)(((x)>>16u)& (0x00FFu)))
#define CCP_Get_4Byte(x) ((uint8)((x)>>24u))
#endif
#ifdef CCP_DAQ_REQUEST
/*******************************************************************************
* Typedef
*******************************************************************************/
typedef struct
{
uint8 flag; /* DAQ Request flag */
uint8 channel; /* event channel of DAQ */
uint8 prepare; /* Prepare Flag */
}CCP_DAQ_strcut;
#endif
/*******************************************************************************
* Global Variable Declaration
*******************************************************************************/
#define CCP_START_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
#ifdef CCP_16BITS_ADDRESS_MODE
extern VAR(uint8,CCP_PUBLIC_CODE) CCP_PGM5_Flag;
#endif
#define CCP_STOP_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
/*******************************************************************************
* Global Function Declaration
*******************************************************************************/
#define CCP_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(void, CCP_PUBLIC_CODE) Ccp_RxIndication
(
PduIdType RxPudId,
P2CONST(PduInfoType,AUTOMATIC,CAN_APPL_DATA) PduInfoPtr
);
extern FUNC(void, CCP_PUBLIC_CODE) Ccp_Init
(
void
);
extern FUNC(void, CCP_PUBLIC_CODE) Ccp_Event_DAQ_Transmit
(
const uint8 event_channel
);
extern FUNC(void, CCP_PUBLIC_CODE) Ccp_TxConfirmation
(
PduIdType PduId
);
extern FUNC(void, CCP_PUBLIC_CODE) Ccp_Checksum_Background
(
void
);
extern Std_ReturnType App_Ccp_FlashErase
(
uint32 Flash_Erase_Ptr,
uint32 size
);
extern Std_ReturnType App_Ccp_FlashWrite
(
uint8* data,
uint32 Flash_Write_Ptr,
uint32 size
);
extern Std_ReturnType App_Ccp_FlashRead
(
uint8* data,
uint32 Flash_Read_Ptr,
uint32 size
);
#ifdef CCP_CAL_PAGE
extern Std_ReturnType App_Ccp_Select_Page_Indication
(
uint8 page_index
);
#endif
#ifdef CCP_STORE_CAL_DATA
extern void App_Ccp_Store_Cal_Data
(
void
);
#endif
extern uint32 App_Ccp_GetSeed
(
uint8 Resource_Mask
);
extern uint8 App_Ccp_Unlock
(
uint32 key
);
#define CCP_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,152 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _CCP_CFG_H_
#define _CCP_CFG_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "can_cfg.h"
#include "CanIf.h"
#include "ComStack_Types.h"
/*******************************************************************************
* Configuration Macro
*******************************************************************************/
/*******************************************************************************
* Node ID Config
*******************************************************************************/
#define CCP_NODE_ID ((uint16)(0xa0a0u))
#define CCP_BROADCAST_ID ((uint16)(0xffffu))
/*******************************************************************************
* Seed&Key Config
*******************************************************************************/
/* Seed&Key Enable */
#define CCP_SEED_KEY
/*******************************************************************************
* DAQ Config
*******************************************************************************/
/* DAQ Enable */
#define CCP_DAQ_REQUEST
/* Max Number of DAQ */
#define CCP_MAX_DAQ ((uint8)(1u))
/* Max Number of ODT */
#define CCP_MAX_ODT ((uint8)(3u))
/* Max Number of ODT buffer for DAQ function */
#define CCP_ODT_BUF_NUM ((uint8)(3u))
/*******************************************************************************
* Handle Config
*******************************************************************************/
/* Handle Index between CanIf and CCP */
#define CCP_DTO_INDEX ((uint16)(7u))
#define CCP_RX_UL_HANDLE ((uint16)(0u))
#define CCP_TX_UL_HANDLE ((uint16)(0u))
/*******************************************************************************
* Flash Config
*******************************************************************************/
/* Flash Enable */
#define CCP_FLASH
/* Flash range for Upload & Short Upload Command */
#define CCP_FLASH_MIN_ADDR (0x004000uL)
#define CCP_FLASH_MAX_ADDR (0x004fffuL)
/*******************************************************************************
* Checksum Config
*******************************************************************************/
/* Checksum Enable */
#define CCP_CHECKSUM
/* Checksum Block */
#define CCP_CHECKSUM_BLOCKSIZE (256uL)
/* Checksum calculation algorithm */
/*******************************************************************************
* Byte Order Config
*******************************************************************************/
#define CCP_MOTOROLA
/*******************************************************************************
* ECU Name Config
*******************************************************************************/
#define CCP_ECU_NAME_LENGTH (5u)
#define CCP_ECU_NAME "PEPS"
/*******************************************************************************
* CCP_MTA Config
*******************************************************************************/
/* Max number of CCP_MTA */
#define CCP_MTA_NUM ((uint8)(2u))
/*******************************************************************************
* Special Config
*******************************************************************************/
/* Calculation Global_Address */
#define CCP_Global_Address(a) (a)
/* FAR Pointer */
#define CCP_FAR *
/* Config for special chips which there are 16bits data in an address unit */
/* Such as some chips of TI */
/*******************************************************************************
* Interrupt Config
*******************************************************************************/
#ifndef __OSEKOS_SEL_ON__
#define Ccp_ccr_alloc() Can_ccr_alloc()
#endif
#define Ccp_DisableInterrupt() CANIF_ENTER_CRITICAL_SECTION()
#define Ccp_EnableInterrupt() CANIF_LEAVE_CRITICAL_SECTION()
/*******************************************************************************
* Special Config for INCA
*******************************************************************************/
/* Page Enable */
#define CCP_CAL_PAGE
/* for CAL PAGE */
#define CCP_REF_PAGE_ADDR (0x4000uL)
#define CCP_WORK_PAGE_ADDR (0x40004000uL)
#define CCP_REF_PAGE_INDEX ((uint8)0x01u)
#define CCP_WORK_PAGE_INDEX ((uint8)0x02u)
#define CCP_INIT_PAGE_INDEX CCP_WORK_PAGE_INDEX
/* Store CAL Enable */
#define CCP_STORE_CAL_DATA
/*******************************************************************************
* Configuration Variable Declaration
*******************************************************************************/
#define CCP_START_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
extern CONST(uint8,CCP_CONFIG_CONST) Ccp_Station_ID[CCP_ECU_NAME_LENGTH];
#define CCP_STOP_SEC_CONFIG_DATA_UNSPECIFIED
#include "MemMap.h"
#endif

View File

@ -0,0 +1,221 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name: Com.h
********************************************************************************
* Project/Product: COM programme
* Title: com.h
* Author: bo.liu 2010-2011
* donger.yang 2012-
********************************************************************************
* Description: Defination of Interface for Application Layer
*
********************************************************************************
* Limitations: None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -------------------
* 01.00.00 10/08/2010 bo.liu N/A Original
* 01.00.01 04/07/2011 bo.liu N/A HrAsrCom110407-01
* 01.00.02 05/08/2011 bo.liu N/A HrAsrCom110508-01
* 01.00.03 05/20/2011 bo.liu N/A HrAsrCom110520-01
* 01.01.00 03/05/2012 donger.yang N/A HrAsrCom120305-01
* 02.00.00 05/03/2012 donger.yang N/A HrAsrCom120503-01
* 02.01.00 07/01/2012 donger.yang N/A HrAsrCom120701-01
* 02.01.01 07/12/2012 donger.yang N/A HrAsrCom120712-01
* 02.01.02 07/22/2012 donger.yang N/A HrAsrCom120722-01
* 02.01.03 08/01/2012 donger.yang N/A HrAsrCom120801-01
* 02.01.04 08/10/2012 donger.yang N/A HrAsrCom120810-01
* 02.01.05 08/14/2012 donger.yang N/A HrAsrCom120814-01
* 02.01.06 08/17/2012 donger.yang N/A HrAsrCom120817-01
* 02.01.07 08/22/2012 donger.yang N/A HrAsrCom120822-01
* 02.01.08 08/25/2012 donger.yang N/A HrAsrCom120825-01
* 02.01.09 09/04/2012 donger.yang N/A HrAsrCom120904-01
* 02.02.00 09/11/2012 donger.yang N/A HrAsrCom120911-01
* 02.02.01 10/10/2012 donger.yang N/A HrAsrCom121010-01
* 02.02.02 10/17/2012 donger.yang N/A HrAsrCom121017-01
* 02.02.03 10/19/2012 donger.yang N/A HrAsrCom121019-01
* 02.02.04 10/22/2012 donger.yang N/A HrAsrCom121022-01
* 03.00.00 11/08/2012 donger.yang N/A HrAsrCom121108-01
* 03.00.01 01/06/2013 donger.yang N/A HrAsrCom130106-01
* 03.00.02 03/25/2013 donger.yang N/A HrAsrCom130325-01
* 03.00.03 05/03/2013 donger.yang N/A HrAsrCom130503-01
* 03.00.04 06/08/2013 donger.yang N/A HrAsrCom130608-01
* 03.00.05 07/30/2013 donger.yang N/A HrAsrCom130730-01
* 03.00.06 08/26/2013 donger.yang N/A HrAsrCom130826-01
********************************************************************************
*END_FILE_HDR*/
#ifndef _COM_H_
#define _COM_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "ComStack_Types.h"
#include "Com_Types.h"
#include "Com_Cfg.h"
/*******************************************************************************
* Function Declaration
*******************************************************************************/
#define COM_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(void, COM_PUBLIC_CODE) Com_Init
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_IpduGroupControl
(
Com_IpduGroupVector IpduGroupVector,
boolean Initialize
);
#if (COM_TXIPDUNUM >= 1u)
extern FUNC(void, COM_PUBLIC_CODE) Com_MainFunctionTx
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_TxStart
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_TxStop
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_TriggerIPDUSend
(
PduIdType PduId
);
extern FUNC(void, COM_PUBLIC_CODE) Com_SetSendRequest
(
Com_SignalIdType ComTxSignalId
);
extern FUNC(void, COM_PUBLIC_CODE) Com_StartTxIpdu
(
PduIdType ComTxPduId
);
extern FUNC(void, COM_PUBLIC_CODE) Com_StopTxIpdu
(
PduIdType ComTxPduId
);
extern FUNC(uint8, COM_PUBLIC_CODE) Com_GetTxIpduStatus
(
PduIdType ComTxPduId
);
/*Ôö¼ÓEXTº¯Êý*/
extern FUNC(uint8, COM_PUBLIC_CODE) Com_SendSignalExt
(
Com_SignalIdType ComTxSignalId,
P2CONST(void, COM_APPL_DATA, COM_AUTOMOTIVE) SignalDataPtr
);
extern FUNC(uint8, COM_PUBLIC_CODE) Com_SendSignal
(
Com_SignalIdType ComTxSignalId,
P2CONST(void, COM_APPL_DATA, COM_AUTOMOTIVE) SignalDataPtr
);
/*#if (COM_TXIPDUNUM >= 1u)*/
#endif
#if (COM_RXIPDUNUM >= 1u)
extern FUNC(void, COM_PUBLIC_CODE) Com_MainFunctionRx
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_RxStart
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_RxStop
(
void
);
extern FUNC(void, COM_PUBLIC_CODE) Com_StartRxIpdu
(
PduIdType ComRxPduId
);
extern FUNC(void, COM_PUBLIC_CODE) Com_StopRxIpdu
(
PduIdType ComRxPduId
);
extern FUNC(uint8, COM_PUBLIC_CODE) Com_GetRxIpduStatus
(
PduIdType ComRxPduId
);
extern FUNC(uint16, COM_PUBLIC_CODE) Com_GetRxIpduLength
(
PduIdType ComRxPduId
);
extern FUNC(uint8, COM_PUBLIC_CODE) Com_ReceiveSignal
(
Com_SignalIdType ComRxSignalId,
P2VAR(void, COM_APPL_DATA, COM_AUTOMOTIVE) SignalDataPtr
);
/*#if (COM_RXIPDUNUM >= 1u)*/
#endif
#ifdef COM_ENABLE_ROUTESIGNAL
#if( (COM_TXIPDUNUM >= 1u) && (COM_RXIPDUNUM >= 1u) && \
(COM_GWIPDUNUM >=1u) && (COM_GWSIGNUM >= 1u) )
extern FUNC(void, COM_PUBLIC_CODE) Com_MainFunctionRouteSignals
(
void
);
/*
#if( (COM_TXIPDUNUM >= 1u) && (COM_RXIPDUNUM >= 1u) && \
(COM_GWIPDUNUM >=1u) && (COM_GWSIGNUM >= 1u) )
*/
#endif
/*#ifdef COM_ENABLE_ROUTESIGNAL*/
#endif
void Com_RxTimeOutMonitoringDisable(void);
void Com_RxTimeOutMonitoringEnable(void);
#define COM_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,133 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name: Com_Cbk.h
********************************************************************************
* Project/Product: COM programme
* Title: Com_Cbk.h
* Author: bo.liu 2010-2011
* donger.yang 2012-
********************************************************************************
* Description: Defination of Interface for Application Layer
*
********************************************************************************
* Limitations: None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -------------------
* 01.00.00 10/08/2010 bo.liu N/A Original
* 01.00.01 04/07/2011 bo.liu N/A HrAsrCom110407-01
* 01.00.02 05/08/2011 bo.liu N/A HrAsrCom110508-01
* 01.00.03 05/20/2011 bo.liu N/A HrAsrCom110520-01
* 01.01.00 03/05/2012 donger.yang N/A HrAsrCom120305-01
* 02.00.00 05/03/2012 donger.yang N/A HrAsrCom120503-01
* 02.01.00 07/01/2012 donger.yang N/A HrAsrCom120701-01
* 02.01.01 07/12/2012 donger.yang N/A HrAsrCom120712-01
* 02.01.02 07/22/2012 donger.yang N/A HrAsrCom120722-01
* 02.01.03 08/01/2012 donger.yang N/A HrAsrCom120801-01
* 02.01.04 08/10/2012 donger.yang N/A HrAsrCom120810-01
* 02.01.05 08/14/2012 donger.yang N/A HrAsrCom120814-01
* 02.01.06 08/17/2012 donger.yang N/A HrAsrCom120817-01
* 02.01.07 08/22/2012 donger.yang N/A HrAsrCom120822-01
* 02.01.08 08/25/2012 donger.yang N/A HrAsrCom120825-01
* 02.01.09 09/04/2012 donger.yang N/A HrAsrCom120904-01
* 02.02.00 09/11/2012 donger.yang N/A HrAsrCom120911-01
* 02.02.01 10/10/2012 donger.yang N/A HrAsrCom121010-01
* 02.02.02 10/17/2012 donger.yang N/A HrAsrCom121017-01
* 02.02.03 10/19/2012 donger.yang N/A HrAsrCom121019-01
* 02.02.04 10/22/2012 donger.yang N/A HrAsrCom121022-01
* 03.00.00 11/08/2012 donger.yang N/A HrAsrCom121108-01
* 03.00.01 01/06/2013 donger.yang N/A HrAsrCom130106-01
* 03.00.02 03/25/2013 donger.yang N/A HrAsrCom130325-01
* 03.00.03 05/03/2013 donger.yang N/A HrAsrCom130503-01
* 03.00.04 06/08/2013 donger.yang N/A HrAsrCom130608-01
* 03.00.05 07/30/2013 donger.yang N/A HrAsrCom130730-01
* 03.00.06 08/26/2013 donger.yang N/A HrAsrCom130826-01
********************************************************************************
*END_FILE_HDR*/
#ifndef _COM_CBK_H_
#define _COM_CBK_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Com.h"
/*******************************************************************************
* Function Declaration
*******************************************************************************/
#define COM_START_SEC_PUBLIC_CODE
#include "MemMap.h"
#if (COM_TXIPDUNUM >= 1u)
extern FUNC(void, COM_PUBLIC_CODE) Com_TxConfirmation
(
PduIdType TxPduId
);
extern FUNC(BufReq_ReturnType, COM_PUBLIC_CODE) Com_CopyTxData
(
PduIdType PduId,
P2VAR(PduInfoType, COM_APPL_DATA, COM_AUTOMOTIVE) PduInfoPtr,
P2VAR(RetryInfoType, COM_APPL_DATA, COM_AUTOMOTIVE) RetryInfoPtr,
P2VAR(PduLengthType, COM_APPL_DATA, COM_AUTOMOTIVE) TxDataCntPtr
);
extern FUNC(void, COM_PUBLIC_CODE) Com_TpTxConfirmation
(
PduIdType PduId,
NotifResultType Result
);
/*#if (COM_TXIPDUNUM >= 1u)*/
#endif
#if (COM_RXIPDUNUM >= 1u)
extern FUNC(void, COM_PUBLIC_CODE) Com_RxIndication
(
PduIdType RxPduId,
P2CONST(PduInfoType, COM_APPL_DATA, COM_AUTOMOTIVE) PduInfoPtr
);
extern FUNC(BufReq_ReturnType, COM_PUBLIC_CODE) Com_StartOfReception
(
PduIdType ComRxPduId,
PduLengthType TpSduLength,
P2VAR(PduLengthType, COM_APPL_DATA, COM_AUTOMOTIVE) RxBufferSizePtr
);
extern FUNC(BufReq_ReturnType, COM_PUBLIC_CODE) Com_CopyRxData
(
PduIdType PduId,
P2CONST(PduInfoType, COM_APPL_DATA, COM_AUTOMOTIVE) PduInfoPointer,
P2VAR(PduLengthType, COM_APPL_DATA, COM_AUTOMOTIVE) RxBufferSizePtr
);
extern FUNC(void, COM_PUBLIC_CODE) Com_TpRxIndication
(
PduIdType PduId,
NotifResultType Result
);
/*#if (COM_RXIPDUNUM >= 1u)*/
#endif
#define COM_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,201 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name: Com_Type.h
********************************************************************************
* Project/Product: COM programme
* Title: Com_Type.h
* Author: bo.liu 2010-2011
* donger.yang 2012-
********************************************************************************
* Description: Defination of Interface for Application Layer
*
********************************************************************************
* Limitations: None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* ------- ---------- ---------- ------ -------------------
* 01.00.00 10/08/2010 bo.liu N/A Original
* 01.00.01 04/07/2011 bo.liu N/A HrAsrCom110407-01
* 01.00.02 05/08/2011 bo.liu N/A HrAsrCom110508-01
* 01.00.03 05/20/2011 bo.liu N/A HrAsrCom110520-01
* 01.01.00 03/05/2012 donger.yang N/A HrAsrCom120305-01
* 02.00.00 05/03/2012 donger.yang N/A HrAsrCom120503-01
* 02.01.00 07/01/2012 donger.yang N/A HrAsrCom120701-01
* 02.01.01 07/12/2012 donger.yang N/A HrAsrCom120712-01
* 02.01.02 07/22/2012 donger.yang N/A HrAsrCom120722-01
* 02.01.03 08/01/2012 donger.yang N/A HrAsrCom120801-01
* 02.01.04 08/10/2012 donger.yang N/A HrAsrCom120810-01
* 02.01.05 08/14/2012 donger.yang N/A HrAsrCom120814-01
* 02.01.06 08/17/2012 donger.yang N/A HrAsrCom120817-01
* 02.01.07 08/22/2012 donger.yang N/A HrAsrCom120822-01
* 02.01.08 08/25/2012 donger.yang N/A HrAsrCom120825-01
* 02.01.09 09/04/2012 donger.yang N/A HrAsrCom120904-01
* 02.02.00 09/11/2012 donger.yang N/A HrAsrCom120911-01
* 02.02.01 10/10/2012 donger.yang N/A HrAsrCom121010-01
* 02.02.02 10/17/2012 donger.yang N/A HrAsrCom121017-01
* 02.02.03 10/19/2012 donger.yang N/A HrAsrCom121019-01
* 02.02.04 10/22/2012 donger.yang N/A HrAsrCom121022-01
* 03.00.00 11/08/2012 donger.yang N/A HrAsrCom121108-01
* 03.00.01 01/06/2013 donger.yang N/A HrAsrCom130106-01
* 03.00.02 03/25/2013 donger.yang N/A HrAsrCom130325-01
* 03.00.03 05/03/2013 donger.yang N/A HrAsrCom130503-01
* 03.00.04 06/08/2013 donger.yang N/A HrAsrCom130608-01
* 03.00.05 07/30/2013 donger.yang N/A HrAsrCom130730-01
* 03.00.06 08/26/2013 donger.yang N/A HrAsrCom130826-01
********************************************************************************
*END_FILE_HDR*/
#ifndef _COM_TYPES_H_
#define _COM_TYPES_H_
#ifdef _CODEWARRIOR_C_MC9S12XE_
//#pragma MESSAGE DISABLE C1106
#endif
/*******************************************************************************
* Includes
*******************************************************************************/
#include"ComStack_Types.h"
/*******************************************************************************
* define the data type for COM
*******************************************************************************/
#define Com_IpduGroupVector uint32
#define COM_UINT8 uint8
#define COM_UINT16 uint16
#define COM_UINT32 uint32
#define COM_CONST const
/*******************************************************************************
* Macro define
*******************************************************************************/
#define COM_NULL ((void*)0)
#define COM_YES 1u
#define COM_NO 0u
#define COM_RUNNING COM_YES
#define COM_STOP COM_NO
#define COM_SERVICE_NOT_AVAILABLE 1u
#define COM_BUSY 2u
#define COM_NONE_FUNCTION 3u
#define COM_OUT_OF_RANGE 4u
#define COM_ERROR 5u
#define COM_DIRECTION_TX 0x01u
#define COM_DIRECTION_RX 0x02u
#define COM_IPDUCONTROLCOMMAND_START 0x01u
#define COM_IPDUCONTROLCOMMAND_STOP 0x02u
#define COM_RXTIMEOUTMONITOR_YES 1u
#define COM_RXTIMEOUTMONITOR_NO 0u
/* Message and Signal Send type */
#define COM_NOSENDTYPE ((uint8)0x00) /*Ipdu and Signal*/
#define COM_SENDTYPECYCLIC ((uint8)0x01) /*Ipdu*/
#define COM_SENDTYPEONWRITE ((uint8)0x02) /*Signal*/
#define COM_SENDTYPEONCHANGE ((uint8)0x04) /*Signal*/
#define COM_SENDTYPEIFACTIVE ((uint8)0x08) /*Signal*/
#define COM_SENDTYPEREPETITION ((uint8)0x10) /*Signal*/
#define COM_SENDTYPETIMEOUTMONITOR ((uint8)0x20) /*Ipdu*/
#define COM_SENDTYPERESERVED ((uint8)0x40)
#define COM_SENDTYPEONEVENT (COM_SENDTYPEONWRITE | COM_SENDTYPEONCHANGE)
#define COM_TXREQUEST ((uint8)0x80)
#define COM_TXNOREQUEST (~COM_TXREQUEST)
/*******************************************************************************
* data type definitions
*******************************************************************************/
typedef P2FUNC(void, TYPEDEF, COM_TimeoutIndicationFun) (void);
typedef P2FUNC(void, TYPEDEF, COM_RxIndicationFun) (void);
typedef P2FUNC(void, TYPEDEF, COM_TxConfirmationFun) (void);
typedef P2FUNC(void, TYPEDEF, COM_TxTimeOutFun) (void);
typedef P2FUNC(void, TYPEDEF, COM_ErrorIndicationFun) (NotifResultType Result);
typedef P2FUNC(void, TYPEDEF, COM_LpduRxStartIndicationFun)
(BufReq_ReturnType Result);
typedef P2FUNC(void, TYPEDEF, COM_SendSignalFun)
(P2CONST(void, COM_APPL_DATA, COM_AUTOMOTIVE) SigValue);
typedef P2FUNC(void, TYPEDEF, COM_ReceivedSignalFun)
(P2VAR(void, COM_APPL_DATA, COM_AUTOMOTIVE)SignalValue);
typedef PduLengthType ComTpBufferSize;
typedef uint8 Com_IpduGroupIdType;
typedef uint16 Com_SignalIdType;
typedef uint16 Com_TimerType;
typedef uint8 Com_SignalTxPropertyType;
typedef struct
{
PduLengthType Length;
P2VAR(uint8, TYPEDEF, COM_APPL_DATA) Data_p;
}Com_LpduInfoType;
/*******************************************************************************
* Type define
*******************************************************************************/
typedef void Com_SigInActiveType ;
typedef struct{
PduIdType TxPduId;
Com_SignalTxPropertyType SigTxProperty;
P2CONST(Com_SigInActiveType, TYPEDEF, COM_CONFIG_DATA) aubSigInActiveValue;
}COM_TxSigStruct;
typedef struct{
PduIdType RxPduId;
Com_SignalTxPropertyType SigTxProperty;
}COM_RxSigStruct;
/*******************************************************************************
* receive timeout messages struct
*******************************************************************************/
typedef struct
{
PduIdType RxPduId;
boolean TOMonitored;
Com_TimerType RxTOTimer;
}COM_IpduRxTimeOut_Struct;
/* for signal gateway */
typedef struct
{
PduIdType RxPduId;
Com_SignalIdType OffsetInSignalGatewayInfo;
Com_SignalIdType SigGWNum;
}COM_SignalGatewayIpduInfoType;
typedef struct
{
Com_SignalIdType RxSignalId;
Com_SignalIdType TxSignalId;
}COM_SignalGatewayInfoType;
typedef struct
{
PduIdType IpduId;
boolean IpduDirecttion;
}COM_GroupIpduInfoType;
typedef struct
{
PduIdType IpduGroupPosition;
PduIdType IpduNumInGroup;
}COM_IpduGroupInfoType;
#endif

View File

@ -0,0 +1,107 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Bsw_Common.c
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : BSW COMMON File
* Author : Hirain
********************************************************************************
* Description : for some functions may be used by all modules
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 24/08/2016 ning.chen N/A Original
*
********************************************************************************
* END_FILE_HDR*/
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Bsw_Common.h"
#define BSW_START_SEC_CODE
#include "MemMap.h"
/*******************************************************************************
* Functions
*******************************************************************************/
/* BEGIN_FUNCTION_HDR
********************************************************************************
* Function Name: Bsw_MemCpy
*
* Description: This service copy data from src to dest
*
* Inputs: dest, src, size
*
* Outputs: None
*
* Limitations: None
********************************************************************************
END_FUNCTION_HDR*/
FUNC(void, BSW_CODE) Bsw_MemCpy
(
CONSTP2VAR(uint8, AUTOMATIC,BSW_APPL_DATA) dest,
CONSTP2CONST(uint8, AUTOMATIC,BSW_APPL_DATA) src,
const uint32 size
)
{
uint32 i;
for(i = 0; i < size; i++)
{
dest[i] = src[i];
}
}
/* BEGIN_FUNCTION_HDR
********************************************************************************
* Function Name: Bsw_MemSet
*
* Description: This service set fix data to dest
*
* Inputs: dest, src, size
*
* Outputs: None
*
* Limitations: None
********************************************************************************
END_FUNCTION_HDR*/
FUNC(void, BSW_CODE) Bsw_MemSet
(
CONSTP2VAR(uint8, AUTOMATIC,BSW_APPL_DATA) dest,
const uint8 src,
const uint32 size
)
{
uint32 i;
for(i = 0; i < size; i++)
{
dest[i] = src;
}
}
#define BSW_STOP_SEC_CODE
#include "MemMap.h"

View File

@ -0,0 +1,52 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : Bsw_Common.h
********************************************************************************
* Project/Product : AUTOSAR 4.0
* Title : Bsw Common File
* Author : Hirain
********************************************************************************
* Description : Bsw_Common header file.
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
********************************************************************************
* END_FILE_HDR*/
#ifndef _BSW_COMMON_H_
#define _BSW_COMMON_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Std_Types.h"
#define BSW_START_SEC_CODE
#include "MemMap.h"
/*******************************************************************************
* Declare
*******************************************************************************/
extern FUNC(void, BSW_CODE) Bsw_MemCpy(
CONSTP2VAR(uint8, AUTOMATIC,BSW_APPL_DATA) dest,
CONSTP2CONST(uint8, AUTOMATIC,BSW_APPL_DATA) src,
const uint32 size
);
extern FUNC(void, BSW_CODE) Bsw_MemSet(
CONSTP2VAR(uint8, AUTOMATIC,BSW_APPL_DATA) dest,
const uint8 src,
const uint32 size
);
#define BSW_STOP_SEC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,170 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _COMSTACK_TYPES_H_
#define _COMSTACK_TYPES_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Std_Types.h"
/*******************************************************************************
* Macro
*******************************************************************************/
/*General return codes for NotifResultType*/
/*Action has been successfully finished:
- message sent out (in case of confirmation),
- message received (in case of indication) */
#define NTFRSLT_OK (0x00U)
/*Error notification:
- message not successfully sent out (in case of confirmation),
- message not successfully received (in case of indication) */
#define NTFRSLT_E_NOT_OK (0x01U)
/*Error notification:
- timer N_Ar/N_As (according to ISO specification [ISONM]) has passed its
time-out value N_Asmax/N_Armax.This value can be issued to service user on
both the sender and receiver side. */
#define NTFRSLT_E_TIMEOUT_A (0x02U)
/*Error notification:
- timer N_Bs has passed its time-out value N_Bsmax (according to ISO
specification [ISONM]).This value can be issued to the service user on the
sender side only. */
#define NTFRSLT_E_TIMEOUT_BS (0x03U)
/*Error notification:
- timer N_Cr has passed its time-out value N_Crmax.
This value can be issued to the service user on the receiver side only. */
#define NTFRSLT_E_TIMEOUT_CR (0x04U)
/*Error notification:
- unexpected sequence number (PCI.SN) value received.
This value can be issued to the service user on the receiver side only. */
#define NTFRSLT_E_WRONG_SN (0x05U)
/*Error notification:
- invalid or unknown FlowStatus value has been received in a flow control
(FC) N_PDU.
This value can be issued to the service user on the sender side only. */
#define NTFRSLT_E_INVALID_FS (0x06U)
/*Error notification:
- unexpected protocol data unit received.
This value can be issued to the service user on both the sender and
receiver side. */
#define NTFRSLT_E_UNEXP_PDU (0x07U)
/*Error notification:
- flow control WAIT frame that exceeds the maximum counter N_WFTmax received.
This value can be issued to the service user on the receiver side. */
#define NTFRSLT_E_WFT_OVRN (0x08U)
/*Error notification:
Flow control (FC) N_PDU with FlowStatus = ABORT received. It indicates an abort
of a transmission. A possible reason for this is that the receiver is currently
busy and can not take the request at that point in time.*/
#define NTFRSLT_E_ABORT (0x09U)
/*Error notification:
- flow control (FC) N_PDU with FlowStatus = OVFLW received.
It indicates that the buffer on the receiver side of a segmented message
transmission cannot store the number of bytes specified by the FirstFrame
DataLength (FF_DL) parameter in the FirstFrame and therefore the transmission
of the 19 of 23 AUTOSAR_SWS_ComStackTypes segmented message was aborted.
- no buffer within the TP available to transmit the segmented I-PDU.
This value can be issued to the service user on both the sender and receiver
side. */
#define NTFRSLT_E_NO_BUFFER (0x0AU)
/*Action has been successfully finished:
- Requested cancellation has been executed.*/
#define NTFRSLT_E_CANCELATION_OK (0x0BU)
/*Error notification:
- Due to an internal error the requested cancelation has not been executed.
This will happen e.g., if the to be canceled transmission has been executed
already.*/
#define NTFRSLT_E_CANCELATION_NOT_OK (0x0CU)
/*The parameter change request has been successfully executed */
#define NTFRSLT_PARAMETER_OK (0x0DU)
/*The request for the change of the parameter did not complete successfully*/
#define NTFRSLT_E_PARAMETER_NOT_OK (0x0EU)
/*The parameter change request not executed successfully due to an ongoing
reception*/
#define NTFRSLT_E_RX_ON (0x0FU)
/*The parameter change request not executed successfully due to a wrong value*/
#define NTFRSLT_E_VALUE_NOT_OK (0x10U)
#define NTFRSLT_E_CAN_WRONG_CFDL (0x11U)
#define NTFRSLT_E_TMIEOUT_T1 (0x12U)
/* 0x12-0x1E Reserved values for future usage. */
/*General return codes for BusTrcvErrorType*/
#define BUSTRCV_OK (0x00U)
#define BUSTRCV_E_OK (0x01U)
/*******************************************************************************
* Typedef
*******************************************************************************/
/*The size of this global type depends on the maximum number of PDUs used
within one software module.*/
typedef uint16 PduIdType;
/*The size of this global type depends on the maximum length of PDUs to be
sent by an ECU.*/
typedef uint16 PduLengthType;
typedef P2VAR(uint8, TYPEDEF, TYPEDEF) SduDataPtrType;
typedef struct
{
SduDataPtrType SduDataPtr;
PduLengthType SduLength;
}PduInfoType;
typedef enum
{
BUFREQ_OK, /*Buffer request accomplished successful.*/
BUFREQ_E_NOT_OK, /*Buffer request not successful. Buffer cannot be
accessed.*/
BUFREQ_E_BUSY, /*Temporarily no buffer available. It's up the
requestor to retry request for a certain time.*/
BUFREQ_E_OVFL /*No Buffer of the required length can be provided.*/
}BufReq_ReturnType;
typedef enum
{
TP_DATACONF, /*indicates that all data, that have been copied so far,
are confirmed and can be removed from the TP buffer.
Data copied by this API call are excluded and will be
confirmed later.*/
TP_DATARETRY, /*indicates that this API call shall copy already copied
data in order to recover from an error. In this case
TxTpDataCnt specifies the offset of the first byte to be
copied by the API call.*/
TP_CONFPENDING /*indicates that the previously copied data must remain
in the TP*/
}TpDataStateType;
typedef struct
{
TpDataStateType TpDataState;
PduLengthType TxTpDataCnt;
}RetryInfoType;
typedef uint8 NotifResultType;
typedef uint8 BusTrcvErrorType;
typedef uint8 NetworkHandleType;
#endif /* _COMSTACK_TYPES_H_ */

View File

@ -0,0 +1,131 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _COMPILER_H_
#define _COMPILER_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "common_cfg.h"
#include "Compiler_Cfg.h"
/*******************************************************************************
* Macro
*******************************************************************************/
#define COMPILER_VENDOR_ID (0xFFFFU)
#if 0
#define _CODEWARRIOR_C_S12X_
/* used for ignoring bits define warnning*/
#ifdef _CODEWARRIOR_C_S12X_
#pragma MESSAGE DISABLE C1106
#endif
#endif
/* AUTOMATIC used for the declaration of local pointers */
#define AUTOMATIC
#define TYPEDEF
/*_STATIC_ define for abstraction of compiler keyword static*/
#define STATIC static
/*NULL_PTR define with a void pointer to zero definition*/
#ifndef NULL_PTR
#define NULL_PTR ((void*)0)
#endif
/*_INLINE_ define for abstraction of the keyword inline */
/* These macro are empty because we dont suggest to use inline */
#define INLINE
#define LOCAL_INLINE
/*******************************************************************************
* PRQA S 3409
* PRQA S 3410 MISRA-C:2004 Rule 19.10
* PRQA S 3453 MISRA-C:2004 Rule 19.7
* These function-like macros are AUTOSAR standard API, they will be used as
* prefixion when define functions, variable and so on. So the parameters or the
* body of the macros cannot be enclosed in ().
* This part of code is verified manually and has no impact.
*******************************************************************************/
/* FUNC macro for the declaration and definition of functions, that ensures
correct syntax of function declarations
rettype return type of the function
memclass classification of the function itself*/
#define FUNC(rettype, memclass) rettype memclass
/* P2VAR macro for the declaration and definition of pointers in RAM,
pointing to variables
ptrtype type of the referenced variable memclass
memclass classification of the pointer's variable itself
ptrclass defines the classification of the pointer's distance
*/
/* in CW, can not use any key words to locate the memclass
we can only use #pragma to locate the memclass which is in MemMap.h
*/
#define P2VAR(ptrtype, memclass, ptrclass) ptrtype * ptrclass
/* P2CONST macro for the declaration and definition of pointers in RAM
pointing to constants
ptrtype type of the referenced data
memclass classification of the pointer's variable itself
ptrclass defines the classification of the pointer's distance
*/
#define P2CONST(ptrtype, memclass, ptrclass) const ptrtype * ptrclass
/* CONSTP2VAR macro for the declaration and definition of constant
pointers accessing variables
ptrtype type of the referenced data
memclass classification of the pointer's variable itself
ptrclass defines the classification of the pointer's distance
*/
#define CONSTP2VAR(ptrtype, memclass, ptrclass) ptrtype* const ptrclass
/* CONSTP2CONST macro for the declaration and definition of constant pointers
accessing constants
ptrtype type of the referenced data
memclass classification of the pointer's variable itself
ptrclass defines the classification of the pointer's distance
*/
#define CONSTP2CONST(ptrtype, memclass, ptrclass) const ptrtype* const ptrclass
/* P2FUNC macro for the type definition of pointers to functions
rettype return type of the function
ptrclass defines the classification of the pointer's distance
fctname function name respectivly name of the defined type
*/
#define P2FUNC(rettype, ptrclass, fctname) rettype (* ptrclass fctname)
/* CONST macro for the declaration and definition of constants
type type of the constant
memclass classification of the constant itself
*/
#define CONST(type, memclass) const type
/* VAR macro for the declaration and definition of variables
vartype type of the variable
memclass classification of the variable itself
*/
#define VAR(vartype, memclass) vartype
#endif /* _COMPILER_H_ */

View File

@ -0,0 +1,397 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _COMPILER_CFG_H_
#define _COMPILER_CFG_H_
/*******************************************************************************
* BSW START
*******************************************************************************/
#define BSW_CODE
#define BSW_VAR_NOINIT
#define BSW_VAR_POWER_ON_INIT
#define BSW_VAR_FAST
#define BSW_VAR
#define BSW_CONST
#define BSW_APPL_CODE
#define BSW_APPL_CONST
#define BSW_APPL_DATA
#define BSW_CALLOUT_CODE
/*******************************************************************************
* BSW END
*******************************************************************************/
/*******************************************************************************
* CAN Communication Stack START
*******************************************************************************/
/*******************************************************************************
* CAN Driver START
*******************************************************************************/
#define CAN_PUBLIC_CODE /* API functions */
#define CAN_PUBLIC_CONST /* API constants */
#define CAN_PRIVATE_CODE /* Internal functions */
#define CAN_PRIVATE_DATA /* Module internal data */
#define CAN_PRIVATE_CONST /* Internal ROM Data */
#define CAN_APPL_CODE /* callbacks of the Application */
#define CAN_APPL_CONST /* Applications' ROM Data */
#define CAN_APPL_DATA /* Applications' RAM Data */
#define CAN_FAST_DATA /* 'Near' RAM Data */
#define CAN_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define CAN_CONFIG_DATA /* Config. dependent (reg. size) data */
#define CAN_INIT_DATA /* Data which is initialized during
Startup */
#define CAN_NOINIT_DATA /* Data which is not initialized during
Startup */
#define CAN_CONST /* Data Constants */
/*******************************************************************************
* CAN Driver END
*******************************************************************************/
/*******************************************************************************
* CAN Interface START
*******************************************************************************/
#define CANIF_PUBLIC_CODE /* API functions */
#define CANIF_PUBLIC_CONST /* API constants */
#define CANIF_PRIVATE_CODE /* Internal functions */
#define CANIF_PRIVATE_DATA /* Module internal data */
#define CANIF_PRIVATE_CONST /* Internal ROM Data */
#define CANIF_APPL_CODE /* callbacks of the Application */
#define CANIF_APPL_CONST /* Applications' ROM Data */
#define CANIF_APPL_DATA /* Applications' RAM Data */
#define CANIF_FAST_DATA /* 'Near' RAM Data */
#define CANIF_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define CANIF_CONFIG_DATA /* Config. dependent (reg. size) data*/
#define CANIF_INIT_DATA /* Data which is initialized during
Startup */
#define CANIF_NOINIT_DATA /* Data which is not initialized during
Startup */
#define CANIF_CONST /* Data Constants */
/*******************************************************************************
* CAN Interface END
*******************************************************************************/
/*******************************************************************************
* CCP START
*******************************************************************************/
#define CCP_PUBLIC_CODE /* API functions */
#define CCP_PUBLIC_CONST /* API constants */
#define CCP_PRIVATE_CODE /* Internal functions */
#define CCP_PRIVATE_DATA /* Module internal data */
#define CCP_PRIVATE_CONST /* Internal ROM Data */
#define CCP_APPL_CODE /* callbacks of the Application */
#define CCP_APPL_CONST /* Applications' ROM Data */
#define CCP_APPL_DATA /* Applications' RAM Data */
#define CCP_FAST_DATA /* 'Near' RAM Data */
#define CCP_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define CCP_CONFIG_DATA /* Config. dependent (reg. size) data */
#define CCP_INIT_DATA /* Data which is initialized during
Startup */
#define CCP_NOINIT_DATA /* Data which is not initialized during
Startup */
#define CCP_CONST /* Data Constants */
/*******************************************************************************
* CCP END
*******************************************************************************/
/*******************************************************************************
* CANTP START
*******************************************************************************/
#define CANTP_PUBLIC_CODE /* API functions */
#define CANTP_PUBLIC_CONST /* API constants */
#define CANTP_PRIVATE_CODE /* Internal functions */
#define CANTP_PRIVATE_DATA /* Module internal data */
#define CANTP_PRIVATE_CONST /* Internal ROM Data */
#define CANTP_APPL_CODE /* callbacks of the Application */
#define CANTP_APPL_CONST /* Applications' ROM Data */
#define CANTP_APPL_DATA /* Applications' RAM Data */
#define CANTP_FAST_DATA /* 'Near' RAM Data */
#define CANTP_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define CANTP_CONFIG_DATA /* Config. dependent (reg. size) data */
#define CANTP_INIT_DATA /* Data which is initialized during
Startup */
#define CANTP_NOINIT_DATA /* Data which is not initialized during
Startup */
#define CANTP_CONST /* Data Constants */
/*******************************************************************************
* CANTP END
*******************************************************************************/
/*******************************************************************************
* DCM START
*******************************************************************************/
#define DCM_CODE /* FOR CONFIG DOCUMENT */
#define DCM_VARIABLE /* FOR CONFIG DOCUMENT */
#define DCM_PUBLIC_CODE /* API functions */
#define DCM_PUBLIC_CONST /* API constants */
#define DCM_PRIVATE_CODE /* Internal functions */
#define DCM_PRIVATE_DATA /* Module internal data */
#define DCM_PRIVATE_CONST /* Internal ROM Data */
#define DCM_APPL_CODE /* callbacks of the Application */
#define DCM_APPL_CONST /* Applications' ROM Data */
#define DCM_APPL_DATA /* Applications' RAM Data */
#define DCM_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define DCM_CONFIG_DATA /* Config. dependent (reg. size) data */
#define DCM_INIT_DATA /* Data which is initialized during
Startup */
#define DCM_NOINIT_DATA /* Data which is not initialized during
Startup */
#define DCM_CONST /* Data Constants */
/*******************************************************************************
* DCM END
*******************************************************************************/
/*******************************************************************************
* DCM START
*******************************************************************************/
#define PDUR_CODE /* FOR CONFIG DOCUMENT */
#define PDUR_VARIABLE /* FOR CONFIG DOCUMENT */
#define PDUR_PUBLIC_CODE /* API functions */
#define PDUR_PUBLIC_CONST /* API constants */
#define PDUR_PRIVATE_CODE /* Internal functions */
#define PDUR_PRIVATE_DATA /* Module internal data */
#define PDUR_PRIVATE_CONST /* Internal ROM Data */
#define PDUR_APPL_CODE /* callbacks of the Application */
#define PDUR_APPL_CONST /* Applications' ROM Data */
#define PDUR_APPL_DATA /* Applications' RAM Data */
#define PDUR_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define PDUR_CONFIG_DATA /* Config. dependent (reg. size) data */
#define PDUR_INIT_DATA /* Data which is initialized during
Startup */
#define PDUR_NOINIT_DATA /* Data which is not initialized during
Startup */
#define PDUR_CONST /* Data Constants */
/*******************************************************************************
* DCM END
*******************************************************************************/
/*******************************************************************************
* COM START
*******************************************************************************/
#define COM_PUBLIC_CODE /* API functions */
#define COM_PUBLIC_CONST /* API constants */
#define COM_PRIVATE_CODE /* Internal functions */
#define COM_PRIVATE_DATA /* Module internal data */
#define COM_PRIVATE_CONST /* Internal ROM Data */
#define COM_APPL_CODE /* callbacks of the Application */
#define COM_APPL_CONST /* Applications' ROM Data */
#define COM_APPL_DATA /* Applications' RAM Data */
#define COM_FAST_DATA /* 'Near' RAM Data */
#define COM_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define COM_CONFIG_DATA /* Config. dependent (reg. size) data */
#define COM_INIT_DATA /* Data which is initialized during
Startup */
#define COM_NOINIT_DATA /* Data which is not initialized during
Startup */
//#define COM_CONST /* Data Constants 在 Com_Types.h己存在 */
#define COM_AUTOMOTIVE /* Automotive */
/*******************************************************************************
* COM END
*******************************************************************************/
/*******************************************************************************
* OSEKNM START
*******************************************************************************/
#define CANNM_VAR_NOINIT_FAST
#define CANNM_CODE
#define NM_APPL_VAR
#define NM_CODE
#define CANNM_APPL_VAR
#define CANNM_CONST
#define CANNM_PBCFG
#define CANNM_VAR_NOINIT
#define NM_CONST
/*******************************************************************************
* OSEKNM END
*******************************************************************************/
/*******************************************************************************
* CAN Communication Stack END
*******************************************************************************/
/*******************************************************************************
* LIN Communication Stack START
*******************************************************************************/
/*******************************************************************************
* LIN Driver START
*******************************************************************************/
#define LIN_PUBLIC_CODE /* API functions */
#define LIN_PUBLIC_CONST /* API constants */
#define LIN_PRIVATE_CODE /* Internal functions */
#define LIN_PRIVATE_DATA /* Module internal data */
#define LIN_PRIVATE_CONST /* Internal ROM Data */
#define LIN_APPL_CODE /* callbacks of the Application */
#define LIN_APPL_CONST /* Applications' ROM Data */
#define LIN_APPL_DATA /* Applications' RAM Data */
#define LIN_FAST_DATA /* 'Near' RAM Data */
#define LIN_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define LIN_CONFIG_DATA /* Config. dependent (reg. size) data */
#define LIN_INIT_DATA /* Data which is initialized during
Startup */
#define LIN_NOINIT_DATA /* Data which is not initialized during
Startup */
#define LIN_CONST /* Data Constants */
/*******************************************************************************
* LIN Driver END
*******************************************************************************/
/*******************************************************************************
* LIN Interface START
*******************************************************************************/
#define LINIF_PUBLIC_CODE /* API functions */
#define LINIF_PUBLIC_CONST /* API constants */
#define LINIF_PRIVATE_CODE /* Internal functions */
#define LINIF_PRIVATE_DATA /* Module internal data */
#define LINIF_PRIVATE_CONST /* Internal ROM Data */
#define LINIF_APPL_CODE /* callbacks of the Application */
#define LINIF_APPL_CONST /* Applications' ROM Data */
#define LINIF_APPL_DATA /* Applications' RAM Data */
#define LINIF_FAST_DATA /* 'Near' RAM Data */
#define LINIF_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define LINIF_CONFIG_DATA /* Config. dependent (reg. size) data*/
#define LINIF_INIT_DATA /* Data which is initialized during
Startup */
#define LINIF_NOINIT_DATA /* Data which is not initialized during
Startup */
#define LINIF_CONST /* Data Constants */
/*******************************************************************************
* LIN Interface END
*******************************************************************************/
/*******************************************************************************
* LIN Communication Stack END
*******************************************************************************/
/*******************************************************************************
* CAN Network Management START
*******************************************************************************/
#define CANNM_CODE
#define CANNM_VAR_NOINIT
#define CANNM_VAR_POWER_ON_INIT
#define CANNM_VAR_FAST
#define CANNM_VAR
#define CANNM_CONST
#define CANNM_APPL_CODE
#define CANNM_APPL_CONST
#define CANNM_APPL_DATA
#define CANNM_CALLOUT_CODE
/*******************************************************************************
* NVM START
*******************************************************************************/
#define NVM_CODE
#define NVM_VAR_NOINIT
#define NVM_VAR_POWER_ON_INIT
#define NVM_VAR_FAST
#define NVM_VAR
#define NVM_CONST
#define NVM_APPL_CODE
#define NVM_APPL_CONST
#define NVM_APPL_DATA
#define NVM_CALLOUT_CODE
/*******************************************************************************
* NVM END
*******************************************************************************/
/*******************************************************************************
* DEM START
*******************************************************************************/
#define DEM_CODE /* FOR CONFIG DOCUMENT */
#define DEM_VARIABLE /* FOR CONFIG DOCUMENT */
#define DEM_PUBLIC_CODE /* API functions */
#define DEM_PUBLIC_CONST /* API constants */
#define DEM_PRIVATE_CODE /* Internal functions */
#define DEM_PRIVATE_DATA /* Module internal data */
#define DEM_PRIVATE_CONST /* Internal ROM Data */
#define DEM_APPL_CODE /* callbacks of the Application */
#define DEM_APPL_CONST /* Applications' ROM Data */
#define DEM_APPL_DATA /* Applications' RAM Data */
#define DEM_CONFIG_CONST /* Desc. Tables -> Config-dependent */
#define DEM_CONFIG_DATA /* Config. dependent (reg. size) data */
#define DEM_INIT_DATA /* Data which is initialized during
Startup */
#define DEM_NOINIT_DATA /* Data which is not initialized during
Startup */
#define DEM_CONST /* Data Constants */
/*******************************************************************************
* DEM END
*******************************************************************************/
#endif/* _COMPILER_CFG_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,80 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _PLATFORM_TYPES_H_
#define _PLATFORM_TYPES_H_
#include "common_types.h"
/*******************************************************************************
* Includes
*******************************************************************************/
/*******************************************************************************
* Macro
*******************************************************************************/
#define CPU_TYPE_8 (8)
#define CPU_TYPE_16 (16)
#define CPU_TYPE_32 (32)
#define MSB_FIRST (0) /* big endian bit ordering */
#define LSB_FIRST (1) /* little endian bit ordering */
#define HIGH_BYTE_FIRST (0) /* big endian byte ordering */
#define LOW_BYTE_FIRST (1) /* little endian byte ordering */
#if 0
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#endif
#define CPU_TYPE CPU_TYPE_32
#define CPU_BIT_ORDER LSB_FIRST
#define CPU_BYTE_ORDER LOW_BYTE_FIRST
/*******************************************************************************
* Typedef
*******************************************************************************/
typedef unsigned char boolean;
typedef signed char sint8;
typedef unsigned char uint8;
typedef signed short sint16;
typedef unsigned short uint16;
typedef signed long sint32;
typedef unsigned long uint32;
typedef signed char sint8_least;
typedef unsigned char uint8_least;
typedef signed short sint16_least;
typedef unsigned short uint16_least;
typedef signed long sint32_least;
typedef unsigned long uint32_least;
typedef float float32;
typedef double float64;
#endif /* _PLATFORM_TYPES_H_ */

View File

@ -0,0 +1,49 @@
/* BEGIN_FILE_HDR
********************************************************************************
* NOTICE
* This software is the property of HiRain Technologies. Any information
* contained in this doc should not be reproduced, or used, or disclosed
* without the written authorization from HiRain Technologies.
********************************************************************************
* File Name : SchM_CanNm.h
********************************************************************************
* Project/Product : Common
* Title : SchM_CanNm.h
* Author : ning.chen
********************************************************************************
* Description : AUTOSAR Standard types file
*
********************************************************************************
* Limitations : None
*
********************************************************************************
*
********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 01.00.00 13/06/2013 ning.chen N/A Original
* 01.00.01 17/07/2013 ning.chen N/A DPN_COMMON_130717_01
* 01.00.02 15/08/2013 ning.chen N/A D10_COMMON01_130815_01
* 01.00.03 08/01/2014 ning.chen N/A D10_COMMON01_140108_01
********************************************************************************
* END_FILE_HDR*/
#ifndef _SCHM_CANNM_H_
#define _SCHM_CANNM_H_
/*******************************************************************************
* Macro
*******************************************************************************/
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_0()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_0()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_1()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_1()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_2()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_2()
#define SchM_Enter_CanNm_CANNM_EXCLUSIVE_AREA_3()
#define SchM_Exit_CanNm_CANNM_EXCLUSIVE_AREA_3()
#endif /* _SCHM_CANNM_H_ */

View File

@ -0,0 +1,87 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _STD_TYPES_H_
#define _STD_TYPES_H_
/*******************************************************************************
* Includes
*******************************************************************************/
#include "Platform_Types.h"
#include "Compiler.h"
/*******************************************************************************
* Macro
*******************************************************************************/
#define STD_HIGH (1)
#define STD_LOW (0)
#define STD_ACTIVE (1)
#define STD_IDLE (0)
#define STD_ON (1)
#define STD_OFF (0)
/* This typedef has been addedf or OSEK compliance */
#ifndef STATUSTYPEDEFINED
#define STATUSTYPEDEFINED
#define E_OK (0)
/* OSEK compliance */
typedef unsigned char StatusType;
#endif
#define E_NOT_OK (1)
/*******************************************************************************
* Typedef
*******************************************************************************/
typedef uint8 Std_ReturnType;
typedef struct
{
uint16 vendorID;
uint16 moduleID;
uint8 instanceID;
uint8 sw_major_version;
uint8 sw_minor_version;
uint8 sw_patch_version;
}Std_VersionInfoType;
/*******************************************************************************
* Specification
*******************************************************************************/
#define STD_CONFIG_VARIANTS_PRECOMPILE (1)
#define STD_CONFIG_VARIANTS_LINKTIME (2)
#define STD_CONFIG_VARIANTS_POSTBUILD (3)
/* Vender ID */
#define STD_HIRAIN_VENDOR_ID ((uint16)0x0056U)
/* Module ID */
/* Init State */
typedef enum
{
STD_UNINITIALIZED = 0,
STD_INITIALIZED = 1
}Std_InitStateType;
#endif /* _STD_TYPES_H_ */

View File

@ -0,0 +1,342 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DCM_H_
#define _DCM_H_
/*******************************************************************************
* Include files
*******************************************************************************/
#include "Dcm_Types.h"
#include "Dcm_Cfg.h"
#if(ISO_15031_5 == STD_ON)
#include "OBD_Cfg.h"
#include "OBD.h"
#endif
/*******************************************************************************
* Local Macro and Tyedef
*******************************************************************************/
/* PduIdType ---這幾個和TP層的定義一樣 見 PduRCanTpDcmTxID */
#define UDS_PHYSICAL_ON_CAN_RX (0u)
#define UDS_FUNCTIONAL_ON_CAN_RX (1u)
#define UDS_ON_CAN_TX (0u)
/* Diagnostic State Machine */
#define DIAG_IDLE ((uint8)0x01)
#define DIAG_UDS_INDICATION ((uint8)0x02) //接收到的指示
#define DIAG_UDS_PROCESSING ((uint8)0x04)
#define DIAG_UDS_RCRP ((uint8)0x08) //78負響應
#define DIAG_UDS_RCRP_DONE ((uint8)0x10) //DsdInternal_ProcessingDone 用到
#define DIAG_UDS_PERIODIC_TX ((uint8)0x20) //周期性發送
/* For 0x22 --- 客戶端請求讀取由數據標識符識別的某個記錄的當前值 即did的讀取*/
typedef struct
{
uint16 Did;
uint16 DidPosition;
}DidlistType;
/* For 0x2A ---請求周期性傳輸服務器中的數據----本項目不開*/
#if(DCM_SERVICE_2A_ENABLED == STD_ON)
typedef struct
{
uint8 Did;
uint16 DidPosition;
}PeriodicDidlistType;
#endif
/* For 0x2C 動態定義由22服務讀取的數據標識符---本項目不開*/
#if(DCM_SERVICE_2C_ENABLED == STD_ON)
/* 0x00: byDid, 0x01:ByAddress */
typedef struct
{
uint8 ByDidOrAddress;
uint8 DidOrAddressCounter;
}DynamicalDidDefinedSequence;
typedef struct
{
uint16 SourceDid;
uint16 SourceDidPosition;
uint16 PositionInSourceDataRecord;
uint16 MemorySize;
}DefinedByDid;
typedef struct
{
uint32 MemoryAddress;
uint8 AddressSegment;
uint32 MemorySize;
}DefinedByAddress;
typedef struct
{
uint16 DynamicalDid;
/* Posicon in gDcmDsdSubService_2C */
uint8 DynamicalDidPosion;
uint8 DefinedTime;
DynamicalDidDefinedSequence Sequence[16];
/* size should be configurable */
DefinedByDid ByDid[16];
uint8 SourceDidCounter;
/* size should be configurable */
DefinedByAddress ByAddress[16];
uint8 AddessCounter;
uint32 TotalDataSize;
}DynamicalDidRelatedInfo;
#endif
/*******************************************************************************
* Global variables(Scope:global)
*******************************************************************************/
#define DCM_START_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gUDS_Physical_DiagBuffer[UDS_PHYS_BUFFER_SIZE]; //物理尋址 有128字節
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gUDS_Functional_DiagBuffer[UDS_FUNC_BUFFER_SIZE]; //而功能尋址就8字節
#if(ISO_15031_5_MultiChannel == STD_ON)
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gOBD_Physical_DiagBuffer[OBD_PHYS_BUFFER_SIZE];
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gOBD_Functional_DiagBuffer[OBD_FUNC_BUFFER_SIZE];
extern VAR(DcmDslBufferSize, DCM_NOINIT_DATA) gDcmDslAvailableBufferSize[4];
#else
extern VAR(DcmDslBufferSize, DCM_NOINIT_DATA) gDcmDslAvailableBufferSize[2];
#endif
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gNegativeResponseBuffer[NEG_RESP_BUFFER_SIZE]; //負响應主要3字節;
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gNegativeResponseBufferForRRCP[NEG_RESP_BUFFER_SIZE];
#if(DCM_SERVICE_2A_ENABLED == STD_ON)
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gPeriodicResponseBuffer[PERODIC_RESP_BUFFER_SIZE];
#endif
#if(DCM_SERVICE_86_ENABLED == STD_ON)
extern VAR(Dcm_MsgItemType, DCM_NOINIT_DATA)
gResponseOnEventBuffer[EVENT_RESP_BUFFER_SIZE];
#endif
extern VAR(uint16, DCM_NOINIT_DATA) gResponseLength;
#if(DCM_SERVICE_27_ENABLED == STD_ON)
extern Dcm_SecLevelType gSecLevelType;
#endif
extern VAR(Dcm_SecLevelType, DCM_NOINIT_DATA) gSesCtrlType;
extern VAR(Dcm_ProtocolType, DCM_NOINIT_DATA) gActiveProtocol;
extern VAR(Dcm_MsgContextType, DCM_NOINIT_DATA) gMsgContextType;
extern VAR(VoidEcucSubFunctionNameDef, DCM_NOINIT_DATA)
gSubFunctionHandler;
extern VAR(EcucFunctionNameDef, DCM_NOINIT_DATA) gFunctionHandler;
extern VAR(Dcm_NegativeResponseCodeType, DCM_NOINIT_DATA)
gNegativeResponseCode;
extern VAR(uint8, DCM_NOINIT_DATA) gDiagState;
extern VAR(uint32, DCM_NOINIT_DATA) gP2ServerTimer;
extern VAR(uint32, DCM_NOINIT_DATA) gS3ServerTimer;
extern VAR(uint8, DCM_NOINIT_DATA) gP2ServerTimerStartFlag;
extern VAR(uint8, DCM_NOINIT_DATA) gS3ServerTimerStartFlag;
extern VAR(uint8, DCM_NOINIT_DATA) gCurrentSecurityAccessRequestLevel;
extern VAR(uint8, DCM_NOINIT_DATA) gSecurityDelayTimeOnBootFlag;
#if(DCM_SERVICE_27_ENABLED == STD_ON)
extern VAR(uint32, DCM_NOINIT_DATA)
gSecurityAcessDelayTimeOnBoot[KIND_OF_SECURITY_LEVEL];
extern VAR(uint8, DCM_NOINIT_DATA)
gSecurityAcessAttempNumber[KIND_OF_SECURITY_LEVEL];
extern VAR(uint8, DCM_NOINIT_DATA)
gSecurityAcessAttempNumberExceeded[KIND_OF_SECURITY_LEVEL];
extern VAR(uint32, DCM_NOINIT_DATA)
gSecurityAcessDelayTime[KIND_OF_SECURITY_LEVEL];
extern VAR(uint8, DCM_NOINIT_DATA)
gSecurityAcessSequence[KIND_OF_SECURITY_LEVEL];
#endif
#if(DCM_SERVICE_2A_ENABLED == STD_ON)
extern VAR(uint32, DCM_NOINIT_DATA)
gPeriodicResponseRate[NUMBER_OF_PERIODIC_DID]; //DCM_SERVICE_27_SECURITY_MAP_LOCK
extern VAR(uint32, DCM_NOINIT_DATA)
gPeriodicResponseTimer[NUMBER_OF_PERIODIC_DID];
extern VAR(uint8, DCM_NOINIT_DATA) PeriodicDidCounter;
#endif
#if(DCM_SERVICE_2C_ENABLED == STD_ON)
extern VAR(DynamicalDidRelatedInfo, DCM_NOINIT_DATA)
gDynamicalDidRelatedInfo[NUMBER_OF_DYN_DID];
extern VAR(uint8, DCM_NOINIT_DATA) gDynamicalDidCounter;
#endif
#define DCM_STOP_SEC_VAR_UNSPECIFIED
#include "MemMap.h"
/*******************************************************************************
* Macro function
*******************************************************************************/
#define Set_SecLevel(x) (gSecLevelType = (x))
#define Set_SesCtrl(x) (gSesCtrlType = (x))
#define Get_SesCtrl(x) (gSesCtrlType)
#define Set_ActiveProtocol(x) (gActiveProtocol = (x))
#define Clr_ActiveProtocol() (gActiveProtocol = (0))
#define Set_PduId(x) (gMsgContextType.dcmRxPduId = (x))
#define Reset_PduId() (gMsgContextType.dcmRxPduId = DCM_INVALID_HANDLE_OR_ID)
#define Set_P2_Server_Timer(x) (gP2ServerTimer = (uint32)((x)/DCM_TASK_TIME))
#define Dec_P2_Server_Timer() (gP2ServerTimer--)
#define Clr_P2_Server_Timer() (gP2ServerTimer = 0)
#define Set_S3_Server_Timer(x) (gS3ServerTimer = (uint32)((x)/DCM_TASK_TIME))
#define Dec_S3_Server_Timer() (gS3ServerTimer--)
#define Clr_S3_Server_Timer() (gS3ServerTimer = 0)
#define Set_DiagState(x) (gDiagState |= (x))
#define Clr_DiagState(x) (gDiagState &= (~(x)))
#define Reset_DiagState() (gDiagState = DIAG_IDLE)
#define GetSuppressPosResponseBit() (gMsgContextType.msgAddInfo.suppressPosResponse)
#define ClrSuppressPosResponseBit() (gMsgContextType.msgAddInfo.suppressPosResponse = 0)
#define SetNegativeResponseCode(x) (gNegativeResponseCode = (x))
#define ClrNegativeResponseCode() (gNegativeResponseCode = 0)
#define Dec_Max_Number_Of_RCRRP() (gMaxNumberOfRCRRP--)
#define Reset_Max_Number_Of_RCRRP() (gMaxNumberOfRCRRP = DCM_NUM_MAX_RESPPEND)
#define Make16Bit(HiByte,LoByte) ((uint16)((((uint16)(HiByte)) << 8)|((uint16)(LoByte))))
#define Make32Bit(HiByte,MiByte,LoByte) ((uint32)((((uint32)(HiByte)) << 16)|((uint32)(MiByte) << 8)|((uint32)(LoByte))))
/*******************************************************************************
* extern Function
*******************************************************************************/
/* Defined in AUTOSAR */
#define DCM_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(void,DCM_PUBLIC_CODE) Dcm_Init(P2VAR(Dcm_ConfigType,AUTOMATIC,DCM_APPL_DATA) ConfigPtr);
extern FUNC(void,DCM_PUBLIC_CODE) Dsd_InteralInit(void);
extern FUNC(void,DCM_PUBLIC_CODE) Dcm_GetVersionInfo(P2VAR(Std_VersionInfoType,AUTOMATIC,DCM_APPL_DATA) versionInfo);
extern FUNC(Std_ReturnType,DCM_PUBLIC_CODE) Dcm_GetSecurityLevel(P2VAR(Dcm_SecLevelType,AUTOMATIC,DCM_APPL_DATA) SecLevel);
extern FUNC(Std_ReturnType,DCM_PUBLIC_CODE) Dcm_GetSesCtrlType(P2VAR(Dcm_SesCtrlType,AUTOMATIC,DCM_APPL_DATA) SesCtrlType);
extern FUNC(Std_ReturnType,DCM_PUBLIC_CODE) Dcm_GetActiveProtocol(P2VAR(Dcm_ProtocolType,AUTOMATIC,DCM_APPL_DATA) ActiveProtocol);
extern FUNC(void,DCM_PUBLIC_CODE) Dcm_MainFunction(void);
#if(DCM_DSL_DIAG_RESP_FORCE_RESP_PEND_EN == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DslInternal_RCRResponsePending(uint8 ForceRCR_RP);
#else
STATIC FUNC(void,DCM_PRIVATE_CODE) DslInternal_RCRResponsePending(uint8 ForceRCR_RP);
#endif
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_ProcessingDone(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_ProcessingDoneNoResponse(void);
#if(DCM_SERVICE_22_COMBINED_DID == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_DidProcessingDone(void);
#endif
extern void DsdInternal_SetNegResponse(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext,uint8 ErrorCode);
/* UDS diagnostic service */
#if(DCM_SERVICE_10_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_DiagnosticSessionControl(void);
extern FUNC(void,DCM_PUBLIC_CODE) App_DefaultPost(Std_ReturnType Result);
#endif
extern uint8 Dsd_GetSessionMapId(Dcm_SesCtrlType DcmSessionType) ;
#if(DCM_SERVICE_11_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_EcuReset(void);
#endif
#if(DCM_SERVICE_14_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ClearDiagnosticInformation(void);
extern FUNC(void,DCM_PUBLIC_CODE) App_ClearDiagnosticInformation(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
#if(DCM_SERVICE_19_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ReadDTCInformation(void);
#endif
#if(DCM_SERVICE_22_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ReadDataByIdentifier(void);
#endif
#if(DCM_SERVICE_23_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ReadMemoryByAddress(void);
#endif
#if(DCM_SERVICE_24_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ReadScalingDataByIdentifier(void);
#endif
#if(DCM_SERVICE_27_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_SecurityAccess(void);
extern void DsdInternal_SecurityAccessKeyCompared(uint8 level, DcmDspSecurityAccessKey keyIsValid);
#endif
#if(DCM_SERVICE_28_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_CommunicationControl(void);
#endif
#if(DCM_SERVICE_2A_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ReadDataByPeriodicIdentifier(void);
#endif
#if(DCM_SERVICE_2C_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_DynamicallyDefinedDataIdentifier(void);
#endif
#if(DCM_SERVICE_2E_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_WriteDataByIdentifier(void);
#endif
#if(DCM_SERVICE_2F_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_InputOutputControlByIdentifier(void);
#endif
#if(DCM_SERVICE_31_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_RoutineControl(void);
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_RoutineStarted(void);
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_RoutineStopped(void);
extern FUNC(void,DCM_PUBLIC_CODE) DsdInternal_RequestRoutineResults(void);
#endif
#if(DCM_SERVICE_3D_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_WriteMemoryByAddress(void);
#endif
#if(DCM_SERVICE_3E_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_TesterPresent(void);
#endif
#if(DCM_SERVICE_85_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ControlDTCSetting(void);
#endif
#if(DCM_SERVICE_86_ENABLED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) DspInternal_Uds_ResponseOnEvent(void);
#endif
#if(DCM_COSTOMIZED_SERVCIE_SUPPORTED == STD_ON)
extern FUNC(void,DCM_PUBLIC_CODE) App_CustomizedServcie(P2VAR(Dcm_MsgContextType,AUTOMATIC,DCM_APPL_DATA) pMsgContext);
#endif
#define DCM_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,72 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DCM_CBK_H_
#define _DCM_CBK_H_
/*******************************************************************************
* Include files
********************************************************************************/
#include "Dcm.h"
/*******************************************************************************
* Global Function Prototype
********************************************************************************/
#define DCM_START_SEC_PUBLIC_CODE
#include "MemMap.h"
extern FUNC(BufReq_ReturnType,DCM_PUBLIC_CODE) Dcm_StartOfReception
(
PduIdType DcmRxPduId,
PduLengthType TpSduLength,
P2VAR(PduLengthType,AUTOMATIC,DCM_APPL_DATA) Length
);
extern FUNC(BufReq_ReturnType,DCM_PUBLIC_CODE) Dcm_CopyRxData
(
PduIdType DcmRxPduId,
P2VAR(PduInfoType,AUTOMATIC,DCM_APPL_DATA) PduInfoPointer,
P2VAR(PduLengthType,AUTOMATIC,DCM_APPL_DATA) RxBufferSizePtr
);
extern FUNC(void,DCM_PUBLIC_CODE) Dcm_RxIndication
(
PduIdType DcmRxPduId,
NotifResultType Result
);
extern FUNC(BufReq_ReturnType,DCM_PUBLIC_CODE) Dcm_CopyTxData
(
PduIdType DcmTxPduId,
P2VAR(PduInfoType,AUTOMATIC,DCM_APPL_DATA) PduInfoPtr,
P2VAR(RetryInfoType,AUTOMATIC,DCM_APPL_DATA) RetryInfoPtr,
P2VAR(PduLengthType,AUTOMATIC,DCM_APPL_DATA) TxDataCntPtr
);
extern FUNC(void,DCM_PUBLIC_CODE) Dcm_TxConfirmation
(
PduIdType DcmTxPduId,
NotifResultType Result
);
#define DCM_STOP_SEC_PUBLIC_CODE
#include "MemMap.h"
#endif

View File

@ -0,0 +1,238 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _DCM_TYPES_H_
#define _DCM_TYPES_H_
/**************************************************************************************************
* Include files
**************************************************************************************************/
#include "Platform_Types.h"
#include "ComStack_Types.h"
/**************************************************************************************************
* Macros and Tyedef
**************************************************************************************************/
typedef uint8 Dcm_StatusType;
typedef uint8 Dcm_SecLevelType;
typedef uint8 Dcm_SesCtrlType;
typedef uint8 Dcm_ProtocolType;
typedef uint8 Dcm_NegativeResponseCodeType;
typedef uint8 Dcm_CommunicationModeType;
typedef struct
{
Dcm_ProtocolType protocolType;
}Dcm_ConfigType; /* Need change */
typedef uint8 Dcm_ConfirmationStatusType;
typedef uint8 Dcm_OpStatusType;
typedef uint8 Dcm_ReturnReadMemoryType;
typedef uint8 Dcm_ReturnWriteMemoryType;
typedef uint8 Dcm_RoeStateType;
typedef uint8 Dcm_EcuStartModeType;
typedef struct
{
uint8 ProtocolId;
uint8 TesterSourceAddr;
uint8 Sid;
uint8 SubFncId;
Dcm_EcuStartModeType EcuStartMode;
}Dcm_ProgConditionsType;
typedef uint8 Dcm_MsgItemType;
typedef uint8 CurrentSidMapType;
typedef uint8 CurrentOBDSidMapType;
typedef Dcm_MsgItemType *Dcm_MsgType;
typedef uint16 Dcm_DspMaxDidToReadType;
typedef uint32 Dcm_MsgLenType;
typedef uint32 Dcm_CurentDcmDsdServiceTableSizeType;
typedef uint32 Dcm_CurentDcmOBDServiceTableSizeType;
typedef uint32 Dcm_DspNonDefaultSessionS3ServerType;
typedef uint8 Dcm_IdContextType; /* Need change */
typedef struct
{
uint8 reqType; /* 0=physical request; 1=functional request */
uint8 suppressPosResponse;/* 0=no; 1=yes;*/
uint8 cancelOperation;/* 0=no;1=cancel pending operation */
}Dcm_MsgAddInfoType;
typedef struct
{
Dcm_MsgType reqData;
Dcm_MsgLenType reqDataLen;
Dcm_MsgType resData;
Dcm_MsgLenType resDataLen;
Dcm_MsgAddInfoType msgAddInfo;
Dcm_MsgLenType resMaxDataLen;
Dcm_IdContextType idContext;
PduIdType dcmRxPduId;
}Dcm_MsgContextType;
typedef uint8 Dcm_ResetModeType;
typedef enum
{
DCM_UNINITIALIZED = 0,
DCM_INITIALIZED = 1
}DCM_InitType;
/* Dcm_StatusType */
#define DCM_E_OK (0x00u)
#define DCM_E_COMPARE_KEY_FAILED (0x01u)
#define DCM_E_TI_PREPARE_LIMITS (0x02u)
#define DCM_E_TI_PREPARE_INCONSTENT (0x03u)
#define DCM_E_SESSION_NOT_ALLOWED (0x04u)
#define DCM_E_PROTOCOL_NOT_ALLOWED (0x05u)
#define DCM_E_ROE_NOT_ACCEPTED (0x06u)
#define DCM_E_PERIODICID_NOT_ACCEPTED (0x07u)
#define DCM_E_REQUEST_NOT_ACCEPTED (0x08u)
#define DCM_E_REQUEST_ENV_NOK (0x09u)
/* Dcm_ProtocolType */
#define DCM_OBD_ON_CAN (0x00u)
#define DCM_OBD_ON_FLEXRAY (0x01u)
#define DCM_OBD_ON_IP (0x02u)
#define DCM_UDS_ON_CAN (0x03u)
#define DCM_UDS_ON_FLEXRAY (0x04u)
#define DCM_UDS_ON_IP (0x05u)
#define DCM_ROE_ON_CAN (0x06u)
#define DCM_ROE_ON_FLEXRAY (0x07u)
#define DCM_ROE_ON_IP (0x08u)
#define DCM_PERIODICTRANS_ON_CAN (0x09u)
#define DCM_PERIODICTRANS_ON_FLEXRAY (0x0Au)
#define DCM_PERIODICTRANS_ON_IP (0x0Bu)
/* Dcm_SesCtrlType */
#define DCM_DEFAULT_SESSION (0x01u)
#define DCM_PROGRAMMING_SESSION (0x02u)
#define DCM_EXTENDED_DIAGNOSTIC_SESSION (0x03u)
#define DCM_SAFETY_SYSTEM_DIAGNOSTIC_SESSION (0x04u)
/* Dcm_SessionType*/
#define DCM_SESSION_DEFAULT (0x01u)
#define DCM_SESSION_PROGRAMMING (0x02u)
#define DCM_SESSION_EXTENDED_DIAGNOSTIC (0x04u)
#define DCM_SESSION_USERDEFINED1 (0x08u)
#define DCM_SESSION_USERDEFINED2 (0x10u)
#define DCM_SESSION_USERDEFINED3 (0x20u)
#define DCM_SESSION_USERDEFINED4 (0x40u)
#define DCM_SESSION_USERDEFINED5 (0x80u)
/* Dcm Flag status */
#define DCM_FLAG_ACTIVE (0x01u)
#define DCM_FLAG_DISACTIVE (0x00u)
/* Dcm_SecLevelType */
#define DCM_SEC_LEV_LOCK (0x01u)
#define DCM_SEC_LEV_L1 (0x02u)
#define DCM_SEC_LEV_L2 (0x04u)
#define DCM_SEC_LEV_L3 (0x08u)
#define DCM_SEC_LEV_L4 (0x10u)
#define DCM_SEC_LEV_L5 (0x20u)
#define DCM_SEC_LEV_L6 (0x40u)
#define DCM_SEC_LEV_L7 (0x80u)
#define DCM_SEC_LEV_ALL (0xffu)
/* invalid handle or received id*/
#define DCM_INVALID_HANDLE_OR_ID ((uint8)0xFF)
/* Negative Response Service Id */
#define DCM_NEGATIVE_RES_SERVICE_ID (0x7Fu)
/* Dcm_NegativeResponseCodeType */
#define DCM_E_POSITIVERESPONSE (0x00u)
#define DCM_E_GENERALREJECT (0x10u)
#define DCM_E_SERVICENOTSUPPORTED (0x11u)
#define DCM_E_SUBFUNCTIONNOTSUPPORTED (0x12u)
#define DCM_E_INCORRECTMESSAGELENGTHORINVALIDFORMAT (0x13u)
#define DCM_E_BUSYREPEATREQUEST (0x21u)
#define DCM_E_CONDITIONSNOTCORRECT (0x22u)
#define DCM_E_REQUESTSEQUENCEERROR (0x24u)
#define DCM_E_REQUESTOUTOFRANGE (0x31u)
#define DCM_E_SECURITYACCESSDENIED (0x33u)
#define DCM_E_INVALIDKEY (0x35u)
#define DCM_E_EXCEEDNUMBEROFATTEMPTS (0x36u)
#define DCM_E_REQUIREDTIMEDELAYNOTEXPIRED (0x37u)
#define DCM_E_UPLOADDOWNLOADNOTACCEPTED (0x70u)
#define DCM_E_TRANSFERDATASUSPENDED (0x71u)
#define DCM_E_GENERALPROGRAMMINGFAILURE (0x72u)
#define DCM_E_WRONGBLOCKSEQUENCECOUNTER (0x73u)
#define DCM_E_REQUESTCORRECTLYRECEIVED_RESPONSEPENDING (0x78u)
#define DCM_E_SUBFUNCTIONNOTSUPPORTEDINACTIVESESSION (0x7Eu)
#define DCM_E_SERVICENOTSUPPORTEDINACTIVESESSION (0x7Fu)
#define DCM_E_RPMTOOHIGH (0x81u)
#define DCM_E_RPMTOOLOW (0x82u)
#define DCM_E_ENGINEISRUNNING (0x83u)
#define DCM_E_ENGINEISNOTRUNNING (0x84u)
#define DCM_E_ENGINERUNTIMETOOLOW (0x85u)
#define DCM_E_TEMPERATURETOOHIGH (0x86u)
#define DCM_E_TEMPERATURETOOLOW (0x87u)
#define DCM_E_VEHICLESPEEDTOOHIGH (0x88u)
#define DCM_E_VEHICLESPEEDTOOLOW (0x89u)
#define DCM_E_THROTTLE_PEDALTOOHIGH (0x8Au)
#define DCM_E_THROTTLE_PEDALTOOLOW (0x8Bu)
#define DCM_E_TRANSMISSIONRANGENOTINNEUTRAL (0x8Cu)
#define DCM_E_TRANSMISSIONRANGENOTINGEAR (0x8Du)
#define DCM_E_BRAKESWITCH_NOTCLOSED (0x8Fu)
#define DCM_E_SHIFTERLEVERNOTINPARK (0x90u)
#define DCM_E_TORQUECONVERTERCLUTCHLOCKED (0x91u)
#define DCM_E_VOLTAGETOOHIGH (0x92u)
#define DCM_E_VOLTAGETOOLOW (0x93u)
/* Dcm_CommunicationModeType */
#define DCM_ENABLE_RX_TX_NORM (0x00u)
#define DCM_ENABLE_RX_DISABLE_TX_NORM (0x01u)
#define DCM_DISABLE_RX_ENABLE_TX_NORM (0x02u)
#define DCM_DISABLE_RX_TX_NORMAL (0x03u)
#define DCM_ENABLE_RX_TX_NM (0x04u)
#define DCM_ENABLE_RX_DISABLE_TX_NM (0x05u)
#define DCM_DISABLE_RX_ENABLE_TX_NM (0x06u)
#define DCM_DISABLE_RX_TX_NM (0x07u)
#define DCM_ENABLE_RX_TX_NORM_NM (0x08u)
#define DCM_ENABLE_RX_DISABLE_TX_NORM_NM (0x09u)
#define DCM_DISABLE_RX_ENABLE_TX_NORM_NM (0x0Au)
#define DCM_DISABLE_RX_TX_NORM_NM (0x0Bu)
/* Dcm_ConfirmationStatusType */
#define DCM_RES_POS_OK (0x00u)
#define DCM_RES_POS_NOT_OK (0x01u)
#define DCM_RES_NEG_OK (0x02u)
#define DCM_RES_NEG_NOT_OK (0x03u)
/* Dcm_OpStatusType */
#define DCM_INITIAL (0x00u)
#define DCM_PENDING (0x01u)
#define DCM_CANCEL (0x02u)
#define DCM_FORCE_RCRRP_OK (0x03u)
/* Dcm_ReturnReadMemoryType */
#define DCM_READ_OK (0x00u)
#define DCM_READ_PENDIN (0x01u)
#define DCM_READ_FAILED (0x02u)
/* Dcm_ReturnWriteMemoryType */
#define DCM_WRITE_OK (0x00u)
#define DCM_WRITE_PENDIN (0x01u)
#define DCM_WRITE_FAILED (0x02u)
/* Dcm_RoeStateType */
#define DCM_ROE_ACTIVE (0x00u)
#define DCM_ROE_UNACTIV (0x01u)
/* Dcm_EcuStartModeType */
#define DCM_COLD_START (0x00u)
#define DCM_WARM_START (0x01u)
/* Dcm_ResetModeType */
#define DCM_NO_RESET (0x00u)
#define DCM_HARD_RESET (0x01u)
#define DCM_KEY_ON_OFF_RESET (0x02u)
#define DCM_SOFT_RESET (0x03u)
#define DCM_ENABLE_RAPID_POWER_SHUTDOWN_RESET (0x04u)
#define DCM_DISABLE_RAPID_POWER_SHUTDOWN_RESET (0x05u)
#define DCM_BOOTLOADER_RESET (0x06u)
#define DCM_SS_BOOTLOADER_RESET (0x07u)
#define DCM_RESET_EXECUTION (0x08u)
#endif

View File

@ -0,0 +1,56 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _PduR_h_
#define _PduR_h_
/*#include "Mem_Map.h"*/
#include "PduR_Types.h"
/*********************************************************************************************************************/
/* Module Identificatiion */
/*********************************************************************************************************************/
#define PduR_NumOfCOMTxObj COM_TXIPDUNUM //com層定義的非診斷 發送報文的id
#define PduR_NumOfCanIfRxObj 26u //没有用到,好奇怪;
#define PduR_NumOfCanTpRxSDU CANTP_NUM_RX_SDUS //診斷的rxCANID個數本工程分別是 750 7df
#define PDUR_NULL ((void*)0)
typedef uint16 PduR_PathIndex;
//extern const PduRRoutingTable* gPduRRoutTableComPtr;
//extern void PduR_Init(const PduR_PBConfigType* ConfigPtr);
/* 按照COM Tx(CANIf CanTP LINIf LINTP FrIf FrTP)順序*/
extern const PduRRoutingTableIndexType PduRComRoutingTableIndex[];
/* 按照DCM Tx 順序*/ /*最小路由*/
extern const PduRRoutingTableIndexType PduRDcmRoutingTableIndex[2];
/* 按照CanIf Rx 順序*/
extern const PduRRoutingTableIndexType PduRCanIfRoutingTableIndex[PduR_NumOfCanIfRxObj];
/* 按照CanTp Rx 順序*/
//extern const PduRRoutingTableIndexType PduRCanTpRoutingTableIndex[18];///hhhhh
//extern const PduRRoutingTableIndexType PduRCanTpRoutingTableIndex[PduR_NumOfCanTpRxSDU];///hhhhh
extern const PduRDestPdu_Type PduRDestPduHandles[];
extern const PduRSrcPdu_Type PduRSrcPduHandles[];
//extern const PduRRoutingTableIndexType PduRComRoutingTableIndex[PduR_NumOfCOMTxObj];
#endif /*_PduR_h_ */

View File

@ -0,0 +1,106 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _PDUR_CANTP_H_
# define _PDUR_CANTP_H_
/*********************************************************************************************************************/
/* Include Files */
/*********************************************************************************************************************/
# include "PduR_Types.h"
/*********************************************************************************************************************/
/* Version (abcd: Main version ab Sub Version cd ) */
/*********************************************************************************************************************/
/*********************************************************************************************************************/
/* API declaration */
/*********************************************************************************************************************/
/*===========================================PDUR_START_SEC_CODE=====================================================*/
/* BEGIN_FUNCTION_HDR
********************************************************************
* Function Name:
* Description:
*
*
* Inputs:
*
*
* Outputs:
*
*
* Limitations:
********************************************************************
END_FUNCTION_HDR*/
extern void CanTp_ChannelInit(PduIdType tpChannel);
extern FUNC(BufReq_ReturnType, PDUR_CODE) PduR_CanTpStartOfReception
(
PduIdType id,
PduLengthType TpSduLength,
PduLengthType* bufferSizePtr
);
/**********************************************************************************************************************
| NAME: PduR_CanTpCopyRxData
| CALLED BY: CAN Transport Protocol
| DESCRIPTION: See PDUR350 for a complete API description
**********************************************************************************************************************/
extern FUNC(BufReq_ReturnType, PDUR_CODE) PduR_CanTpCopyRxData
(
PduIdType id,
PduInfoType* info,
PduLengthType* bufferSizePtr
);
/**********************************************************************************************************************
| NAME: PduR_CanTpRxIndication
| CALLED BY: CAN Transport Protocol
| DESCRIPTION: See PDUR353 for a complete API description
**********************************************************************************************************************/
extern FUNC(void, PDUR_CODE) PduR_CanTpRxIndication(PduIdType CanTpRxPduId, NotifResultType Result);
/**********************************************************************************************************************
| NAME: PduR_CanTpCopyTxData
| CALLED BY: CAN Transport Protocol
| DESCRIPTION: See PDUR356 for a complete API description
**********************************************************************************************************************/
extern FUNC(BufReq_ReturnType, PDUR_CODE) PduR_CanTpCopyTxData
(
PduIdType id,
PduInfoType* info,
RetryInfoType* retry,
PduLengthType* availableDataPtr
);
/**********************************************************************************************************************
| NAME: PduR_CanTpTxConfirmation
| CALLED BY: CAN Transport Protocol
| DESCRIPTION: See PDUR359 for a complete API description
**********************************************************************************************************************/
extern FUNC(void, PDUR_CODE) PduR_CanTpTxConfirmation (PduIdType CanTpTxPduId, NotifResultType Result);
#endif /* !defined(PDUR_CANTP_H) */

View File

@ -0,0 +1,69 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _PduR_Cfg_h_
#define _PduR_Cfg_h_
#include "CanTp.h"
#include "Dcm_Cbk.h"
/*
#define gHanldPDUIdCom2CAN0_0x100 0
#define gHanldPDUIdCom2CAN1_0x200 1
#define gHanldPDUIdCom2CAN0 0
#define gHanldPDUIdCom2CAN0 0
*/
/* Container Name:PduRBswModules Com */
#define PduRComCancelReceive STD_ON
#define PduRComCancelTransmit STD_ON
#define PduRComChangeParameterRequestApi STD_ON
#define PduRComCommunicationInterface STD_ON
#define PduRComLowerModule STD_ON
#define PduRRetransmission
#define PduRTransportProtocol
#define PduRTriggertransmit
#define PduRComTxConfirmation STD_ON
#define PduRUpperModule STD_OFF
#define PduRUseTag
//#define PduRBswModuleRef
/* Container Name:PduRGeneral Com */
#define PDUR_DEV_ERROR_DETECT
#define PDUR_VERSION_INFO_API
#define PDUR_ZERO_COST_OPERATION
#define PDUR_NUM_OF_CANIF_TX_HANLDE 6 //好像沒有用到
#define PDUR_NUM_OF_COM_TX_HANLDE 3 //好像沒有用到
//#define PDUR_NUM_OF_CANIF_TX_HANLDE PDUR_NUM_OF_CANIF_TX_HANLDE
//#define PUDR_COM_MAX_ID PDUR_NUM_OF_COM_TX_HANLDE
#define PduRCanTpDcmRxFun 1
#define PduRCanTpDcmRxPhy 0
#define PduRCanTpDcmTxID 0
extern const CanTp_CfgType CanTp_Cfg;
#endif

View File

@ -0,0 +1,54 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#if !defined(PDUR_DCM_H)
# define PDUR_DCM_H
/*********************************************************************************************************************/
/* Include Files */
/*********************************************************************************************************************/
# include "PduR_Types.h"
/*********************************************************************************************************************/
/* Version */
/*********************************************************************************************************************/
/*********************************************************************************************************************/
/* API declaration */
/*********************************************************************************************************************/
//# if(PDUR_DCM_SUPPORT == STD_ON)
/**********************************************************************************************************************
| NAME: PduR_DcmTransmit
| CALLED BY: DCM
| DESCRIPTION: See PDUR408 for a complete API description
**********************************************************************************************************************/
extern FUNC(Std_ReturnType, PDUR_CODE) PduR_DcmTransmit
(
PduIdType DcmTxPduId,
PduInfoType* PduInfoPtr
);
extern FUNC(Std_ReturnType, PDUR_CODE) PduR_DcmCancelTransmitRequest
(
PduIdType id
);
#endif /* !defined(PDUR_DCM_H) */

View File

@ -0,0 +1,244 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef _PduR_Types_h_
#define _PduR_Types_h_
#include "ComStack_Types.h"
typedef uint8 PduR_PBConfigIdType;
typedef int PduR_RoutingTableIdType;
typedef enum
{
PDUR_UNINIT = 0,
PDUR_ONLINE = 1,
PDUR_REDUCED = 2
} PduR_StateType;
typedef Std_ReturnType PduR_ReturnType;
/*
# define PDUR_MODULE_ID (0x33u)
# define NumOfCANTxHanlds 0x08
# define NumOfLINTxHanlds 0
# define NumOfFrTxHanlds 0
# define NumOfTxHanlds NumOfCANTxHanlds+NumOfLINTxHanlds+NumOfFrTxHanlds
# define NumOfCANRxHanlds 0x06
# define NumOfLINRxHanlds 0
# define NumOfFrRxHanlds 0
# define NumOfRxHanlds NumOfCANRxHanlds+NumOfLINRxHanlds+NumOfFrRxHanlds
*/
/* container:PduRDestPdu */
typedef uint16 PduRTpThreshold_Tpye;
typedef uint8* PduRDestTxBufferPtr;
typedef uint8 PeuRRouting_Type;
#define SingleCast 0x01
#define MultipCast 0x02
#define UnDefined 0xff
#define PDUR_TRANSMISSION_CONFIRMATION STD_ON
#define PDUR_TRANSMISSION_CONFIRMATION STD_ON
typedef enum{
PDUR_DIRECT = 1,
PDUR_TRIGGERTRANSMIT = 2
}Routing_Tpye;
typedef uint8 gPduRHandleType;
typedef uint8 PduIdDirType;
#define ToCanIfRef 1u
#define ToCanTpRef 2u
#define ToLinIfRef 3u
#define ToLinTpRef 4u
#define ToFrIfRef 5u
#define ToFrTpRef 6u
#define ToComRef 7u
#define ToDcmRef 8u
#define FromCanIfRef 1u
#define FromCanTpRef 2u
#define FromLinIfRef 3u
#define FromLinTpRef 4u
#define FromFrIfRef 5u
#define FromFrTpRef 6u
#define FromComRef 7u
#define FromDcmRef 8u
typedef struct{
gPduRHandleType PduRHandle;
}PduRBswModulesType;
typedef struct
{
uint8 PduRDefaultValueElementElement;
uint8 PduRDefaultValueElementBytePosition;
}PduRDefaultValueElementType;
typedef struct
{
PduIdDirType PduRDestPduRef;
uint8 PduRDestPduDataProvision;
/*
uint16 PduRTpThreshold;
PduRDestTxBufferPtr PduRDestTxBufferRef;
PduRDefaultValueElementType PduRDefaultValueElement;
*/
PduIdType PduRDestPduHandleId;
boolean PduRTransmissionConfirmation;
}PduRDestPdu_Type;
typedef struct
{
uint16 PduRMaxTpBufferNumber;
uint16 PduRTpBufferLength;
}PduRTpBufferTable_Type;
typedef enum{
DEFFERED,
IMMEDIATE
}PduRBufferFIFOType;
/* for If GW */
typedef struct
{
uint16 PduRMaxTxBufferNumber;
uint8 PduRBufferLength;
uint8 PduRBufferDepth;
PduRBufferFIFOType PduRBufferFIFO;
}PduRTxBufferTable_Type;
typedef struct
{
PduIdType PduRSrcPduHandleId;
PduIdDirType PduRSrcPduRef;
}PduRSrcPdu_Type;
typedef struct{
//uint8 PduDir;
uint16 const PduRDestPduIndex;
uint16 const PduRSrcPduIndex;
//PduRSrcPdu_Type PduRSrcPduHanlde;
//PduIdType PduRSrcPduHanlde;
}PduRRoutingPath_Type;
typedef struct{
uint8 ConfCnt;
//PduIdType CurrentComHandle;
}ComTxConfCnt_Type;
typedef struct{
uint8 PduRIsEnabledAtInit;
uint16 PduRRoutingPathGroupId;
PduRDestPdu_Type const* PduRDestPduRef;
}PduRRoutingPathGroup_Type;
typedef struct{
uint8 NumOfRelatedHanldId;
}relatedComHanldId;
typedef struct{
PduIdType gPduHandle;
PduIdDirType UpperLayer;
}CanIfConfMapping;
typedef struct{
PduIdType UpperHandle;
PduIdDirType UpperLayer;
}CanTpConfMapping;
typedef struct{
PduIdType RxMappingIndex;
PduIdDirType UpperLayer;
}CanTpIndMapping;
typedef struct{
PduRRoutingPath_Type PduRRoutingPath;
}PduRRoutingTable;
typedef struct{
uint8 NumOfDest;
const PduRRoutingTable* PduRTablePtr;
}PduRRoutingTableIndexType;
typedef struct{
const PduRRoutingTableIndexType* PduRComRoutingTableIndexPtr;
const PduRRoutingTableIndexType* PduRDcmRoutingTableIndexPtr;
const PduRRoutingTableIndexType* PduRCanIfRoutingTableIndexPtr;
const PduRRoutingTableIndexType* PduRCanTpRoutingTableIndexPtr;
uint8* PduRComRoutPathDestCntPtr;
uint8* PduRDcmRoutPathDestCntPtr;
uint8* PduRCanIfRoutPathDestCntPtr;
uint8* PduRCanTpRoutPathDestCntPtr;
}PduR_PBConfigType;
#endif

View File

@ -0,0 +1,109 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef __ERROR_H__
#define __ERROR_H__
#include "common_types.h"
//#define ERROR_NEGATIVE
#ifdef ERROR_NEGATIVE
typedef s16 err_flag_e;
#define ERR_OK 0 /* OK */
#define ERR_SPEED (-1) /* This device does not work in the active speed mode. */
#define ERR_RANGE (-2) /* Parameter out of range. */
#define ERR_VALUE (-3) /* Parameter of incorrect value. */
#define ERR_OVERFLOW (-4) /* Timer overflow. */
#define ERR_MATH (-5) /* Overflow during evaluation. */
#define ERR_ENABLED (-6) /* Device is enabled. */
#define ERR_DISABLED (-7) /* Device is disabled. */
#define ERR_BUSY (-8) /* Device is busy. */
#define ERR_ID_NOEXIST (-9) /* ID not exist . */
#define ERR_ID_INVALID (-10) /* ID is invalid . */
#define ERR_NOTAVAIL (-11) /* Requested value or method not available. */
#define ERR_RXEMPTY (-12) /* No data in receiver. */
#define ERR_TXFULL (-13) /* Transmitter is full. */
#define ERR_BUSOFF (-14) /* Bus not available. */
#define ERR_OVERRUN (-15) /* Overrun error is detected. */
#define ERR_FRAMING (-16) /* Framing error is detected. */
#define ERR_PARITY (-17) /* Parity error is detected. */
#define ERR_NOISE (-18) /* Noise error is detected. */
#define ERR_IDLE (-19) /* Idle error is detected. */
#define ERR_FAULT (-20) /* Fault error is detected. */
#define ERR_BREAK (-21) /* Break char is received during communication. */
#define ERR_CRC (-22) /* CRC error is detected. */
#define ERR_ARBITR (-23) /* A node losts arbitration. This error occurs if two nodes start transmission at the same time. */
#define ERR_PROTECT (-24) /* Protection error is detected. */
#define ERR_UNDERFLOW (-25) /* Underflow error is detected. */
#define ERR_UNDERRUN (-26) /* Underrun error is detected. */
#define ERR_COMMON (-27) /* Common error of a device. */
#define ERR_LINSYNC (-28) /* LIN synchronization error is detected. */
#define ERR_FAILED (-29) /* Requested functionality or process failed. */
#else
/*總的錯誤提示 */
typedef enum
{
ERR_OK= 0, /* OK */
ERR_SPEED, /* This device does not work in the active speed mode. */
ERR_RANGE, /* Parameter out of range. */
ERR_VALUE, /* Parameter of incorrect value. */
ERR_OVERFLOW , /* Timer overflow. */
ERR_MATH , /* Overflow during evaluation. */
ERR_ENABLED , /* Device is enabled. */
ERR_DISABLED , /* Device is disabled. */
ERR_BUSY , /* Device is busy. */
ERR_ID_NOEXIST, /* ID not exist . */
ERR_ID_INVALID, /* ID is invalid . */
ERR_NOTAVAIL, /* Requested value or method not available. */
ERR_RXEMPTY , /* No data in receiver. */
ERR_TXFULL , /* Transmitter is full. */
ERR_BUSOFF , /* Bus not available. */
ERR_OVERRUN , /* Overrun error is detected. */
ERR_FRAMING , /* Framing error is detected. */
ERR_PARITY , /* Parity error is detected. */
ERR_NOISE , /* Noise error is detected. */
ERR_IDLE , /* Idle error is detected. */
ERR_FAULT , /* Fault error is detected. */
ERR_BREAK , /* Break char is received during communication. */
ERR_CRC , /* CRC error is detected. */
ERR_ARBITR , /* A node losts arbitration. This error occurs if two nodes start transmission at the same time. */
ERR_PROTECT, /* Protection error is detected. */
ERR_UNDERFLOW ,/* Underflow error is detected. */
ERR_UNDERRUN ,/* Underrun error is detected. */
ERR_COMMON ,/* Common error of a device. */
ERR_LINSYNC ,/* LIN synchronization error is detected. */
ERR_FAILED ,/* Requested functionality or process failed. */
ERR_QFULL ,/* Queue is full. */
}err_flag_e;
#endif
#endif /* __TYPES_H__ */

View File

@ -0,0 +1,120 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef __OS_TYPES_H__
#define __OS_TYPES_H__
#include "common_types.h"
#if 0
#ifndef TRUE
#define TRUE 1
#endif /* TRUE */
#ifndef FALSE
#define FALSE 0
#endif /* FALSE */
#endif
#ifndef NULL
#define NULL 0
#endif /* NULL */
typedef const unsigned char C8;
typedef const unsigned int C16;
typedef unsigned char BOOL; /* 布爾變量 */
typedef unsigned char U8; /* 無符號8位整型變量 */
typedef signed char S8; /* 有符號8位整型變量 */
typedef unsigned int U16; /* 無符號16位整型變量 */
typedef signed int S16; /* 有符號16位整型變量 */
typedef unsigned long U32; /* 無符號32位整型變量 */
typedef signed long S32; /* 有符號32位整型變量 */
typedef float F32; /* 單精度浮點數32位長度 */
typedef double F64; /* 雙精度浮點數64位長度 */
typedef void OS_VOID;
typedef char OS_CHAR; /* 8-bit character */
typedef unsigned char OS_BOOL; /* 8-bit boolean or logical */
typedef unsigned char OS_U8; /* 8-bit unsigned integer */
typedef signed char OS_S8; /* 8-bit signed integer */
typedef unsigned short OS_U16; /* 16-bit unsigned integer */
typedef signed short OS_S16; /* 16-bit signed integer */
typedef unsigned int OS_U32; /* 32-bit unsigned integer */
typedef signed int OS_S32; /* 32-bit signed integer */
typedef unsigned long long OS_U64; /* 64-bit unsigned integer */
typedef signed long long OS_S64; /* 64-bit signed integer */
typedef float OS_F32; /* 32-bit floating point */
typedef double OS_F64; /* 64-bit floating point */
typedef volatile OS_U8 OS_V08; /* 8-bit register */
typedef volatile OS_U16 OS_V16; /* 16-bit register */
typedef volatile OS_U32 OS_V32; /* 32-bit register */
typedef volatile OS_U64 OS_V64; /* 64-bit register */
typedef void (*CPU_FNCT_VOID)(void); /* See Note #2a. */
typedef void (*CPU_FNCT_PTR )(void *p_obj); /* See Note #2b. */
typedef OS_U16 OS_CPU_USAGE; /* CPU Usage 0..10000 <16>/32 */
typedef OS_U32 OS_CTR; /* Counter, 32 */
typedef OS_U32 OS_CTX_SW_CTR; /* Counter of context switches, 32 */
typedef OS_U32 OS_CYCLES; /* CPU clock cycles, <32>/64 */
typedef OS_U32 OS_FLAGS; /* Event flags, 8/16/<32> */
typedef OS_U32 OS_IDLE_CTR; /* Holds the number of times the idle task runs, <32>/64 */
typedef OS_U16 OS_MEM_QTY; /* Number of memory blocks, <16>/32 */
typedef OS_U16 OS_MEM_SIZE; /* Size in bytes of a memory block, <16>/32 */
typedef OS_U16 OS_MSG_QTY; /* Number of OS_MSGs in the msg pool, <16>/32 */
typedef OS_U16 OS_MSG_SIZE; /* Size of messages in number of bytes, <16>/32 */
typedef OS_U8 OS_NESTING_CTR; /* Interrupt and scheduler nesting, <8>/16/32 */
typedef OS_U16 OS_OBJ_QTY; /* Number of kernel objects counter, <16>/32 */
typedef OS_U32 OS_OBJ_TYPE; /* Special flag to determine object type, 32 */
typedef OS_U16 OS_OPT; /* Holds function options <16>/32 */
typedef OS_U8 OS_PRIO; /* Priority of a task, <8>/16/32 */
typedef OS_U16 OS_QTY; /* Quantity <16>/32 */
typedef OS_U32 OS_RATE_HZ; /* Rate in Hertz 32 */
typedef OS_U32 OS_REG; /* Task register 8/16/<32> */
typedef OS_U8 OS_REG_ID; /* Index to task register <8>/16/32 */
typedef OS_U32 OS_SEM_CTR; /* Semaphore value 16/<32> */
typedef OS_U8 OS_STATE; /* State variable <8>/16/32 */
typedef OS_U8 OS_STATUS; /* Status <8>/16/32 */
//typedef OS_U16 OS_TICK; /* Clock tick counter <32>/64 */
typedef OS_U16 OS_TICK_SPOKE_IX; /* Tick wheel spoke position 8/<16>/32 */
typedef OS_U16 OS_TMR_SPOKE_IX; /* Timer wheel spoke position 8/<16>/32 */
typedef OS_U32 OS_TS32;
typedef OS_U64 OS_TS64;
typedef OS_TS32 OS_TS; /* Req'd for backwards-compatibility. */
typedef OS_U8 OS_TIME_ID;
#define OS_TRUE 1u
#define OS_FALSE 0u
#define OS_NULL 0u
/* 符號類型的值範圍 */
#define U8_MAX (255)
#define S8_MAX (127)
#define S8_MIN (-128)
#define U16_MAX (65535u)
#define S16_MAX (32767)
#define S16_MIN (-32768)
#define U32_MAX (4294967295uL)
#define S32_MAX (2147483647)
#define S32_MIN (-2147483648uL)
//#define TEST_WHILE_ENABLE //測試的 while(1);開啟
#endif /* __TYPE_H__ */

View File

@ -0,0 +1,208 @@
/** ##########################################################################
** Filename : SimpleOs.c
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "Cpu.h"
#include "SimpleOs_Cfg.h"
#include "common_memory.h"
#include "SimpleOs_CallOut.h"
#include "SimpleOs_Time.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
#define OS_TASK_PRE_READY (uint8_t)0
#define OS_TASK_RUNNING (uint8_t)1
#define OS_TASK_WAITING (uint8_t)2
#define OS_TASK_READY (uint8_t)3
#define OS_TASK_SUSPENDED (uint8_t)4
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
typedef struct
{
uint8_t ucTaskState[OS_TASK_MAX_NUM];
uint8_t ucEventState[OS_EVENT_TASK_MAX_NUM];
uint8_t ucTaskRunNum;
uint8_t ucMoreTaskCnt;
} SimpleOs_Struct_Type;
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
static SimpleOs_Struct_Type SimpleOs_Struct;
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
static void SimpleOs_MainFunction(void);
/*****************************************************************************
|Prototype : SimpleOs_Init
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void SimpleOs_Init(void)
{
common_memory_fill( (uint8_t *)&SimpleOs_Struct, 0u, sizeof(SimpleOs_Struct) / sizeof(uint8_t));
}
/*****************************************************************************
|Prototype : SimpleOs_Start
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void SimpleOs_Start(void)
{
(void)SimpleOs_Init();
(void)SimpleOsTime_Init();
(void)OS_StartUpHook();
(void)SimpleOs_MainFunction();
}
/*****************************************************************************
|Prototype : SimpleOs_ActiveTask
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void SimpleOs_ActiveTask(uint8_t TaskId)
{
if(TaskId < (uint8_t)OS_TASK_MAX_NUM)
{
if((uint8_t)OS_TASK_PRE_READY == SimpleOs_Struct.ucTaskState[TaskId])
{
OS_EnterCriticalArea_0();/*PRQA S 3138*/
SimpleOs_Struct.ucTaskState[TaskId] = OS_TASK_READY;
OS_LeaveCriticalArea_0();/*PRQA S 3138*/
}
}
}
/*****************************************************************************
|Prototype : SimpleOs_MainFunction
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void SimpleOs_MainFunction(void)
{
for(;;)
{
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task1ms])
{
SimpleOs_Struct.ucTaskState[OS_Task1ms] = OS_TASK_RUNNING;
OS_Task1msFun();
SimpleOs_Struct.ucTaskState[OS_Task1ms] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task2ms])
{
SimpleOs_Struct.ucTaskState[OS_Task2ms] = OS_TASK_RUNNING;
OS_Task2msFun();
SimpleOs_Struct.ucTaskState[OS_Task2ms] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task5msA])
{
SimpleOs_Struct.ucTaskState[OS_Task5msA] = OS_TASK_RUNNING;
OS_Task5msAFun();
SimpleOs_Struct.ucTaskState[OS_Task5msA] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task5msB])
{
SimpleOs_Struct.ucTaskState[OS_Task5msB] = OS_TASK_RUNNING;
OS_Task5msBFun();
SimpleOs_Struct.ucTaskState[OS_Task5msB] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task5msC])
{
SimpleOs_Struct.ucTaskState[OS_Task5msC] = OS_TASK_RUNNING;
OS_Task5msCFun();
SimpleOs_Struct.ucTaskState[OS_Task5msC] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task10msA])
{
SimpleOs_Struct.ucTaskState[OS_Task10msA] = OS_TASK_RUNNING;
OS_Task10msAFun();
SimpleOs_Struct.ucTaskState[OS_Task10msA] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task10msB])
{
SimpleOs_Struct.ucTaskState[OS_Task10msB] = OS_TASK_RUNNING;
OS_Task10msBFun();
SimpleOs_Struct.ucTaskState[OS_Task10msB] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task10msC])
{
SimpleOs_Struct.ucTaskState[OS_Task10msC] = OS_TASK_RUNNING;
OS_Task10msCFun();
SimpleOs_Struct.ucTaskState[OS_Task10msC] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task10msD])
{
SimpleOs_Struct.ucTaskState[OS_Task10msD] = OS_TASK_RUNNING;
OS_Task10msDFun();
SimpleOs_Struct.ucTaskState[OS_Task10msD] = OS_TASK_PRE_READY;
}
if((uint8_t)OS_TASK_READY == SimpleOs_Struct.ucTaskState[OS_Task10msE])
{
SimpleOs_Struct.ucTaskState[OS_Task10msE] = OS_TASK_RUNNING;
OS_Task10msEFun();
SimpleOs_Struct.ucTaskState[OS_Task10msE] = OS_TASK_PRE_READY;
}
(void)OS_ErrorHook();
}
}

View File

@ -0,0 +1,56 @@
/** ##########################################################################
** Filename : SimpleOs.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef SAMPLE_OS_H
#define SAMPLE_OS_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "common_types.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
extern void SimpleOs_ActiveTask(uint8_t TaskId);
extern void SimpleOs_Start(void);
#endif

View File

@ -0,0 +1,89 @@
/** ##########################################################################
** Filename : SimpleOs_CallOut.c
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "SimpleOs_CallOut.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
/*****************************************************************************
|Prototype : OS_StartUpHook
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void OS_StartUpHook(void)
{
}
/*****************************************************************************
|Prototype : OS_ErrorHook
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void OS_ErrorHook(void)
{
}

View File

@ -0,0 +1,53 @@
/** ##########################################################################
** Filename : SimpleOs_CallOut.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef SAMPLE_OS_CALLOUT_H
#define SAMPLE_OS_CALLOUT_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
extern void OS_StartUpHook(void);
extern void OS_ErrorHook(void);
#endif

View File

@ -0,0 +1,132 @@
/** ##########################################################################
** Filename : SimpleOs_Cfg.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef SAMPLE_OS_CFG_H
#define SAMPLE_OS_CFG_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "SimpleOs_TimeCfg.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
#define OS_DISABLE (0u)
#define OS_ENABLE (1u)
#define OS_Task1ms (0u)
#define OS_Task1msDeltaTicks OSTIME_TICKS(1000u)
#define OS_Task1msCycle OSTIME_TICKS(1000u)
#define OS_Task2ms (1u)
#define OS_Task2msDeltaTicks OSTIME_TICKS(2000u)
#define OS_Task2msCycle OSTIME_TICKS(2000u)
#define OS_Task5msA (2u)
#define OS_Task5msADeltaTicks OSTIME_TICKS(1000u)
#define OS_Task5msACycle OSTIME_TICKS(5000u)
#define OS_Task5msB (3u)
#define OS_Task5msBDeltaTicks OSTIME_TICKS(3000u)
#define OS_Task5msBCycle OSTIME_TICKS(5000u)
#define OS_Task5msC (4u)
#define OS_Task5msCDeltaTicks OSTIME_TICKS(5000u)
#define OS_Task5msCCycle OSTIME_TICKS(5000u)
#define OS_Task10msA (5u)
#define OS_Task10msADeltaTicks OSTIME_TICKS(2000u)
#define OS_Task10msACycle OSTIME_TICKS(10000u)
#define OS_Task10msB (6u)
#define OS_Task10msBDeltaTicks OSTIME_TICKS(4000u)
#define OS_Task10msBCycle OSTIME_TICKS(10000u)
#define OS_Task10msC (7u)
#define OS_Task10msCDeltaTicks OSTIME_TICKS(6000u)
#define OS_Task10msCCycle OSTIME_TICKS(10000u)
#define OS_Task10msD (8u)
#define OS_Task10msDDeltaTicks OSTIME_TICKS(8000u)
#define OS_Task10msDCycle OSTIME_TICKS(10000u)
#define OS_Task10msE (9u)
#define OS_Task10msEDeltaTicks OSTIME_TICKS(10000u)
#define OS_Task10msECycle OSTIME_TICKS(10000u)
#define OS_TASK_MAX_NUM (10u)
#define OS_EventOne (0u)
#define OS_EventOneDeltaTicks (1u)
#define OS_EventOneCycle OSTIME_TICKS(2000u)
#define OS_EventTwo (1u)
#define OS_EventTwoDeltaTicks (2u)
#define OS_EventTwoCycle OSTIME_TICKS(500u)
#define OS_EVENT_TASK_MAX_NUM (2u)
#define OS_STACK_ACCESS_BOTTOM (uint32*)(0x2000EC00)
#define OS_STACK_ACCESS_TOP (uint32*)(0x2000EC00+0x00000300)
#define OS_STACK_CHECK_PATTERN (0xE5AAAAAAul)
#define TASK(x) void x##Fun(void)
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
#define OS_EnterCriticalArea_0() System_DisableIrqGlobal()
#define OS_LeaveCriticalArea_0() System_EnableIrqGlobal()
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
extern void OS_Task1msFun(void);
extern void OS_Task2msFun(void);
extern void OS_Task5msAFun(void);
extern void OS_Task5msBFun(void);
extern void OS_Task5msCFun(void);
extern void OS_Task10msAFun(void);
extern void OS_Task10msBFun(void);
extern void OS_Task10msCFun(void);
extern void OS_Task10msDFun(void);
extern void OS_Task10msEFun(void);
#endif

View File

@ -0,0 +1,129 @@
/** ##########################################################################
** Filename : SimpleOs_Time.c
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "common_types.h"
#include "SimpleOs_Cfg.h"
#include "SimpleOs.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
typedef struct
{
uint16_t usAlarmTime;
uint16_t usAlarmCycleTime;
} SimpleOsTime_Struct_Type;
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
static SimpleOsTime_Struct_Type SimpleOsTime_Struct[OS_TASK_MAX_NUM];
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
static void SimpleOsTime_SetTaskAlarm(uint8_t TaskId,uint16_t deltaTicks,uint16_t cycle);
/*****************************************************************************
|Prototype : SimpleOsTime_Init
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void SimpleOsTime_Init(void)
{
(void)SimpleOsTime_SetTaskAlarm(OS_Task1ms, OS_Task1msDeltaTicks, OS_Task1msCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task2ms, OS_Task2msDeltaTicks, OS_Task2msCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task5msA, OS_Task5msADeltaTicks, OS_Task5msACycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task5msB, OS_Task5msBDeltaTicks, OS_Task5msBCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task5msC, OS_Task5msCDeltaTicks, OS_Task5msCCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task10msA, OS_Task10msADeltaTicks, OS_Task10msACycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task10msB, OS_Task10msBDeltaTicks, OS_Task10msBCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task10msC, OS_Task10msCDeltaTicks, OS_Task10msCCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task10msD, OS_Task10msDDeltaTicks, OS_Task10msDCycle);
(void)SimpleOsTime_SetTaskAlarm(OS_Task10msE, OS_Task10msEDeltaTicks, OS_Task10msECycle);
}
/*****************************************************************************
|Prototype : SimpleOsTime_SetTaskAlarm
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void SimpleOsTime_SetTaskAlarm(uint8_t TaskId,uint16_t deltaTicks,uint16_t cycle)
{
if(TaskId < (uint8_t)OS_TASK_MAX_NUM)
{
SimpleOsTime_Struct[TaskId].usAlarmCycleTime = cycle;
SimpleOsTime_Struct[TaskId].usAlarmTime = deltaTicks;
}
}
/*****************************************************************************
|Prototype : SimpleOsTime_Callback
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void SimpleOsTime_Callback(void)
{
uint8_t TaskId;
for(TaskId = 0; TaskId < OS_TASK_MAX_NUM; TaskId ++)
{
if((uint16_t)0u!= SimpleOsTime_Struct[TaskId].usAlarmTime)
{
SimpleOsTime_Struct[TaskId].usAlarmTime --;
}
if((uint16_t)0u== SimpleOsTime_Struct[TaskId].usAlarmTime)
{
(void)SimpleOs_ActiveTask(TaskId);
SimpleOsTime_Struct[TaskId].usAlarmTime = SimpleOsTime_Struct[TaskId].usAlarmCycleTime;
}
}
}

View File

@ -0,0 +1,56 @@
/** ##########################################################################
** Filename : SimpleOs_Time.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef SAMPLE_OS_TIME_H
#define SAMPLE_OS_TIME_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
extern void SimpleOsTime_Init(void);
extern void SimpleOsTime_Callback(void);
#endif

View File

@ -0,0 +1,55 @@
/** ##########################################################################
** Filename : SimpleOs_TimeCfg.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231103- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef SAMPLE_OS_TIME_CFG_H
#define SAMPLE_OS_TIME_CFG_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "common_types.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
#define OSTIME_TICKS(x) ((uint16_t)(((uint32_t)(x) /(uint32_t)1000)))
#define OSTIME_STOPTICKS (0xFFFFu)
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
#endif

View File

@ -0,0 +1,990 @@
/** ##########################################################################
** Filename : WheelHeat.c
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231107- V01-- --Linboyi--- ----
** #########################################################################*/
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "Cpu.h"
#include "common_types.h"
#include "common_memory.h"
#include "WheelHeat.h"
#include "Com_Cfg.h"
#include "adc.h"
#include "pwm_manage.h"
#include "Com.h"
#include "Com_Cfg.h"
#include "can_app.h"
#include "system_voltage_manage.h"
#include "system_voltage_manage_cfg.h"
#include "DEM_Cfg.h"
#include "Demm.h"
/*****************************************************************************
* D E F I N E S / M A C R O S11
*****************************************************************************/
#define WHEEL_HEAT_STATE_ON 1u
#define WHEEL_HEAT_STATE_OFF 0u
#define WHEEL_HEAT_STATE_HOLD 2u
#define WHEEL_HEAT_STATE_HARD_FALUT 3u
#define WHEEL_HEAT_STATE_SLOW_DOWN 4u
#define WHEEL_HEAT_TIME_30MIN (1800000ul / 10ul)
#define WHEEL_HEAT_GEAR_OFF_CLOSE_DELAY_5S (5000ul / 10ul)
#define WHEEL_HEAT_OPEN_SHORT_DETECT_2S (2000ul / 10ul)
#define WHEEL_HEAT_OPEN_SHORT_DETECT_10S (10000ul / 10ul)
#define TEMP_SENSOR_OPEN_ADC_RESULT 4900
#define TEMP_SENSOR_SHORT_ADC_RESULT 100
#define WHEEL_HEAT_WIRE_ERROR_3S (3000ul / 10ul)
#define WHEEL_HEAT_WIRE_ERROR_2S (2950ul / 10ul)
#define WHEEL_HEAT_SHORT_ADC_RESULT 640
#define WHEEL_HEAT_OPEN_ADC_RESULT (uint8_t)50
const uint16_t HEAT_LEVEL_NTC_TAB[WHEEL_HEAT_NTCLV_NUM] =
{
WHEEL_HEAT_NTC_LV3,WHEEL_HEAT_NTC_LV1,WHEEL_HEAT_NTC_LV2,WHEEL_HEAT_NTC_LV3
};
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
typedef struct
{
uint8_t ucEvent;
//uint32_t ulRunTimer;
uint8_t ucEcuControlState;
uint8_t ucDcmControlState;
uint8_t ucIsControlByDcm;
//uint8_t ucErrorTimer;
uint16_t usOffGearDelay;
uint8_t ucGearEvent;
uint16_t ucTempSensorFalutTimer;
uint16_t u16OverCurrentFalutTimer;
uint8_t u16OverCurrentFlag;
uint32_t ulForceOutput;
uint16_t usSlowDownTimer;
uint16_t usSlowDownDuty;
uint16_t usSlowDownTimerStep;
uint8_t usDigNtcState;
uint8_t usDigOverCurrent;
uint8_t ucHeatGear;
uint8_t ucLimitAcc;
uint16_t ucHeatDigaTimeOpen;
//uint16_t ucHeatWireOpenTimeOpen;
uint16_t ucHeatDigaTime;
uint16_t ucHeatWireOpenTime;
uint16_t ucHeatWireShortTime;
uint8_t ucHeatWireOpenFlag;
uint8_t ucHeatWireShortFlag;
uint8_t ucHeatPowerOnFlag;
uint8_t ucHeatOnFlag;
}WheelHeat_Struct_Type;
/**************************************1***************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
static WheelHeat_Struct_Type WheelHeat_Struct;
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
static uint8_t WheelHeat_GetEvent(void);
static void WheelHeat_Handle(void);
static void WheelHeat_RunTime(void);
static uint8_t WheelHeat_GetGearEvevt(void);
static void WheelHeat_OffGearDelay(void);
static void WheelHeat_EventProcess(void);
static void WheelHeat_CanTxProcess(void);
static void WheelHeat_Diag(void);
/*****************************************************************************
|Prototype : WheelHeat_Init
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_Init(void)
{
common_memory_fill((uint8_t *)(&WheelHeat_Struct.ucEvent), 0u, sizeof(WheelHeat_Struct));
WheelHeat_SetHeating_Gear(HEAT_LV3);
WheelHeat_Struct.ucHeatPowerOnFlag =HEAT_DIAG_ENABLE;
}
/*****************************************************************************
|Prototype : WheelHeat_SetEvent
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_SetEvent(uint8_t Event)
{
(void)System_DisableIrqGlobal();
WheelHeat_Struct.ucEvent = Event;
(void)System_EnableIrqGlobal();
}
/*****************************************************************************
|Prototype : WheelHeat_Set_Heat_Limit_ACC
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_Set_Heat_Limit_ACC(uint8_t Evevt)
{
WheelHeat_Struct.ucLimitAcc = Evevt;
}
/*****************************************************************************
|Prototype : WheelHeat_GetEvent
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static uint8_t WheelHeat_GetEvent(void)
{
uint8_t Event;
(void)System_DisableIrqGlobal();
Event = WheelHeat_Struct.ucEvent;
if(COM_RXIPDUMETER_1_DIR_4BF_TIMEOUTFLAG ==HEAT_DIAG_ENABLE)
{
WheelHeat_Set_Heat_Limit_ACC(Heat_Limit_ACC_DISABLE);
}
if((WheelHeat_Struct.ucLimitAcc == Heat_Limit_ACC_Enbale) &&(WheelHeat_Struct.ucEcuControlState == WHEEL_HEAT_STATE_OFF))
{
Event = WHEEL_HEAT_EVENT_IDLE;
}
WheelHeat_Struct.ucEvent = WHEEL_HEAT_EVENT_IDLE;
(void)System_EnableIrqGlobal();
return (Event);
}
/*****************************************************************************
|Prototype : WheelHeat_Handle
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_Handle(void)
{
uint16_t NTC_AdcResult;
uint8_t SystemVoltageMod;
uint8_t State;
NTC_AdcResult = adc_get_voltage_value(1);
SystemVoltageMod = system_voltage_manage_mode_get(FUNC_SYSTEM_VOLTAGE_MANAGE_ID);
if(WheelHeat_Struct.ucIsControlByDcm > 0u)
{
State = WheelHeat_Struct.ucDcmControlState;
}
else
{
if((SystemVoltageMod == SYSTEM_VOLTAGE_MODE_LOW) || (SystemVoltageMod == SYSTEM_VOLTAGE_MODE_HIGH))
{
State = WHEEL_HEAT_STATE_OFF;
}
else
{
State = WheelHeat_Struct.ucEcuControlState;
}
}
switch(State)
{
case WHEEL_HEAT_STATE_OFF:
if(WheelHeat_Struct.ucHeatPowerOnFlag ==HEAT_DIAG_ENABLE)
{
WheelHeat_Wire_Short_Check_PowerOn();
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, (uint8_t)1, (uint16_t)0);
}
break;
case WHEEL_HEAT_STATE_ON:
if(WheelHeat_Struct.ulForceOutput > 0)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, (uint8_t)1, (uint16_t)1000);
WheelHeat_Struct.ulForceOutput --;
if(NTC_AdcResult <= 3081)
{
WheelHeat_Struct.ulForceOutput = 0;
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
if(WheelHeat_Struct.ulForceOutput == 0)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_SLOW_DOWN;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_SLOW_DOWN;
}
}
else
{
WheelHeat_HeatingGear_STATE_ON();//档位加热功能调用
}
break;
case WHEEL_HEAT_STATE_HOLD:
WheelHeat_HeatingGear_STATE_HOLD();//档位加热功能调用
break;
case WHEEL_HEAT_STATE_SLOW_DOWN:
WheelHeat_Struct.usSlowDownTimer ++;
if(WheelHeat_Struct.usSlowDownTimer >= WheelHeat_Struct.usSlowDownTimerStep)
{
WheelHeat_Struct.usSlowDownTimer = 0;
if(WheelHeat_Struct.usSlowDownDuty > (uint16_t)600)
{
WheelHeat_Struct.usSlowDownDuty -= (uint16_t)1;
pwm_set_duty(PWM_BASE_ID_GPTM0, (uint8_t)1, WheelHeat_Struct.usSlowDownDuty);
}
else
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
}
if(NTC_AdcResult <= 3081u)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
break;
case WHEEL_HEAT_STATE_HARD_FALUT:
if(WheelHeat_Struct.ucHeatPowerOnFlag ==HEAT_DIAG_ENABLE)
{
WheelHeat_Wire_Short_Check_PowerOn();
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
}
break;
default:
while(1);
}
}
/*****************************************************************************
|Prototype : WheelHeat_RunTime
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_RunTime(void)
{
#if 0 //取消30分钟加热超时
if(WheelHeat_Struct.ucEcuControlState > WHEEL_HEAT_STATE_OFF)
{
if(WheelHeat_Struct.ulRunTimer < 0xfffffffful)
{
WheelHeat_Struct.ulRunTimer ++;
}
if(WheelHeat_Struct.ulRunTimer >= WHEEL_HEAT_TIME_30MIN)
{
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
}
}
else
{
WheelHeat_Struct.ulRunTimer = 0;
}
#endif
}
/*****************************************************************************
|Prototype : WheelHeat_SetGearEvevt
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_SetGearEvevt(uint8_t Evevt)
{
WheelHeat_Struct.ucGearEvent = Evevt;
}
/*****************************************************************************
|Prototype : WheelHeat_SetHeating_Gear
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_SetHeating_Gear(uint8_t Evevt)
{
WheelHeat_Struct.ucHeatGear = Evevt;
}
/*****************************************************************************
|Prototype : WheelHeat_SetHeating_Gear
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_HeatingGear_STATE_ON(void) //维持在客户需求温度的加热功率
{
u8 heat_gear;
uint16_t NTC_AdcResult;
NTC_AdcResult = adc_get_voltage_value(1);
if(WheelHeat_Struct.ucHeatGear == 0u)
{
WheelHeat_Struct.ucHeatGear= HEAT_LV3;
}
heat_gear = WheelHeat_Struct.ucHeatGear;
switch(heat_gear)
{
case HEAT_LV1:
if(NTC_AdcResult <= 3690u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 400u);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
}
break;
case HEAT_LV2:
if(NTC_AdcResult <= 3400u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 400);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
}
break;
case HEAT_LV3:
if(NTC_AdcResult <= 3350u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 500);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_HOLD;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_HOLD;
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
}
break;
default:
break;
}
}
/*****************************************************************************
|Prototype : WheelHeat_SetHeating_Gear
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_HeatingGear_STATE_HOLD(void)
{
u8 heat_gear;
uint16_t NTC_AdcResult;
NTC_AdcResult = adc_get_voltage_value(1);
if(WheelHeat_Struct.ucHeatGear == 0u)
{
WheelHeat_Struct.ucHeatGear= HEAT_LV3;
}
heat_gear = WheelHeat_Struct.ucHeatGear;
switch(heat_gear)
{
case HEAT_LV1:
if(NTC_AdcResult >= 3600u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_ON;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_ON;
}
else if(NTC_AdcResult < 3510u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 400);
}
break;
case HEAT_LV2:
if(NTC_AdcResult >= 3450u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_ON;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_ON;
}
if(NTC_AdcResult < 3300u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 400);
}
break;
case HEAT_LV3:
if(NTC_AdcResult >= 3280u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 1000);
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_ON;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_ON;
}
if(NTC_AdcResult < 3200u)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 500);
}
break;
default:
break;
}
}
/*****************************************************************************
|Prototype : WheelHeat_GetGearEvevt
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static uint8_t WheelHeat_GetGearEvevt(void)
{
uint8_t Event;
Event = WheelHeat_Struct.ucGearEvent;
WheelHeat_Struct.ucGearEvent = POWER_GEAR_EVENT_NULL;
return (Event);
}
/*****************************************************************************
|Prototype : WheelHeat_OffGearDelay
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_OffGearDelay(void)
{
uint8_t Event;
Event = WheelHeat_GetGearEvevt();
if(WheelHeat_Struct.usOffGearDelay)
{
WheelHeat_Struct.usOffGearDelay --;
if(WheelHeat_Struct.usOffGearDelay == 0u)
{
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
}
}
else
{
WheelHeat_Struct.usOffGearDelay = 0;
if(WheelHeat_Struct.ucEcuControlState > WHEEL_HEAT_STATE_OFF)
{
if(Event == POWER_GEAR_EVENT_OFF)
{
WheelHeat_Struct.usOffGearDelay = WHEEL_HEAT_GEAR_OFF_CLOSE_DELAY_5S;
}
}
}
}
/*****************************************************************************
|Prototype : WheelHeat_ControlForDcm
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_ControlForDcm(uint8_t Open)
{
WheelHeat_Struct.ucIsControlByDcm = 1u;
if(Open)
{
if(WheelHeat_Struct.ucDcmControlState == WHEEL_HEAT_STATE_OFF)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_ON;
}
WheelHeat_Struct.ucTempSensorFalutTimer = 0;
WheelHeat_Struct.u16OverCurrentFalutTimer = 0;
}
else
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
}
}
/*****************************************************************************
|Prototype : WheelHeat_ReturnControlForEcu
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_ReturnControlForEcu(void)
{
WheelHeat_Struct.ucIsControlByDcm = 0u;
}
/*****************************************************************************
|Prototype : WheelHeat_EventProcess
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_EventProcess(void)
{
uint8_t Event;
uint8_t PowerGear;
uint16_t NTC_AdcResult;
Event = WheelHeat_GetEvent();
NTC_AdcResult = adc_get_voltage_value(1);
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR,&PowerGear);
if(WHEEL_HEAT_EVENT_OPEN == Event)
{
if(PowerGear == POWER_GEAR_ON || PowerGear == POWER_GEAR_ACC)
{
if(WheelHeat_Struct.ucEcuControlState == WHEEL_HEAT_STATE_OFF)
{
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_ON;
WheelHeat_Struct.ucHeatPowerOnFlag = HEAT_DIAG_DISABLE;
if(NTC_AdcResult >= TEMP_POSITIVE_0C && NTC_AdcResult < TEMP_NEGATIVE_5C)
{
WheelHeat_Struct.ulForceOutput = WHEEL_HEAT_FORCE_OUTPUT_4MIN;
WheelHeat_Struct.usSlowDownTimerStep = 600 / 10;
WheelHeat_Struct.usSlowDownTimer = 0;
WheelHeat_Struct.usSlowDownDuty = 1000;
}
else if(NTC_AdcResult >= TEMP_NEGATIVE_5C && NTC_AdcResult < TEMP_NEGATIVE_10C)
{
WheelHeat_Struct.ulForceOutput = WHEEL_HEAT_FORCE_OUTPUT_5MIN;
WheelHeat_Struct.usSlowDownTimerStep = 600 / 10;
WheelHeat_Struct.usSlowDownTimer = 0;
WheelHeat_Struct.usSlowDownDuty = 1000;
}
else if(NTC_AdcResult > TEMP_NEGATIVE_10C && NTC_AdcResult < TEMP_NEGATIVE_15C)
{
WheelHeat_Struct.ulForceOutput = WHEEL_HEAT_FORCE_OUTPUT_6MIN;
WheelHeat_Struct.usSlowDownTimerStep = 800 / 10;
WheelHeat_Struct.usSlowDownTimer = 0;
WheelHeat_Struct.usSlowDownDuty = 1000;
}
else if(NTC_AdcResult >= TEMP_NEGATIVE_15C && NTC_AdcResult < TEMP_NEGATIVE_25C)
{
WheelHeat_Struct.ulForceOutput = WHEEL_HEAT_FORCE_OUTPUT_10MIN;
WheelHeat_Struct.usSlowDownTimerStep = 1000 / 10;
WheelHeat_Struct.usSlowDownTimer = 0;
WheelHeat_Struct.usSlowDownDuty = 1000;
}
else if(NTC_AdcResult >= TEMP_NEGATIVE_25C)
{
WheelHeat_Struct.ulForceOutput = WHEEL_HEAT_FORCE_OUTPUT_8MIN;
WheelHeat_Struct.usSlowDownTimerStep = 1200 / 10;
WheelHeat_Struct.usSlowDownTimer = 0;
WheelHeat_Struct.usSlowDownDuty = 1000;
}
else
{
WheelHeat_Struct.ulForceOutput = 0;
}
}
//WheelHeat_Struct.ulRunTimer = 0;
WheelHeat_Struct.ucTempSensorFalutTimer = 0;
WheelHeat_Struct.u16OverCurrentFalutTimer = 0;
}
}
else if(WHEEL_HEAT_EVENT_CLOSE == Event)
{
if (WheelHeat_Struct.ucEcuControlState > WHEEL_HEAT_STATE_OFF)
{
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
}
}
else
{
}
}
/*****************************************************************************
|Prototype : WheelHeat_CanTxProcess
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_CanTxProcess(void)
{
uint8_t Output;
uint8_t State;
if(WheelHeat_Struct.ucIsControlByDcm > 0u)
{
State = WheelHeat_Struct.ucDcmControlState;
}
else
{
State = WheelHeat_Struct.ucEcuControlState;
}
if(State > WHEEL_HEAT_STATE_OFF)
{
Output = 0x02;
}
else
{
Output = 0x01;
}
if(State == WHEEL_HEAT_STATE_HARD_FALUT)
{
Output = 0x01;
}
Com_SendSignal(COM_TX_SIGSWS_C_SWH_STATE, &Output);
Output = WheelHeat_Struct.ucHeatGear;
Com_SendSignal(COM_TX_SIGSWS_C_HEAT_GEAR, &Output);
}
/*****************************************************************************
|Prototype : WheelHeat_Diag
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
static void WheelHeat_Diag(void)
{
uint16_t NTC_AdcResult;
uint16_t WheelHeatFeedbackAdcResult;
uint8_t State;
if(WheelHeat_Struct.ucIsControlByDcm > 0u)
{
State = WheelHeat_Struct.ucDcmControlState;
}
else
{
State = WheelHeat_Struct.ucEcuControlState;
}
WheelHeatFeedbackAdcResult = adc_get_voltage_value(ADC_LOGIC_CHANNEL_SNS);
NTC_AdcResult = adc_get_voltage_value(1);
if(NTC_AdcResult >= TEMP_SENSOR_OPEN_ADC_RESULT)
{
WheelHeat_Struct.ucTempSensorFalutTimer ++;
if(WheelHeat_Struct.ucTempSensorFalutTimer >= WHEEL_HEAT_OPEN_SHORT_DETECT_2S)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
dem_set_test_result(DTC_SWH_NTC_OPEN_INDEX,DTC_TEST_STATE_FAILED);
}
}
else if(NTC_AdcResult <= TEMP_SENSOR_SHORT_ADC_RESULT)
{
WheelHeat_Struct.ucTempSensorFalutTimer ++;
if(WheelHeat_Struct.ucTempSensorFalutTimer >= WHEEL_HEAT_OPEN_SHORT_DETECT_2S)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
dem_set_test_result(DTC_SWH_NTC_SHORT_INDEX,DTC_TEST_STATE_FAILED);
}
}
else
{
WheelHeat_Struct.ucTempSensorFalutTimer = 0;
dem_set_test_result(DTC_SWH_NTC_OPEN_INDEX,DTC_TEST_STATE_PASSED);
dem_set_test_result(DTC_SWH_NTC_SHORT_INDEX,DTC_TEST_STATE_PASSED);
}
if (State > WHEEL_HEAT_STATE_OFF)
{
if(WheelHeatFeedbackAdcResult >= WHEEL_HEAT_SHORT_ADC_RESULT)
{
WheelHeat_Struct.u16OverCurrentFalutTimer ++;
if(WheelHeat_Struct.u16OverCurrentFalutTimer >= WHEEL_HEAT_OPEN_SHORT_DETECT_10S)
{
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.u16OverCurrentFlag = HEAT_DIAG_ENABLE;
dem_set_test_result(DTC_HEAT_OVERCURRENT_INDEX,DTC_TEST_STATE_FAILED);
WheelHeat_Struct.u16OverCurrentFalutTimer=0;
}
}
else
{
if(WheelHeat_Struct.u16OverCurrentFlag == HEAT_DIAG_ENABLE)
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_INDEX,DTC_TEST_STATE_PASSED);
}
WheelHeat_Struct.u16OverCurrentFlag = HEAT_DIAG_DISABLE;
WheelHeat_Struct.u16OverCurrentFalutTimer = 0;
}
}
else
{
if(WheelHeat_Struct.u16OverCurrentFlag == HEAT_DIAG_ENABLE)
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_INDEX,DTC_TEST_STATE_PASSED);
}
WheelHeat_Struct.u16OverCurrentFalutTimer = 0;
WheelHeat_Struct.u16OverCurrentFlag = HEAT_DIAG_DISABLE;
}
if((State == WHEEL_HEAT_STATE_OFF ) && (WheelHeat_Struct.ucHeatPowerOnFlag ==HEAT_DIAG_DISABLE))
{
if(WheelHeatFeedbackAdcResult >= HEAT_CURRENT)
{
WheelHeat_Struct.ucHeatWireShortTime++;
if(WheelHeat_Struct.ucHeatWireShortTime>=WHEEL_HEAT_WIRE_ERROR_3S)
{
WheelHeat_Struct.ucHeatWireShortFlag = HEAT_DIAG_ENABLE;
dem_set_test_result(DTC_SWH_STRIP_SHORT_INDEX,DTC_TEST_STATE_FAILED);
WheelHeat_Struct.ucHeatWireShortTime=0;
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
}
}
if(WheelHeatFeedbackAdcResult<= HEAT_CURRENT)
{
if(WheelHeat_Struct.ucHeatWireShortFlag == HEAT_DIAG_ENABLE)
{
dem_set_test_result(DTC_SWH_STRIP_SHORT_INDEX,DTC_TEST_STATE_PASSED);
WheelHeat_Struct.ucHeatWireShortFlag = HEAT_DIAG_DISABLE;
}
WheelHeat_Struct.ucHeatWireShortTime = 0;
}
}
if(State > WHEEL_HEAT_STATE_OFF)
{
if(WheelHeat_Struct.ucHeatWireOpenFlag == HEAT_DIAG_ENABLE)
{
if(WheelHeatFeedbackAdcResult>= HEAT_CURRENT)
{
dem_set_test_result(DTC_SWH_STRIP_OPEN_INDEX,DTC_TEST_STATE_PASSED);
WheelHeat_Struct.ucHeatWireOpenFlag = HEAT_DIAG_DISABLE;
}
}
}
}
void WheelHeat_Wire_Short_Check_PowerOn(void) //开机自检
{
uint8_t PowerGear;
uint16_t WheelHeatFeedbackAdcResult;
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR,&PowerGear);
WheelHeatFeedbackAdcResult = adc_get_voltage_value(ADC_LOGIC_CHANNEL_SNS);
if(PowerGear != POWER_GEAR_ON )
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
WheelHeat_Struct.ucHeatDigaTime=0;
}
else
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 300);
WheelHeat_Struct.ucHeatWireOpenTime++;
if(WheelHeatFeedbackAdcResult<= HEAT_CURRENT)
{
WheelHeat_Struct.ucHeatDigaTime++;
if(WheelHeat_Struct.ucHeatDigaTime>WHEEL_HEAT_WIRE_ERROR_2S)
{
dem_set_test_result(DTC_SWH_STRIP_OPEN_INDEX,DTC_TEST_STATE_FAILED);
WheelHeat_Struct.ucHeatWireOpenFlag = HEAT_DIAG_ENABLE;
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucHeatDigaTime=0;
}
}
if(WheelHeat_Struct.ucHeatWireOpenTime >= WHEEL_HEAT_WIRE_ERROR_3S)
{
pwm_set_duty(PWM_BASE_ID_GPTM0, 1, 0);
WheelHeat_Struct.ucHeatPowerOnFlag = HEAT_DIAG_DISABLE;
WheelHeat_Struct.ucHeatWireOpenTime = 0;
WheelHeat_Struct.ucHeatDigaTime=0;
}
}
}
void WheelHeat_Wire_Short_Check_Open(void) //打开加热检测
{
uint16_t NTC_AdcResult;
uint8_t heat_gear;
uint16_t WheelHeatFeedbackAdcResult;
WheelHeatFeedbackAdcResult = adc_get_voltage_value(ADC_LOGIC_CHANNEL_SNS);
NTC_AdcResult = adc_get_voltage_value(1);
heat_gear = WheelHeat_Struct.ucHeatGear;
if((WheelHeat_Struct.ucEcuControlState > WHEEL_HEAT_STATE_OFF) && (NTC_AdcResult>HEAT_LEVEL_NTC_TAB[heat_gear]))
{
if(WheelHeatFeedbackAdcResult<= HEAT_CURRENT)
{
WheelHeat_Struct.ucHeatDigaTimeOpen++;
if(WheelHeat_Struct.ucHeatDigaTimeOpen>WHEEL_HEAT_WIRE_ERROR_2S)
{
dem_set_test_result(DTC_SWH_STRIP_OPEN_INDEX,DTC_TEST_STATE_FAILED);
WheelHeat_Struct.ucHeatWireOpenFlag = HEAT_DIAG_ENABLE;
WheelHeat_Struct.ucDcmControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucEcuControlState = WHEEL_HEAT_STATE_OFF;
WheelHeat_Struct.ucHeatDigaTimeOpen=0;
}
}
else
{
WheelHeat_Struct.ucHeatDigaTimeOpen=0;
}
}
else
{
WheelHeat_Struct.ucHeatDigaTimeOpen=0;
}
}
/*****************************************************************************
|Prototype : WheelHeat_GetNtcState
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
uint8_t WheelHeat_GetNtcState(void)
{
return WheelHeat_Struct.usDigNtcState;
}
/*****************************************************************************
|Prototype : WheelHeat_GetHeatOverCurrent
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
uint8_t WheelHeat_GetHeatOverCurrent(void)
{
return WheelHeat_Struct.usDigOverCurrent;
}
/*****************************************************************************
|Prototype : WheelHeat_MainFunction
|Called by :
|Preconditions :
|Input parameters :
|Output parameters :
|Return value :
|Description :
*****************************************************************************/
void WheelHeat_MainFunction(void)
{
WheelHeat_EventProcess();
WheelHeat_Handle();
// WheelHeat_RunTime();
WheelHeat_OffGearDelay();
WheelHeat_Diag();
WheelHeat_CanTxProcess();
WheelHeat_Wire_Short_Check_Open();
}

View File

@ -0,0 +1,117 @@
/** ##########################################################################
** Filename : WheelHeat.h
** Project :
** Module :
** Processor :
** Version : 1.0
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20231107- V01-- --Linboyi--- ----
** #########################################################################*/
#ifndef WHEEL_HEAT_H
#define WHEEL_HEAT_H
/*****************************************************************************
* I N C L U D E F I L E S
*****************************************************************************/
#include "common_types.h"
/*****************************************************************************
* D E F I N E S / M A C R O S
*****************************************************************************/
#define WHEEL_HEAT_TASK_CYCLE_TIME 10u
#define WHEEL_HEAT_EVENT_IDLE 0u
#define WHEEL_HEAT_EVENT_OPEN 1u
#define WHEEL_HEAT_EVENT_CLOSE 2u
#define WHEEL_HEAT_EVENT_LV1 3u
#define WHEEL_HEAT_EVENT_LV2 4u
#define WHEEL_HEAT_EVENT_LV3 5u
#define WHEEL_HEAT_NTC_LV1 3600u
#define WHEEL_HEAT_NTC_LV2 3450u
#define WHEEL_HEAT_NTC_LV3 3280u
#define WHEEL_HEAT_NTCLV_NUM 4u
/* NTC 温度 不代表加热盘温度 */
#define TEMP_NEGATIVE_25C (uint16_t)4762 //-25℃
#define TEMP_NEGATIVE_5C (uint16_t)4461
#define TEMP_NEGATIVE_20C (uint16_t)4701 //-20℃ 加热功能强数据
#define TEMP_NEGATIVE_15C (uint16_t)4610 //-15℃
#define TEMP_NEGATIVE_10C (uint16_t)4551 //-10℃
#define TEMP_POSITIVE_0C (uint16_t)4363 //0℃
#define TEMP_POSITIVE_20C (uint16_t)4025 //15
#define TEMP_POSITIVE_30C (uint16_t)3907 //20
#define TEMP_POSITIVE_35C (uint16_t)3788 //25
#define TEMP_POSITIVE_40C (uint16_t)3610
#define TEMP_POSITIVE_45C (uint16_t)3552 // 35
#define TEMP_POSITIVE_48C (uint16_t)3452 // 38
#define TEMP_POSITIVE_50C (uint16_t)3420 //41
#define TEMP_POSITIVE_55C (uint16_t)3350 //45
#define TEMP_POSITIVE_56C (uint16_t)3335
#define WHEEL_HEAT_FORCE_OUTPUT_4MIN ((4u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_FORCE_OUTPUT_5MIN ((5u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_FORCE_OUTPUT_6MIN ((6u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_FORCE_OUTPUT_7MIN ((7u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_FORCE_OUTPUT_8MIN ((8u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_FORCE_OUTPUT_10MIN ((10u*60u*1000u) / WHEEL_HEAT_TASK_CYCLE_TIME)
#define WHEEL_HEAT_NTC_NORMAL 0u
#define WHEEL_HEAT_NTC_SHORT 1u
#define WHEEL_HEAT_NTC_OPEN 2u
#define WHEEL_HEAT_OVERCURRENT 1u
#define HEAT_DIAG_DISABLE 0u
#define HEAT_DIAG_ENABLE 1u
#define HEAT_CURRENT 50u
/*****************************************************************************
* T Y P E D E F I N I T I O N S
*****************************************************************************/
#define WHEEL_HEAT_DCM_CONTROL_OPEN 1u
#define WHEEL_HEAT_DCM_CONTROL_CLOSE 0u
/*****************************************************************************
* G L O B A L V A R I A B L E S
* only configuration table allowed here,variables are not allowed!
*****************************************************************************/
/*****************************************************************************
* C O N S T A N T S
*****************************************************************************/
/*****************************************************************************
* F U N C T I O N P R O T O T Y P E
*****************************************************************************/
extern void WheelHeat_SetEvent(uint8_t Event);
extern void WheelHeat_MainFunction(void);
extern void WheelHeat_Init(void);
extern void WheelHeat_SetGearEvevt(uint8_t Evevt);
extern void WheelHeat_ControlForDcm(uint8_t Open);
void WheelHeat_Set_Heat_Limit_ACC(uint8_t Evevt);
void WheelHeat_ReturnControlForEcu(void);
void WheelHeat_SetHeating_Gear(uint8_t Evevt);
uint8_t WheelHeat_GetHeatOverCurrent(void);
uint8_t WheelHeat_GetNtcState(void);
void WheelHeat_HeatingGear_STATE_ON(void);
void WheelHeat_HeatingGear_STATE_HOLD(void);
void WheelHeat_Wire_Short_Check_PowerOn(void);
#endif

View File

@ -0,0 +1,130 @@
#include "app_encoder.h"
#include "key_encoder_driver.h"
#include "key_app.h"
#include "Com_Cfg.h"
#include "can_app.h"
#define APP_ENCODER_TASK_PERIOD_TIME 10u
#define APP_ENCODER_DELAY_TIME_300MS (300u / APP_ENCODER_TASK_PERIOD_TIME)
struct tag_app_encoder
{
uint8_t delay;
};
static struct tag_app_encoder app_encoder;
void app_encoder_init(void)
{
app_encoder.delay = 0;
}
void app_encoder_delay_set(void)
{
app_encoder.delay = APP_ENCODER_DELAY_TIME_300MS;
}
void app_encoder_task(void)
{
uint8_t encoder_event;
uint8_t key_state[NUM_OF_MULTI_MEDIA_KEY];
uint8_t i;
uint8_t any_other_key_valid;
uint8_t output;
encoder_event = key_encoder_get_event();
if(encoder_event == KEY_ENCODER_EVENT_UP)
{
key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 1u;
key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 0u;
}
else if(encoder_event == KEY_ENCODER_EVENT_DOWN)
{
key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 0u;
key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 1u;
}
else
{
key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID] = 0u;
key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID] = 0u;
}
key_state[KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID] = key_adc_mid_get_result(KEY_ADC_ID_VEDIO);
key_state[KEY_APP_MULTI_MEDIA_VOL_LMENU_ID] = key_adc_mid_get_result(KEY_ADC_ID_LMENU);
key_state[KEY_APP_MULTI_MEDIA_CUSTOM_ID] = key_adc_mid_get_result(KEY_ADC_ID_CUSTOM);
for(i = KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID; i <= KEY_APP_MULTI_MEDIA_CUSTOM_ID; i ++)
{
if((key_state[i] == KEY_ADC_RESULT_UNKNOW) || (key_state[i] == KEY_ADC_RESULT_IDLE) || (key_state[i] == KEY_ADC_RESULT_FAULT))
{
key_state[i] = 0u;
}
else
{
key_state[i] = 1u;
}
}
key_state[KEY_APP_MULTI_MEDIA_PREV_ID] = key_digital_driver_get_state(KEY_DIGI_ID_PREV);
key_state[KEY_APP_MULTI_MEDIA_NEXT_ID] = key_digital_driver_get_state(KEY_DIGI_ID_NEXT);
key_state[KEY_APP_MULTI_MEDIA_VOL_VOICE_ID] = key_digital_driver_get_state(KEY_DIGI_ID_VOICE);
key_state[KEY_APP_MULTI_MEDIA_VOL_CALL_ID] = key_digital_driver_get_state(KEY_DIGI_ID_PHONE);
key_state[KEY_APP_MULTI_MEDIA_VOL_RMENU_ID] = key_digital_driver_get_state(KEY_DIGI_ID_RMENU);
key_state[KEY_APP_MULTI_MEDIA_VOL_MUTE_ID] = key_digital_driver_get_state(KEY_DIGI_ID_MUTE);
for(i = KEY_APP_MULTI_MEDIA_PREV_ID; i <=KEY_APP_MULTI_MEDIA_VOL_MUTE_ID; i ++)
{
if(key_state[i] == KEY_DIGITAL_DRIVER_STATE_UP)
{
key_state[i] = 0u;
}
else
{
key_state[i] = 1u;
}
}
any_other_key_valid = 0;
for(i = KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID; i <= KEY_APP_MULTI_MEDIA_VOL_MUTE_ID; i ++)
{
if(key_state[i])
{
any_other_key_valid = 1u;
break;
}
}
if(app_encoder.delay)
{
app_encoder.delay --;
}
else
{
if(any_other_key_valid == 0u)
{
if(key_state[KEY_APP_MULTI_MEDIA_VOL_PLUS_ID])
{
/* 音量 + */
output = 0x01u;
app_sig_sws_r_multimedia_tx_process(output, 1, 1);
}
else if(key_state[KEY_APP_MULTI_MEDIA_VOL_SUB_ID])
{
/* 音量 - */
output = 0x04u;
app_sig_sws_r_multimedia_tx_process(output, 1, 1);
}
else
{
}
}
}
}

View File

@ -0,0 +1,9 @@
#ifndef APP_ENCODER_H
#define APP_ENCODER_H
void app_encoder_task(void);
void app_encoder_init(void);
void app_encoder_delay_set(void);
#endif

View File

@ -0,0 +1,381 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
//#include "includes.h"
//#include "error.h"
#include "boot_app.h"
#ifdef LIN_ENABLE
#include "lin_app.h"
#endif
#include "nvm.h"
//#include "lin_commontl_api.h"
//#include "lin_slave_diag.h"
#include "common_cfg.h"
#include "can_cfg.h"
#include "ComStack_Types.h"
#include "Dcm_Cfg.h"
#include "CanIf_Cfg.h"
#if 0 //最后的 app valid flag,应该在boot区成功时要写入記得debug時要開啟
#pragma CONST_SEG MEMORY_MAP_ROM_APP_FLAG_END
const u8 AppValid[16] = {0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5}; //APP_VALID_FLAG_ADDR
#pragma CONST_SEG DEFAULT
#else
MEMORY_MAP_FLAG_NO_OPTIME const u8 AppValid[16] = {0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5};
#endif
//片区开头的标志
MEMORY_MAP_FLAG_NO_OPTIME volatile const MEMORY_MAP_ROM_APP_VALID u8 AppValid1[16] = {0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5,0xaa,0xaa,0x04,0xe5}; // APP_VALID_FLAG1_ADDR
MEMORY_MAP_FLAG_NO_OPTIME volatile const MEMORY_MAP_ROM_APP_RES u8 AppValid_in[4] = {0x12,0x34,0x56,0x78}; //注意,為了校驗地址,範圍,必須開啟,該標志。 // APP_VALID_FLAG_IN_ADDR
u8 boot_app_check_flag_default(void);
void boot_app_response_default_success(void);
//static void Boot_SendEcuResetRespones(void);
//static u8 Boot_IsValidFlag(u8 flagId);
static void Boot_SetFlag(u8 flagId);
//static u8 Boot_MemCpy(u8 * des, const u8 *src, u32 size);
#ifndef RAM_OPTIMIZE_EN
__IO static u32 g_read_valid;
#endif
/* BEGIN_FUNCTION_HDR
************************************************************************************************
* Function Name : Boot_ReprogramCallBack
*
* Description : Set the reprogramming flag and reset the ECU.
*
* Inputs : none
*
* Outputs : none
*
* Limitations : Only for Bootloader
*
************************************************************************************************
END_FUNCTION_HDR */
void Boot_ReprogramCallBack(u8 flag_res)
{
/*set reprogram flag*/
Boot_SetFlag(flag_res); //FLAG_REPROGRAM_ID
/*reset ECU*/
ResetMCUHandle();
}
//专门给lin用的
void Boot_Reprogram_only_writeram(void)
{
/*set reprogram flag*/
Boot_SetFlag(FLAG_REPROGRAM_ID);
/*reset ECU*/
//ResetMCUHandle();
}
/* BEGIN_FUNCTION_HDR
************************************************************************************************
* Function Name : Boot_ResetMCUCallBack
*
* Description : Reset the ECU.
*
* Inputs : none
*
* Outputs : none
*
* Limitations : Only for Bootloader
*
************************************************************************************************
END_FUNCTION_HDR */
void Boot_ResetMCUCallBack(void)
{
/*set reprogram flag*/
Boot_SetFlag(FLAG_RESET_ID);
/*reset ECU*/
ResetMCUHandle();
}
/* BEGIN_FUNCTION_HDR
************************************************************************************************
* Function Name : Boot_SetFlag
*
* Description : Set the reprogramming flag.
*
* Inputs : none
*
* Outputs : none
*
* Limitations : Only for Bootloader
*
************************************************************************************************
END_FUNCTION_HDR */
static void Boot_SetFlag(u8 flagId)
{
u32 addr = 0xFFFFFFFFUL;
//u32 data = 0xFFFFFFFFUL;
const u8 l_data[FLAG_REPROGRAM_LEN] ={FLAG_REPROGRAM_u8_DATA0,FLAG_REPROGRAM_u8_DATA1,FLAG_REPROGRAM_u8_DATA2,FLAG_REPROGRAM_u8_DATA3};
const u8 l_data1[FLAG_REPROGRAM_LEN] ={FLAG_REPROGRAM_u8_DATA0+1u,FLAG_REPROGRAM_u8_DATA1+1u,FLAG_REPROGRAM_u8_DATA2+1u,FLAG_REPROGRAM_u8_DATA3+1u};
u8 l_buf[FLAG_REPROGRAM_LEN];
switch (flagId)
{
case FLAG_REPROGRAM_ID:
addr = FLAG_REPROGRAM_ADDR;
//data = FLAG_REPROGRAM_DATA;
l_buf[0]=l_data[0];
l_buf[1]=l_data[1];
l_buf[2]=l_data[2];
l_buf[3]=l_data[3];
break;
case FLAG_RESET_ID:
addr = FLAG_REPROGRAM_ADDR;
l_buf[0]=0;
l_buf[1]=0;
l_buf[2]=0;
l_buf[3]=0;
break;
case FLAG_REPROGRAM_NORES_ID: //用于 1001跳到 1002 不用应答
addr = FLAG_REPROGRAM_ADDR;
l_buf[0]=l_data1[0];
l_buf[1]=l_data1[1];
l_buf[2]=l_data1[2];
l_buf[3]=l_data1[3];
break;
default :
/*code*/
break;
}
if (addr != 0xFFFFFFFFUL)
{
#if 0
(void)FlagWriteHandle(addr,4,(uc8*)&l_buf);
#else
(void)ram_write_bytes(addr,(u8*)&l_buf[0],FLAG_REPROGRAM_LEN);
#endif
}
}
#if 0
static u8 Boot_MemCpy(u8 * des, const u8 *src, u32 size) /*PRQA S 3219*/
{
u32 i;
for (i = 0; i < size; i++)
{
des[i] = src[i];
}
return 0;
}
#endif
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void boot_app_init(void)
{
#ifdef LIN_ENABLE
u8 i; /*PRQA S 3205*/
u8 l_buf[8];
u32 tempP2Star;
#endif
u32 l_temp;
#if 0
boot_app_clear_flag();
(void)in_flash_read_words(&g_boot_flag_info,in_flash_get_boot_log_s_addr() ,IN_FLASH_LOG_LEN_BOOT_WORKS);
if(g_boot_flag_info == BOOT_APP_FLAG_IS_BOOT_SUCCESS)
{
boot_app_jump_to_app();
}
#endif
#ifndef RAM_OPTIMIZE_EN
g_read_valid = AppValid[0] ;
#else
l_temp = AppValid[0] ;
#endif
ram_read_bytes(FLAG_JUMP_TO_BOOT_RESPONSE_ADDR,(u8*)&l_temp,FLAG_JUMP_TO_BOOT_RESPONSE_LEN);
#ifdef LIN_ENABLE
switch(l_temp)
{
case FLAG_JUMP_TO_APP_RESPONSE_11_01: /*PRQA S 0597*/
//l_buf[0] = LIN_SALVE_DIAG_NAD;
l_buf[0] = 0x02;
l_buf[1] = 0x51;
l_buf[2] = 0x01;
//l_buf[4] = 0xff;
//l_buf[5] = 0xff;
//l_buf[6] = 0xff;
//l_buf[7] = 0xff;
//ld_put_raw(&l_buf[0]);
ld_send_message((u16)l_buf[0],&l_buf[1]); //TEMP_CLOSE
break;
case FLAG_JUMP_TO_APP_RESPONSE_11_03: /*PRQA S 0597*/
//l_buf[0] = LIN_SALVE_DIAG_NAD;
l_buf[0] = 0x02;
l_buf[1] = 0x51;
l_buf[2] = 0x03;
//l_buf[4] = 0xff;
//l_buf[5] = 0xff;
//l_buf[6] = 0xff;
//l_buf[7] = 0xff;
//ld_put_raw(&l_buf[0]);
ld_send_message((u16)l_buf[0],&l_buf[1]); //TEMP_CLOSE
break;
case FLAG_JUMP_TO_APP_RESPONSE_10_02: /*PRQA S 0597*/
#if 0
l_buf[0] = LIN_SALVE_DIAG_NAD;
for(i=0;i<7;i++)
{
l_buf[i+1] = gs_ReprogrammingResponse[i];
}
ld_put_raw(LI0,&l_buf[0]);
#endif
break;
case FLAG_JUMP_TO_APP_RESPONSE_10_01: /*PRQA S 0597*/
//l_buf[0] = LIN_SALVE_DIAG_NAD;
l_buf[0] = 0x06;
l_buf[1] = 0x50;
l_buf[2] = 0x01;
l_buf[3] = (u8)(50>>8);
l_buf[4] = (u8)(50);
tempP2Star=5000/10;
l_buf[5] = (u8)(tempP2Star>>8); /*PRQA S 2984*/
l_buf[6] = (u8)(tempP2Star);
//ld_put_raw(&l_buf[0]);
ld_send_message((u16)l_buf[0],&l_buf[1]); //TEMP_CLOSE
break;
default:
break;
}
#endif
if(boot_app_check_flag_default()==TRUE)
{
//要发送信号,表示成功进入默认会话
boot_app_response_default_success();
//boot_app_check_flag_clear_default();
}
//flash_drv_ram_read();
l_temp = FLAG_JUMP_TO_BOOT_RESPONSE_INIT;
ram_write_bytes(FLAG_JUMP_TO_BOOT_RESPONSE_ADDR,(u8*)&l_temp,FLAG_JUMP_TO_BOOT_RESPONSE_LEN);
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void boot_app_task(void)
{
#ifndef RAM_OPTIMIZE_EN
g_read_valid += 1u;
#endif
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void boot_app_jump_to_app(void)
{
}
u8 boot_app_check_flag_default(void)
{
u8 i=0; /*PRQA S 2981*/
u8 l_buf[FLAG_JUMP_TO_BOOT_RESPONSE_LEN];
const u8 l_buf_init[FLAG_JUMP_TO_BOOT_RESPONSE_LEN]={FLAG_REPROGRAM_u8_DATA0,FLAG_REPROGRAM_u8_DATA1,FLAG_REPROGRAM_u8_DATA2,FLAG_REPROGRAM_u8_DATA3};
u8 l_result=TRUE;
(void)ram_read_bytes(FLAG_JUMP_TO_BOOT_RESPONSE_ADDR,(u8*)&l_buf[0],FLAG_JUMP_TO_BOOT_RESPONSE_LEN);
for(i=0u;i<FLAG_JUMP_TO_BOOT_RESPONSE_LEN;i++)
{
if(l_buf[i]!=l_buf_init[i])
{
l_result=FALSE;
break;
}
}
return l_result;
}
void boot_app_response_default_success(void)
{
PduInfoType l_tx_pdu;
u8 l_buf[8] ;//={0x06,0x50,0x01,0x00,0x32,0x01,0xf4,0xaa};
u16 l_temp;
l_buf[0] = 0x06;
l_buf[1] = 0x50;
l_buf[2] = 0x01;
l_buf[3] = (uint8)(gDcmDspSessionRow[0].DcmDspSessionP2ServerMax>>8);
l_buf[4]=(uint8)(gDcmDspSessionRow[0].DcmDspSessionP2ServerMax);
l_temp=(u16)(gDcmDspSessionRow[0].DcmDspSessionP2StarServerMax/10u);
l_buf[5]=(uint8)(l_temp>>8);
l_buf[6]=(uint8)(l_temp);
l_buf[7]=0xaa;
l_tx_pdu.SduLength =8;
l_tx_pdu.SduDataPtr =l_buf;
(void)CanIf_Transmit(ADPT_UDS_TX_HANDLE,&l_tx_pdu); //注意1是pduid fot diag
}
#if 0
void boot_app_check_flag_clear_default(void)
{
const u8 l_buf[FLAG_JUMP_TO_BOOT_RESPONSE_LEN]={0};
(void)ram_write_bytes(FLAG_JUMP_TO_BOOT_RESPONSE_ADDR,(u8*)&l_buf[0],FLAG_JUMP_TO_BOOT_RESPONSE_LEN);
}
#endif

View File

@ -0,0 +1,72 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#ifndef __BOOT_APP_H__
#define __BOOT_APP_H__
#include "common_types.h"
#include "boot_app_cfg.h"
/*lint -e749 */ /* 枚舉 not referenced*/
/*lint -e750 */ /* 宏 not referenced*/
/*lint -e751 */ /* 變量 not referenced*/
/*lint -e752 */ /* 函數 not referenced*/
/*lint -e754 */ /* 結構體成員 not referenced*/
void boot_app_init(void);
void boot_app_task(void);
void boot_app_jump_to_app(void);
extern void Boot_ResetProcess(void);
extern void Boot_ReprogramCallBack(u8 flag_res);
extern void Boot_ResetMCUCallBack(void);
extern u8 Boot_FingerprintCallBack(u8 * readBuf,u32 readSize);
void Boot_Reprogram_only_writeram(void);
void boot_app_test(void);
//片区开头的标志
extern volatile const u8 AppValid1[16] ; // APP_VALID_FLAG1_ADDR
extern volatile const u8 AppValid_in[4] ; //注意,為了校驗地址,範圍,必須開啟,該標志。 // APP_VALID_FLAG_IN_ADDR
#endif /* __BOOT_APP_H__ */

View File

@ -0,0 +1,36 @@
/**
******************************************************************************
* @file
* @author
* @version
* @date
* @brief
* @function List:
******************************************************************************
* @attention
*
*
* <h2><center>&copy; COPYRIGHT 2021 </center></h2>
******************************************************************************
* @History:
* @Author:
* @Data:
* @Version:
*/
#include "boot_app.h"
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/

View File

@ -0,0 +1,157 @@
/** ##########################################################################
** Filename :
** Project :
** Module :
** Processor :
** Version :
** Compiler :
** Date/Time :
** Abstract :
** Contents :
** Note :
**
** (c) Copyright dmdz Co.,Ltd
** --------------------------------------------------------------------------
** R E V I S I O N H I S T O R Y
** --------------------------------------------------------------------------
** Date Ver Author Description
** -20230602- --V1.0-- --mingyea--- ----
** #########################################################################*/
#ifndef BOOT_APP_CFG_H__
#define BOOT_APP_CFG_H__
/*---------------------------------------------------------------------------
- I N C L U D E F I L E S
----------------------------------------------------------------------------*/
#include "common_types.h"
#include "common_cfg.h"
#include "gpio.h"
/*---------------------------------------------------------------------------
- D E F I N E S / M A C R O S
----------------------------------------------------------------------------*/
//暫時放這裡 手冊上可能不是這地址
#define FLASH_APP_BASE ((uint32_t)0x00008000) /*!< FLASH(up to 1 MB) base address in the alias region */
#define FLASH_ASW_MAX_ADDR 0x0001C000u //0x0003A000 //0X7D000-0X7FFFF 預留為其他用途
// app 的偏移地址
// app 的偏移地址
#define BOOT_APP_START FLASH_APP_BASE
#define BOOT_APP_VECTOR_OFFSET 0x00000100u
//app的起始地址
//app的起始地址
#define APP_ADRRESS_START BOOT_APP_START //(FLASH_APP_BASE + BOOT_APP_START)
#define APP_ADRRESS_VECTOR BOOT_APP_VECTOR_OFFSET //(FLASH_APP_BASE + BOOT_APP_VECTOR_OFFSET)
#define APP_VALID_ADDR_OFFSET 0x10u //0X100 //倒推回來的偏移地址
//app 的 有效標志所在的地址
#define APP_VALID_FLAG1_ADDR (APP_ADRRESS_START) //144 开头的地址,
#define APP_VALID_FLAG_ADDR (FLASH_ASW_MAX_ADDR-APP_VALID_ADDR_OFFSET) //0xFF9FF0
#define APP_VALID_FLAG_IN_ADDR 0x0001BFCCu // //(FLASH_P_BLOCK_SIZES-APP_VALID_ADDR_OFFSET) //144最大12k = 0x0008 0000
#define BOOT_CALIBRATION_START_ADDR 0x00007800u
#define APP_CALIBRATION_START_ADDR 0x0001BBCCu
#define P_APP_VALID_FLAG_ADDR_U32 ((u32 *)APP_VALID_FLAG_ADDR)
#define P_APP_VALID_FLAG_ADDR_U8 ((u8 *)APP_VALID_FLAG_ADDR)
#define FLAG_APP_VALID_FLAG_DATA 0xAAAA04E5ul //app valid flag
#define FLAG_APP_VALID_FLAG_DATA0 0xaau //app valid flag
#define FLAG_APP_VALID_FLAG_DATA1 0xaau //app valid flag
#define FLAG_APP_VALID_FLAG_DATA2 0x04u //app valid flag
#define FLAG_APP_VALID_FLAG_DATA3 0xe5u //app valid flag
//以下從 fe-5ha移植
#define FLAG_REPROGRAM_ID 0x01U
#define FLAG_REPROGRAM_NORES_ID 0x02U
#define FLAG_RESET_ID 0x03U
#define FLAG_FINGERPRINT_ID 0x04U
//這是RAM 相關的,重擦除標志
#define FLAG_BASE_SIZE 0x04U
//#define APP_USER_CONST_ADDR_OFFSET 0X800 //倒推回來的偏移地址--用戶一些用戶數據
//#define APP_USER_CONST_ADDR (FLASH_ASW_MAX_ADDR-APP_USER_CONST_ADDR_OFFSET) //144 最大512k = 0x0008 0000
#define FLAG_BASE_ADDR 0x20007FC0u //0x1200U //0x3FF8U
#define FLAG_REPROGRAM_ADDR (FLAG_BASE_ADDR + 0u) //重編程請求的地址
#define FLAG_REPROGRAM_LEN 4u
#define FLAG_REPROGRAM_DATA 0xA5A5E534U //重編程請求的值
#define FLAG_REPROGRAM_u8_DATA0 0xA5U //重編程請求的值
#define FLAG_REPROGRAM_u8_DATA1 0xA5U //重編程請求的值
#define FLAG_REPROGRAM_u8_DATA2 0xE5U //重編程請求的值
#define FLAG_REPROGRAM_u8_DATA3 0x34U //重編程請求的值
#define FLAG_JUMP_TO_BOOT_RESPONSE_ADDR (u32)(FLAG_BASE_ADDR + 0x04u) //標志用於跳轉到boot時要應答的數據
#define FLAG_JUMP_TO_BOOT_RESPONSE_LEN (4u) //標志用於跳轉到boot時要應答的數據
#define FLAG_JUMP_TO_BOOT_RESPONSE_INIT ((u32)0xaa769021) //無效值
#define FLAG_JUMP_TO_BOOT_RESPONSE_11_01 ((u32)0x554b1101) //復位的應答
#define FLAG_JUMP_TO_BOOT_RESPONSE_11_03 ((u32)0x554b1103) //復位的應答
#define FLAG_JUMP_TO_BOOT_RESPONSE_10_02 ((u32)0x554b1002) //編程的應答
#define FLAG_JUMP_TO_BOOT_RESPONSE_10_01 ((u32)0x554b1001) //默認的應答
#define FLAG_JUMP_TO_APP_RESPONSE_11_01_PRE ((u32)0x55491101) //復位的應答----因为跳转前先又进入boot所以加以区分
#define FLAG_JUMP_TO_APP_RESPONSE_11_03_PRE ((u32)0x55491103) //復位的應答
#define FLAG_JUMP_TO_APP_RESPONSE_10_02_PRE ((u32)0x55491002) //編程的應答
#define FLAG_JUMP_TO_APP_RESPONSE_10_01_PRE ((u32)0x55491001) //默認的應答
#define FLAG_JUMP_TO_APP_RESPONSE_11_01 ((u32)0x554a1101) //復位的應答----因为跳转前先又进入boot所以加以区分
#define FLAG_JUMP_TO_APP_RESPONSE_11_03 ((u32)0x554a1103) //復位的應答
#define FLAG_JUMP_TO_APP_RESPONSE_10_02 ((u32)0x554a1002) //編程的應答
#define FLAG_JUMP_TO_APP_RESPONSE_10_01 ((u32)0x554a1001) //默認的應答
#if 1
#define FLAG_RAM_WDOG_ADDR 0x20007800 //看門狗在ram中運行
#define FLAG_RAM_DRIVER_ADDR 0x20007000 //驅動在driver中運行
#define FLAG_RAM_RE_START_ADDR FLAG_RAM_DRIVER_ADDR
#endif
#define RAM_WDOG_ADDR FLAG_RAM_WDOG_ADDR //看門狗在ram中運行--和icf上一致 ,目前用来别的用途
#define RAM_NO_INIT_ADDR 0x20007C00u //看門狗在ram中運行--和icf上一致 ,目前用来别的用途
//#define FlagReadHandle(addr,size,buf) Boot_MemCpy((u8 *)buf,(const u8 *)addr,size)
//#define FlagWriteHandle(addr,size,buf) Boot_MemCpy((u8 *)addr,(const u8 *)buf,size)
#define ResetMCUHandle() SystemSoftwareReset()
//#define Boot_ComControlHandle() 0
//#define Boot_CheckProgramming() 0
//#define BOOT_APP_VALID_DEBUG_EN 1 //VALID FLAG 標志,后一個,開啟調試
/*---------------------------------------------------------------------------
- T Y P E D E F I N I T I O N S
----------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
- G L O B A L V A R I A B L E S
- only configuration table allowed here,variables are not allowed!
----------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
- C O N S T A N T S
----------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------
- F U N C T I O N P R O T O T Y P E
----------------------------------------------------------------------------*/
#endif /* __BOOT_APP_CFG_H__ */

View File

@ -0,0 +1,720 @@
#include "can_app.h"
#include "Com_Cfg.h"
#include "Com.h"
#include "led_app.h"
#include "common_memory.h"
#include "WheelHeat.h"
typedef struct
{
uint8_t sws_r_multimedia;
uint8_t sws_r_left_menu;
uint8_t sws_r_voicd_expand_2;
uint8_t sws_r_auto_show_in;
uint8_t sws_r_auto_show_out;
uint8_t sws_r_mileage_clear;
uint8_t SWS_R_MediaReset;
uint8_t SWS_R_OtherRecover;
}event_sig_tx_valid_count_type;
event_sig_tx_valid_count_type event_sig_tx_valid_count;
IpduMPC_316_bufType app_can_mpc_316;
IpduMETER_055_bufType app_can_meter_055;
IpduBCM_1_12D_bufType app_can_bcm_1_12d;
IpduBCM_2_50D_bufType app_can_bcm_2_50d;
IpduMOD_4G_49A_bufType app_can_mod_4g_49a;
IpduMultimedia_385_bufType app_can_multimedia_385;
IpduCloud_services_0A2_bufType app_can_cloud_services_0a2;
IpduBCM_EvP2_394_bufType app_can_bcm_evp2_394;
IpduAir_condition_ctrl_2DB_bufType app_can_air_condition_ctrl_2db;
IpduVCU_40D_bufType app_can_vcu_40d;
IpduBCM_L_407_bufType app_can_bcm_l_407;
IpduMETER_1_dir_4BF_bufType app_can_meter_1_dir_4bf;
IpduBCM_R_4E6_bufType app_can_bcm_r_4e6;
IpduHEAT_4C1_bufType app_can_heat_4c1;
IpduADS_29C_bufType app_can_ads_29c;
uint8_t ucCAN_ControlBy;
uint8_t CAN_GetControlBy(void)
{
return (ucCAN_ControlBy);
}
void CAN_SetControlBy(uint8_t ControlBy)
{
ucCAN_ControlBy = ControlBy;
}
void can_app_init(void)
{
common_memory_clear((uint8_t *)&event_sig_tx_valid_count, sizeof(event_sig_tx_valid_count));
common_memory_copys((uint8_t *)&app_can_mpc_316, (uint8_t *)&RxIpduMPC_316DefualtValue,sizeof(app_can_mpc_316));
common_memory_copys((uint8_t *)&app_can_meter_055,(uint8_t *)&RxIpduMETER_055DefualtValue, sizeof(app_can_meter_055));
common_memory_copys((uint8_t *)&app_can_bcm_1_12d, (uint8_t *)&RxIpduBCM_1_12DDefualtValue,sizeof(app_can_bcm_1_12d));
common_memory_copys((uint8_t *)&app_can_bcm_2_50d, (uint8_t *)&RxIpduBCM_2_50DDefualtValue,sizeof(app_can_bcm_2_50d));
common_memory_copys((uint8_t *)&app_can_mod_4g_49a, (uint8_t *)&RxIpduMOD_4G_49ADefualtValue,sizeof(app_can_mod_4g_49a));
common_memory_copys((uint8_t *)&app_can_multimedia_385, (uint8_t *)&RxIpduMultimedia_385DefualtValue,sizeof(app_can_multimedia_385));
common_memory_copys((uint8_t *)&app_can_cloud_services_0a2, (uint8_t *)&RxIpdCloud_services_0A2DefualtValue,sizeof(app_can_cloud_services_0a2));
common_memory_copys((uint8_t *)&app_can_bcm_evp2_394, (uint8_t *)&RxIpduBCM_EvP2_394DefualtValue,sizeof(app_can_bcm_evp2_394));
common_memory_copys((uint8_t *)&app_can_air_condition_ctrl_2db, (uint8_t *)&RxIpduAir_condition_ctrl_2DBDefualtValue,sizeof(app_can_air_condition_ctrl_2db));
common_memory_copys((uint8_t *)&app_can_vcu_40d, (uint8_t *)&RxIpduVCU_40DDefualtValue,sizeof(app_can_vcu_40d));
common_memory_copys((uint8_t *)&app_can_bcm_l_407, (uint8_t *)&RxIpduBCM_L_407DefualtValue,sizeof(app_can_bcm_l_407));
common_memory_copys((uint8_t *)&app_can_meter_1_dir_4bf, (uint8_t *)&RxIpduMETER_1_dir_4BFDefualtValue,sizeof(app_can_meter_1_dir_4bf));
common_memory_copys((uint8_t *)&app_can_bcm_r_4e6, (uint8_t *)&RxIpduBCM_R_4E6DefualtValue,sizeof(app_can_bcm_r_4e6));
common_memory_copys((uint8_t *)&app_can_heat_4c1, (uint8_t *)&RxIpduHEAT_4C1DefualtValue,sizeof(app_can_heat_4c1));
common_memory_copys((uint8_t *)&app_can_ads_29c, (uint8_t *)&RxIpduADS_29CDefualtValue,sizeof(app_can_ads_29c));
}
void CanApp_WakeupProcess(void)
{
common_memory_clear((uint8_t *)&event_sig_tx_valid_count, sizeof(event_sig_tx_valid_count));
common_memory_copys((uint8_t *)&app_can_mpc_316, (uint8_t *)&RxIpduMPC_316DefualtValue,sizeof(app_can_mpc_316));
common_memory_copys((uint8_t *)&app_can_meter_055,(uint8_t *)&RxIpduMETER_055DefualtValue, sizeof(app_can_meter_055));
common_memory_copys((uint8_t *)&app_can_bcm_2_50d, (uint8_t *)&RxIpduBCM_2_50DDefualtValue,sizeof(app_can_bcm_2_50d));
common_memory_copys((uint8_t *)&app_can_mod_4g_49a, (uint8_t *)&RxIpduMOD_4G_49ADefualtValue,sizeof(app_can_mod_4g_49a));
common_memory_copys((uint8_t *)&app_can_multimedia_385, (uint8_t *)&RxIpduMultimedia_385DefualtValue,sizeof(app_can_multimedia_385));
common_memory_copys((uint8_t *)&app_can_cloud_services_0a2, (uint8_t *)&RxIpdCloud_services_0A2DefualtValue,sizeof(app_can_cloud_services_0a2));
common_memory_copys((uint8_t *)&app_can_bcm_evp2_394, (uint8_t *)&RxIpduBCM_EvP2_394DefualtValue,sizeof(app_can_bcm_evp2_394));
common_memory_copys((uint8_t *)&app_can_air_condition_ctrl_2db, (uint8_t *)&RxIpduAir_condition_ctrl_2DBDefualtValue,sizeof(app_can_air_condition_ctrl_2db));
common_memory_copys((uint8_t *)&app_can_vcu_40d, (uint8_t *)&RxIpduVCU_40DDefualtValue,sizeof(app_can_vcu_40d));
common_memory_copys((uint8_t *)&app_can_bcm_l_407, (uint8_t *)&RxIpduBCM_L_407DefualtValue,sizeof(app_can_bcm_l_407));
common_memory_copys((uint8_t *)&app_can_meter_1_dir_4bf, (uint8_t *)&RxIpduMETER_1_dir_4BFDefualtValue,sizeof(app_can_meter_1_dir_4bf));
common_memory_copys((uint8_t *)&app_can_bcm_r_4e6, (uint8_t *)&RxIpduBCM_R_4E6DefualtValue,sizeof(app_can_bcm_r_4e6));
common_memory_copys((uint8_t *)&app_can_heat_4c1, (uint8_t *)&RxIpduHEAT_4C1DefualtValue,sizeof(app_can_heat_4c1));
common_memory_copys((uint8_t *)&app_can_ads_29c, (uint8_t *)&RxIpduADS_29CDefualtValue,sizeof(app_can_ads_29c));
}
void app_mpc_316_rx_conf(void)
{
}
void app_meter_055_rx_conf(void)
{
uint8_t i;
for(i = 0; i < 8; i ++)
{
app_can_meter_055._c[i] = RxIpduMETER_055._c[i];
}
}
void app_bcm_1_12d_rx_conf(void)
{
if(RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear != POWER_GEAR_INVALID)
{
if(app_can_bcm_1_12d.IpduBCM_1_12D.BCM1_power_gear != RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear)
{
if(RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear == POWER_GEAR_OFF)
{
WheelHeat_SetGearEvevt(POWER_GEAR_EVENT_OFF);
}
else if(RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear == POWER_GEAR_ACC)
{
WheelHeat_SetGearEvevt(POWER_GEAR_EVENT_ACC);
}
else if(RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear == POWER_GEAR_ON)
{
WheelHeat_SetGearEvevt(POWER_GEAR_EVENT_ON);
}
else
{
}
}
app_can_bcm_1_12d.IpduBCM_1_12D.BCM1_power_gear = RxIpduBCM_1_12D.IpduBCM_1_12D.BCM1_power_gear;
}
}
void app_bcm_2_50d_rx_conf(void)
{
}
void app_mod_4g_49a_rx_conf(void)
{
uint8_t i;
uint8_t checksum;
checksum = (RxIpduMOD_4G_49A._c[0] + RxIpduMOD_4G_49A._c[1] \
+ RxIpduMOD_4G_49A._c[2] + RxIpduMOD_4G_49A._c[3] \
+ RxIpduMOD_4G_49A._c[4] + RxIpduMOD_4G_49A._c[5] \
+ RxIpduMOD_4G_49A._c[6]) ^ 0xffu;
if(checksum == RxIpduMOD_4G_49A._c[7])
{
for(i = 0; i < 8; i ++)
{
app_can_mod_4g_49a._c[i] = RxIpduMOD_4G_49A._c[i];
}
}
}
void app_multimedia_385_rx_conf(void)
{
app_can_multimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat = RxIpduMultimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat;
if(app_can_multimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat == 0x01u)
{
(void)WheelHeat_SetEvent(WHEEL_HEAT_EVENT_CLOSE);
}
else if (app_can_multimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat == 0x02u)
{
(void)WheelHeat_SetEvent(WHEEL_HEAT_EVENT_OPEN);
WheelHeat_SetHeating_Gear(HEAT_LV3);
}
else
{
}
}
void app_cloud_services_0a2_rx_conf(void)
{
app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_remote_cmd = RxIpdCloud_services_0A2.IpduCloud_services_0A2.Cloud_Service_remote_cmd;
app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_Sw_heat = RxIpdCloud_services_0A2.IpduCloud_services_0A2.Cloud_Service_Sw_heat;
if(app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_remote_cmd == 0x33)
{
if(app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_Sw_heat == 0x01u)
{
(void)WheelHeat_SetEvent(WHEEL_HEAT_EVENT_CLOSE);
}
else if(app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_Sw_heat == 0x02u)
{
(void)WheelHeat_SetEvent(WHEEL_HEAT_EVENT_OPEN);
WheelHeat_SetHeating_Gear(HEAT_LV3);
}
else
{
}
}
}
void app_bcm_evp2_394_rx_conf(void)
{
}
void app_air_condition_ctrl_2db_rx_conf(void)
{
}
void app_vcu_40d_rx_conf(void)
{
}
void app_bcm_l_407_rx_conf(void)
{
}
void app_meter_1_dir_4bf_rx_conf(void)
{
LowPower4BFMsgWakeUpFlag_Set();
app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.METER1_BackgroundLightLvlCmd = RxIpduMETER_1_dir_4BF.IpduMETER_1_dir_4BF.METER1_BackgroundLightLvlCmd;
app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.The_Limit_Acc = RxIpduMETER_1_dir_4BF.IpduMETER_1_dir_4BF.The_Limit_Acc;
if((app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.The_Limit_Acc == 0x01u)\
||(app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.The_Limit_Acc == 0x02u))
{
WheelHeat_Set_Heat_Limit_ACC(Heat_Limit_ACC_Enbale);
(void)WheelHeat_SetEvent(WHEEL_HEAT_EVENT_CLOSE);
}
else
{
WheelHeat_Set_Heat_Limit_ACC(Heat_Limit_ACC_DISABLE);
}
}
void app_bcm_r_4e6_rx_conf(void)
{
}
void app_bcm_heat_4c1_rx_conf(void)
{
// app_can_lost_communication.heat_4c1 = 0u;
app_can_heat_4c1.IpduHEAT_4C1.HEAT_heat_gear= RxIpduHEAT_4C1.IpduHEAT_4C1.HEAT_heat_gear;
app_can_heat_4c1.IpduHEAT_4C1.HEAT_subid= RxIpduHEAT_4C1.IpduHEAT_4C1.HEAT_subid;
if(app_can_heat_4c1.IpduHEAT_4C1.HEAT_subid == 0x22)
{
if(app_can_heat_4c1.IpduHEAT_4C1.HEAT_heat_gear== HEAT_LV1)
{
(void)WheelHeat_SetHeating_Gear(HEAT_LV1);
}
else if(app_can_heat_4c1.IpduHEAT_4C1.HEAT_heat_gear== HEAT_LV2 )
{
(void)WheelHeat_SetHeating_Gear(HEAT_LV2);
}
else if(app_can_heat_4c1.IpduHEAT_4C1.HEAT_heat_gear== HEAT_LV3 )
{
(void)WheelHeat_SetHeating_Gear(HEAT_LV3);
}
else
{
}
}
}
void app_ads_29c_rx_conf(void)
{
uint8_t i;
for(i = 0; i < 8; i ++)
{
app_can_ads_29c._c[i] = RxIpduADS_29C._c[i];
}
}
void app_mpc_316_to_conf(void)
{
}
void app_meter_055_to_conf(void)
{
}
void app_bcm_1_12d_to_conf(void)
{
}
void app_bcm_2_50d_to_conf(void)
{
}
void app_mod_4g_49a_to_conf(void)
{
}
void app_multimedia_385_to_conf(void)
{
}
void app_cloud_services_0a2_to_conf(void)
{
}
void app_bcm_evp2_394_to_conf(void)
{
}
void app_air_condition_ctrl_2db_to_conf(void)
{
}
void app_vcu_40d_to_conf(void)
{
}
void app_bcm_l_407_to_conf(void)
{
}
void app_meter_1_dir_4bf_to_conf(void)
{
LowPower4BFMsgWakeUpFlag_Clear();
}
void app_bcm_r_4e6_to_conf(void)
{
}
void app_bcm_heat_4c1_to_conf(void)
{
}
void app_ads_29c_to_conf(void)
{
}
void app_sig_sws_r_multimedia_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_MULTIMEDIA, &value);
event_sig_tx_valid_count.sws_r_multimedia = valid_count;
}
void app_sig_sws_r_left_menu_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_LEFT_MENU, &value);
event_sig_tx_valid_count.sws_r_left_menu = valid_count;
}
void app_sig_sws_r_voicd_expand_2_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_VOICD_EXPAND_2, &value);
event_sig_tx_valid_count.sws_r_voicd_expand_2 = valid_count;
}
void app_sig_sws_r_auto_show_in_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_AUTO_SHOW_IN, &value);
event_sig_tx_valid_count.sws_r_auto_show_in = valid_count;
}
void app_sig_sws_r_auto_show_out_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_AUTO_SHOW_OUT, &value);
event_sig_tx_valid_count.sws_r_auto_show_out = valid_count;
}
void app_sig_sws_r_mileage_clear_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = tx_count;
Com_SendSignal(COM_TX_SIGSWS_R_MILEAGE_CLEAR, &value);
event_sig_tx_valid_count.sws_r_mileage_clear = valid_count;
}
void AppCan_EventSig_SWS_R_MediaReset_TxProcess(uint8_t Value, uint8_t TxNum, uint8_t EventSigTxNum)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = TxNum;
Com_SendSignal(COM_TX_SIGSWS_R_MEDIA_RESET, &Value);
event_sig_tx_valid_count.SWS_R_MediaReset = EventSigTxNum;
}
void AppCan_EventSig_SWS_R_OtherRecover_TxProcess(uint8_t Value, uint8_t TxNum, uint8_t EventSigTxNum)
{
COM_IpduRepetitionTxNumTable[COM_TXIPDUSTEERING_RIGHT_SWITCH_4A8] = TxNum;
Com_SendSignal(COM_TX_SIGSWS_R_OTHER_RECOVER, &Value);
event_sig_tx_valid_count.SWS_R_OtherRecover = EventSigTxNum;
}
void app_sig_sws_r_multimedia_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_multimedia)
{
event_sig_tx_valid_count.sws_r_multimedia --;
}
if(event_sig_tx_valid_count.sws_r_multimedia == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Multimedia = 0x0u;
}
}
void app_sig_sws_r_left_menu_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_left_menu)
{
event_sig_tx_valid_count.sws_r_left_menu --;
}
if(event_sig_tx_valid_count.sws_r_left_menu == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_LEFT_Menu = 0x0u;
}
}
void app_sig_sws_r_voicd_expand_2_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_voicd_expand_2)
{
event_sig_tx_valid_count.sws_r_voicd_expand_2 --;
}
if(event_sig_tx_valid_count.sws_r_voicd_expand_2 == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_voicd_expand_2 = 0x2u;
}
}
void app_sig_sws_r_auto_show_in_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_auto_show_in)
{
event_sig_tx_valid_count.sws_r_auto_show_in --;
}
if(event_sig_tx_valid_count.sws_r_auto_show_in == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_auto_show_in = 0x0u;
}
}
void app_sig_sws_r_auto_show_out_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_auto_show_out)
{
event_sig_tx_valid_count.sws_r_auto_show_out --;
}
if(event_sig_tx_valid_count.sws_r_auto_show_out == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_auto_show_out = 0x0u;
}
}
void app_sig_sws_r_mileage_clear_tx_conf(void)
{
if(event_sig_tx_valid_count.sws_r_mileage_clear)
{
event_sig_tx_valid_count.sws_r_mileage_clear --;
}
if(event_sig_tx_valid_count.sws_r_mileage_clear == 0)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_mileage_clear = 0x0u;
}
}
void AppCan_EventSig_SWS_R_MediaReset_TxConf(void)
{
if(event_sig_tx_valid_count.SWS_R_MediaReset)
{
event_sig_tx_valid_count.SWS_R_MediaReset --;
if(event_sig_tx_valid_count.SWS_R_MediaReset == 0u)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Media_Reset = 0x0u;
}
}
}
void AppCan_EventSig_SWS_R_OtherRecover_TxConf(void)
{
if(event_sig_tx_valid_count.SWS_R_OtherRecover)
{
event_sig_tx_valid_count.SWS_R_OtherRecover --;
if(event_sig_tx_valid_count.SWS_R_OtherRecover == 0u)
{
TxIpduSteering_RIGHT_switch_4A8.IpduSteering_RIGHT_switch_4A8.SWS_R_Other_Recover = 0x0u;
}
}
}
void App_ReceiveSigMPC_L_lt_status(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mpc_316.IpduMPC_316.MPC_L_lt_status;
}
void App_ReceiveSigMPC_R_lt_status(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mpc_316.IpduMPC_316.MPC_R_lt_status;
}
void App_ReceiveSigMPC_Ld_alarm_mode_sta(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mpc_316.IpduMPC_316.MPC_Ld_alarm_mode_sta;
}
//meter
void App_ReceiveSigMETER_BackgroundLightLvlCmd(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_meter_055.IpduMETER_055.METER_BackgroundLightLvlCmd;
}
//bcm1
void App_ReceiveSigBCM1_power_gear(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_1_12d.IpduBCM_1_12D.BCM1_power_gear;
}
void App_ReceiveSigBCM1_vehicle_state(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_1_12d.IpduBCM_1_12D.BCM1_vehicle_state;
}
void App_ReceiveSigBCM1_vehicle_state1(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_1_12d.IpduBCM_1_12D.BCM1_vehicle_state1;
}
//bcm2
void App_ReceiveSigBCM2_nm_sleep_state(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_2_50d.IpduBCM_2_50D.BCM2_nm_sleep_state;
}
//4g mod
void App_ReceiveSigMOD_4G_Ecl_power_req(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mod_4g_49a.IpduMOD_4G_49A.MOD_4G_Ecl_power_req;
}
void App_ReceiveSigMOD_4G_ota_light_req(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mod_4g_49a.IpduMOD_4G_49A.MOD_4G_ota_light_req;
}
void App_ReceiveSigMOD_4G_enter_ota_mode_req(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mod_4g_49a.IpduMOD_4G_49A.MOD_4G_enter_ota_mode_req;
}
void App_ReceiveSigMOD_4G_ota_update_req(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mod_4g_49a.IpduMOD_4G_49A.MOD_4G_ota_update_req;
}
void App_ReceiveSigMOD_4G_checksum(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_mod_4g_49a.IpduMOD_4G_49A.MOD_4G_checksum;
}
//multi
void App_ReceiveSigMULTIMEDIA_Sw_heat(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_multimedia_385.IpduMultimedia_385.MULTIMEDIA_Sw_heat;
}
//cloud service
void App_ReceiveSigCloud_Service_remote_cmd(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_remote_cmd;
}
//cloud service
void App_ReceiveSigCloud_Service_Sw_heat(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_cloud_services_0a2.IpduCloud_services_0A2.Cloud_Service_Sw_heat;
}
//bcm evp2
void App_ReceiveSigBCM_EVP2_vehicle_state(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_evp2_394.IpduBCM_EvP2_394.BCM_EVP2_vehicle_state;
}
//air condition ctrl
void App_ReceiveSigAIR_CD_ctrl_temp_show(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_air_condition_ctrl_2db.IpduAir_condition_ctrl_2DB.AIR_CD_ctrl_temp_show;
}
void App_ReceiveSigVCU_ECM_Vehicle_code_s(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_vcu_40d.IpduVCU_40D.VCU_ECM_Vehicle_code_s;
}
//vcu
void App_ReceiveSigBCM_L_nm_type(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_l_407.IpduBCM_L_407.BCM_L_nm_type;
}
//BCM L
void App_ReceiveSigMETER1_BackgroundLightLvlCmd(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.METER1_BackgroundLightLvlCmd;
}
void App_ReceiveSigThe_Limit_Acc(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_meter_1_dir_4bf.IpduMETER_1_dir_4BF.The_Limit_Acc;
}
//METER 1 DIR
void App_ReceiveSigBCM_R_air_temp_show(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_bcm_r_4e6.IpduBCM_R_4E6.BCM_R_air_temp_show;
}
//BCM R
void App_ReceiveSigHEAT_subid(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_heat_4c1.IpduHEAT_4C1.HEAT_subid;
}
//HEAT_SUB_ID
void App_ReceiveSigHEAT_auto_heat(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_heat_4c1.IpduHEAT_4C1.HEAT_auto_heat;
}
//HEAT_AUTO
void App_ReceiveSigHEAT_heat_gear(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_heat_4c1.IpduHEAT_4C1.HEAT_heat_gear;
}
//HEAT_GEAR
void App_ReceiveSigADS_ACC_Mode_Displayl(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_ads_29c.IpduADS_29C.ADS_ACC_Mode_Displayl;
}
//DNP_STATS
//DNP_WARNING
void App_ReceiveSigADS_DNP_Stats(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_ads_29c.IpduADS_29C.ADS_DNP_Stats;
}
void App_ReceiveSigADS_DNP_Take_Over_Req_S(void* SigValue)
{
(*(uint8 *)SigValue) = app_can_ads_29c.IpduADS_29C.ADS_DNP_Take_Over_Req_S;
}
/*PRQA S 1503--*/
COM_CONST COM_ReceivedSignalFun App_ReceivedSignalFunPrt[COM_RXSIGNUM]={
App_ReceiveSigMPC_L_lt_status,
App_ReceiveSigMPC_R_lt_status,
App_ReceiveSigMPC_Ld_alarm_mode_sta,
App_ReceiveSigMETER_BackgroundLightLvlCmd,
App_ReceiveSigBCM1_power_gear,
App_ReceiveSigBCM1_vehicle_state,
App_ReceiveSigBCM1_vehicle_state1,
App_ReceiveSigBCM2_nm_sleep_state,
App_ReceiveSigMOD_4G_Ecl_power_req,
App_ReceiveSigMOD_4G_ota_light_req,
App_ReceiveSigMOD_4G_enter_ota_mode_req,
App_ReceiveSigMOD_4G_ota_update_req,
App_ReceiveSigMOD_4G_checksum,
App_ReceiveSigMULTIMEDIA_Sw_heat,
App_ReceiveSigCloud_Service_remote_cmd,
App_ReceiveSigCloud_Service_Sw_heat,
App_ReceiveSigBCM_EVP2_vehicle_state,
App_ReceiveSigAIR_CD_ctrl_temp_show,
App_ReceiveSigVCU_ECM_Vehicle_code_s,
App_ReceiveSigBCM_L_nm_type,
App_ReceiveSigMETER1_BackgroundLightLvlCmd,
App_ReceiveSigThe_Limit_Acc,
App_ReceiveSigBCM_R_air_temp_show,
App_ReceiveSigHEAT_subid,
App_ReceiveSigHEAT_auto_heat,
App_ReceiveSigHEAT_heat_gear,
App_ReceiveSigADS_ACC_Mode_Displayl,
App_ReceiveSigADS_DNP_Stats,
App_ReceiveSigADS_DNP_Take_Over_Req_S,
};
void can_app_receive_signal(uint8_t rx_sig_id, void *signal_data_ptr)
{
if(rx_sig_id < COM_RXSIGNUM)
{
App_ReceivedSignalFunPrt[rx_sig_id](signal_data_ptr);
}
}

View File

@ -0,0 +1,135 @@
#ifndef CAN_APP_H
#define CAN_APP_H
#include "common_types.h"
#define HEAT_LV1 0x01u
#define HEAT_LV2 0x02u
#define HEAT_LV3 0x03u
#define CAN_CONTROL_BY_APP 0u
#define CAN_CONTROL_BY_28_SERVICE 1u
#define CAN_APP_LOST_COMMUNICATION_MPC_316_ID 0u
#define CAN_APP_LOST_COMMUNICATION_METER_055_ID 1u
#define CAN_APP_LOST_COMMUNICATION_BCM_1_12D_ID 2u
#define CAN_APP_LOST_COMMUNICATION_BCM_2_50D_ID 3u
#define CAN_APP_LOST_COMMUNICATION_MOD_4G_49A_ID 4u
#define CAN_APP_LOST_COMMUNICATION_MULTIMEDIA_385_ID 5u
#define CAN_APP_LOST_COMMUNICATION_CLOUD_SERVICES_0A2_ID 6u
#define CAN_APP_LOST_COMMUNICATION_BCM_EVP2_394_ID 7u
#define CAN_APP_LOST_COMMUNICATION_AIR_CONDITION_CTRL_2DB_ID 8u
#define CAN_APP_LOST_COMMUNICATION_VCU_40D_ID 9u
#define CAN_APP_LOST_COMMUNICATION_BCM_L_407_ID 10u
#define CAN_APP_LOST_COMMUNICATION_METER_1_DIR_4BF_ID 11u
#define CAN_APP_LOST_COMMUNICATION_BCM_R_4E6_ID 12u
#define CAN_APP_LOST_COMMUNICATION_HEAT_4C1_ID 13u
#define CAN_APP_LOST_COMMUNICATION_ADS_29C_ID 14u
#define ADS_ACC_MODE_DISPLAYL_OFF_MODE 0u
#define ADS_ACC_MODE_DISPLAYL_PASSIVE_MODE 1u
#define ADS_ACC_MODE_DISPLAYL_STAND_BY_MODE 2u
#define ADS_ACC_MODE_DISPLAYL_ACTIVE_CONTROL_MODE 3u
#define ADS_ACC_MODE_DISPLAYL_BRAKE_ONLY_MODE 4u
#define ADS_ACC_MODE_DISPLAYL_OVENIDE 5u
#define ADS_ACC_MODE_DISPLAYL_STAND_STILL_ACTIVE_MODE 6u
#define ADS_ACC_MODE_DISPLAYL_STAND_STILL_WAIT_MODE 7u
#define ADS_ACC_MODE_DISPLAYL_TEMPORARY_FAILURE_MODE 8u
#define ADS_ACC_MODE_DISPLAYL_PERMANENT_FAILURE 9u
#define ADS_DNP_STATS_OFF 0u
#define ADS_DNP_STATS_PASSIVE 1u
#define ADS_DNP_STATS_LCC_READY 2u
#define ADS_DNP_STATS_DNP_READY 3u
#define ADS_DNP_STATS_LCC_ACTIVE2 4u
#define ADS_DNP_STATS_ILCA_ACTIVE 5u
#define ADS_DNP_STATS_DNP_ACTIVE 6u
#define ADS_DNP_STATS_FAULT 7u
#define ADS_DNP_STATS_MRC 8u
#define ADS_DNP_STATS_FORBIDDEN 9u
#define ADS_DNP_STATS_LCC_ACTIVE1 10u
#define ADS_DNP_TAKE_OVER_REQ_S_INACTIVE 0u
#define ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL1 1u
#define ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL2 2u
#define ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL3 3u
#define ADS_DNP_TAKE_OVER_REQ_S_SAFE_STOP 4u
#define ADS_DNP_TAKE_OVER_REQ_S_EXIT 5u
#define POWER_GEAR_INVALID 0u
#define POWER_GEAR_OFF 1u
#define POWER_GEAR_ACC 2u
#define POWER_GEAR_ON 3u
#define POWER_GEAR_EVENT_NULL 0u
#define POWER_GEAR_EVENT_OFF 1u
#define POWER_GEAR_EVENT_ACC 2u
#define POWER_GEAR_EVENT_ON 3u
#define Heat_Limit_ACC_Enbale 1u
#define Heat_Limit_ACC_DISABLE 0u
void app_sig_sws_r_multimedia_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void app_sig_sws_r_left_menu_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void app_sig_sws_r_voicd_expand_2_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void app_sig_sws_r_auto_show_in_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void app_sig_sws_r_auto_show_out_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void app_sig_sws_r_mileage_clear_tx_process(uint8_t value, uint8_t tx_count, uint8_t valid_count);
void AppCan_EventSig_SWS_R_MediaReset_TxProcess(uint8_t Value, uint8_t TxNum, uint8_t EventSigTxNum);
void AppCan_EventSig_SWS_R_OtherRecover_TxProcess(uint8_t Value, uint8_t TxNum, uint8_t EventSigTxNum);
void app_sig_sws_r_multimedia_tx_conf(void);
void app_sig_sws_r_left_menu_tx_conf(void);
void app_sig_sws_r_voicd_expand_2_tx_conf(void);
void app_sig_sws_r_auto_show_in_tx_conf(void);
void app_sig_sws_r_auto_show_out_tx_conf(void);
void app_sig_sws_r_mileage_clear_tx_conf(void);
void AppCan_EventSig_SWS_R_MediaReset_TxConf(void);
void AppCan_EventSig_SWS_R_OtherRecover_TxConf(void);
void app_mpc_316_rx_conf(void);
void app_meter_055_rx_conf(void);
void app_bcm_1_12d_rx_conf(void);
void app_bcm_2_50d_rx_conf(void);
void app_mod_4g_49a_rx_conf(void);
void app_multimedia_385_rx_conf(void);
void app_cloud_services_0a2_rx_conf(void);
void app_bcm_evp2_394_rx_conf(void);
void app_air_condition_ctrl_2db_rx_conf(void);
void app_vcu_40d_rx_conf(void);
void app_bcm_l_407_rx_conf(void);
void app_meter_1_dir_4bf_rx_conf(void);
void app_bcm_r_4e6_rx_conf(void);
void app_bcm_heat_4c1_rx_conf(void);
void app_ads_29c_rx_conf(void);
void app_mpc_316_to_conf(void);
void app_meter_055_to_conf(void);
void app_bcm_1_12d_to_conf(void);
void app_bcm_2_50d_to_conf(void);
void app_mod_4g_49a_to_conf(void);
void app_multimedia_385_to_conf(void);
void app_cloud_services_0a2_to_conf(void);
void app_bcm_evp2_394_to_conf(void);
void app_air_condition_ctrl_2db_to_conf(void);
void app_vcu_40d_to_conf(void);
void app_bcm_l_407_to_conf(void);
void app_meter_1_dir_4bf_to_conf(void);
void app_bcm_r_4e6_to_conf(void);
void app_bcm_heat_4c1_to_conf(void);
void app_ads_29c_to_conf(void);
void can_app_receive_signal(uint8_t rx_sig_id, void *signal_data_ptr);
void can_app_init(void);
void CanApp_WakeupProcess(void);
uint8_t CAN_GetControlBy(void);
void CAN_SetControlBy(uint8_t ControlBy);
#endif

View File

@ -0,0 +1,125 @@
#include "demm_app.h"
#include "system_voltage_manage.h"
#include "Dem_Types.h"
#include "DEM_Cfg.h"
#include "key_adc_mid.h"
#include "key_digital_driver_cfg.h"
#include "key_digital_driver.h"
#include "Demm.h"
#include "WheelHeat.h"
#define NUM_OF_DTC_KEY 15
const uint8_t dtc_key_id_tab[NUM_OF_DTC_KEY] = {
DTC_PREV_BUTTON_STUCK_ID,
DTC_PHONE_BUTTON_STUCK_ID,
DTC_VOICE_BUTTON_STUCK_ID,
DTC_VEDIO_BUTTON_STUCK_ID,
DTC_NEXT_BUTTON_STUCK_ID,
DTC_MUTE_BUTTON_STUCK_ID,
DTC_CUSTOM_BUTTON_STUCK_ID,
DTC_MENU2_CTRL_BUTTON_STUCK_ID,
DTC_SPDP_BUTTON_STUCK_ID,
DTC_SPDD_BUTTON_STUCK_ID,
DTC_DSPD_BUTTON_STUCK_ID,
DTC_DSPP_BUTTON_STUCK_ID,
DTC_LEFT_MENU_STUCK_ID,
DTC_LEFT_PICK_STUCK_ID,
DTC_RIGHT_PICK_STUCK_ID
};
void demm_app_task(void)
{
uint8_t system_voltage_mode;
uint8_t key_state[NUM_OF_DTC_KEY];
uint8_t i;
uint8_t ntc_state;
uint8_t heat_overcurrent;
ntc_state = WheelHeat_GetNtcState();
heat_overcurrent = WheelHeat_GetHeatOverCurrent();
system_voltage_mode = system_voltage_manage_mode_get(FUNC_SYSTEM_VOLTAGE_MANAGE_ID);
if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_LOW)
{
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_FAILED);
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_PASSED);
}
else if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_HIGH)
{
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_FAILED);
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_PASSED);
}
else
{
dem_set_test_result(DTC_POWER_LOW_ID, DTC_TEST_STATE_PASSED);
dem_set_test_result(DTC_POWER_HIGH_ID, DTC_TEST_STATE_PASSED);
}
#if 0
if(ntc_state == WHEEL_HEAT_NTC_SHORT )
{
dem_set_test_result(DTC_HEAT_NTC_SHORT_ID, DTC_TEST_STATE_FAILED);
}
else if(ntc_state == WHEEL_HEAT_NTC_OPEN )
{
dem_set_test_result(DTC_HEAT_NTC_OPEN_ID, DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(DTC_HEAT_NTC_SHORT_ID, DTC_TEST_STATE_PASSED);
dem_set_test_result(DTC_HEAT_NTC_OPEN_ID, DTC_TEST_STATE_PASSED);
}
if(heat_overcurrent == WHEEL_HEAT_OVERCURRENT )
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_ID, DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(DTC_HEAT_OVERCURRENT_ID, DTC_TEST_STATE_PASSED);
}
#endif
key_state[0] = key_digital_driver_get_state(KEY_DIGI_ID_PREV);
key_state[1] = key_digital_driver_get_state(KEY_DIGI_ID_PHONE);
key_state[2] = key_digital_driver_get_state(KEY_DIGI_ID_VOICE);
key_state[3] = key_adc_mid_get_result(KEY_ADC_ID_VEDIO);
key_state[4] = key_digital_driver_get_state(KEY_DIGI_ID_NEXT);
key_state[5] = key_digital_driver_get_state(KEY_DIGI_ID_MUTE);
key_state[6] = key_adc_mid_get_result(KEY_ADC_ID_CUSTOM);
key_state[7] = key_digital_driver_get_state(KEY_DIGI_ID_RMENU);
key_state[8] = key_adc_mid_get_result(KEY_ADC_ID_RES_SPD_ADD);
key_state[9] = key_adc_mid_get_result(KEY_ADC_ID_SET_SPD_SUB);
key_state[10] = key_adc_mid_get_result(KEY_ADC_ID_DSP_SUB);
key_state[11] = key_adc_mid_get_result(KEY_ADC_ID_DSP_PLUS);
key_state[12] = key_adc_mid_get_result(KEY_ADC_ID_LMENU);
key_state[13] = key_adc_mid_get_result(KEY_ADC_ID_LPICK);
key_state[14] = key_digital_driver_get_state(KEY_DIGI_ID_RPICK);;
for(i = 0; i < NUM_OF_DTC_KEY; i ++)
{
if(i == 0 || i == 1 || i == 2 || i == 4 || i == 5 || i == 7 || i == 14)
{
if(key_state[i] == KEY_DIGITAL_DRIVER_STATE_STICK)
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_PASSED);
}
}
else
{
if(key_state[i] == KEY_ADC_RESULT_STICK)
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_FAILED);
}
else
{
dem_set_test_result(dtc_key_id_tab[i], DTC_TEST_STATE_PASSED);
}
}
}
}

View File

@ -0,0 +1,9 @@
#ifndef DEMM_APP_H
#define DEMM_APP_H
void demm_app_task(void);
#endif

View File

@ -0,0 +1,546 @@
/**********************************************************************************
Copyright: Science&Technology Co., Ltd. 2012-2016. All rights reserved.
File name: power_manage.c
Author:
ID
Version: V1.0.0
Date: 2019.09.05
Description:
Others:
History:
**********************************************************************************/
//#include "derivative.h"
#include "system_config.h"
#include "fault_detect.h"
#include "common_memory.h"
//#include "power_drive.h"
#include "crc.h"
#include "key_adc_mid_cfg.h"
#include "Demm.h"
#include "key_digital_driver_cfg.h"
#include "system_voltage_manage.h"
static void fault_detect_vin(void);
static void fault_detect_vehicle_cfginfo(void);
static u8 fault_detect_get_event(u8 event);
static void fault_detect_power_task(void);
static void fault_detect_ign_task(void);
static void fault_detect_his_task(void);
typedef struct
{
u8 ign_state;
u8 power_state;
u16 ign_timecount;
u16 power_timecount;
u8 his_power_count;
}fault_detect_s;
static power_supply_history_detect_s g_power_supply_history_detect;
static fault_detect_s g_fault_detect;
static vehicle_cfg_s g_vehicle_cfg;
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void fault_detect_init(void)
{
#if 0
common_memory_clear((u8*)&g_power_supply_history_detect,(u16)sizeof(power_supply_history_detect_s));
common_memory_clear((u8*)&g_fault_detect,(u16)sizeof(fault_detect_s));
common_memory_clear((u8*)&g_vehicle_cfg,(u16)sizeof(vehicle_cfg_s));
g_power_supply_history_detect.count = 0;
g_vehicle_cfg.cds = VEHICLE_CFG_CDS_VALUE_NONE;
g_fault_detect.power_state=FAULT_DETECT_STATE_IDLE;
g_fault_detect.ign_state=FAULT_DETECT_STATE_IDLE;
#endif
}
//寫入一次記錄
void fault_detect_input_power_history(const power_supply_history_s *input_power)
{
#if 0
u8 i;
g_power_supply_history_detect.count++;
if(g_power_supply_history_detect.count>=POWER_SUPPLY_HIS_MAX)
{
g_power_supply_history_detect.count=0;
}
i=g_power_supply_history_detect.count;
common_memory_copys((u8*)&g_power_supply_history_detect.his[i],(u8*)input_power,sizeof(power_supply_history_s));
#endif
}
//將十次記錄都讀取
void fault_detect_get_power_history(power_supply_history_s *out_power,u8 *p_len)
{
#if 0
u8 i,j;
power_supply_history_s *lp_his;
//u8 l_buf[POWER_SUPPLY_HIS_MAX];
*p_len = POWER_SUPPLY_HIS_MAX;
lp_his = out_power;
for(i=0;i<POWER_SUPPLY_HIS_MAX;i++)
{
if(g_power_supply_history_detect.count >=i)
{
j=g_power_supply_history_detect.count-i;
}
else
{
j=POWER_SUPPLY_HIS_MAX+g_power_supply_history_detect.count-i;
}
//l_buf[i] = j;
common_memory_copys((u8*)lp_his,(const u8 *)&g_power_supply_history_detect.his[j],(u16)sizeof(power_supply_history_s));
lp_his++;
}
#endif
}
static void fault_detect_vin(void)
{
#if 0
u8 l_crc;
u8 l_buf[SYSDID_F190_VIN_CK_LEN];
//读取vin
(void)nvm_read_bytes(NVM_TYPE_EEPROM,SYSDID_F190_VIN_ADDR,(u8*)&l_buf[0],SYSDID_F190_VIN_CK_LEN);
l_crc = crc8_make_by_table(CRC8_ID_FOR_E2E_L2,&l_buf[0],SYSDID_F190_VIN_LEN);
if(l_crc == l_buf[SYSDID_F190_VIN_LEN]) //校验通过
{
dem_set_test_result(DTC_VIN_NOT_WRITE_ID, DTC_TEST_STATE_PASSED);
}
else
{
//不通过,表示未写入
dem_set_test_result(DTC_VIN_NOT_WRITE_ID, DTC_TEST_STATE_FAILED);
}
#endif
}
static void fault_detect_vehicle_cfginfo(void)
{
#if 0
u8 l_crc;
u8 l_buf[SYSDID_VEHICLE_CONFIG_CK_LEN];
//读取车辆配置信息
(void)nvm_read_bytes(NVM_TYPE_EEPROM,SYSDID_VEHICLE_CONFIG_ADDR,(u8*)&l_buf[0],SYSDID_VEHICLE_CONFIG_CK_LEN);
//cal_read_did(0xF100u,(u8*)&l_buf[0],SYSDID_ATTEMP_LEN+SYSDID_ATTEMP_MAX_LEN);
l_crc = crc8_make_by_table(CRC8_ID_FOR_E2E_L2,&l_buf[0],SYSDID_VEHICLE_CONFIG_LEN);
if(l_crc == l_buf[SYSDID_VEHICLE_CONFIG_LEN]) //校验通过
{
if( (l_buf[0]==VEHICLE_CFG_CDS_VALUE_DEFAULT) || (l_buf[0]==VEHICLE_CFG_CDS_VALUE_NONE) )
{
dem_set_test_result(DTC_VCS_INVALID_ID, DTC_TEST_STATE_FAILED);
}
#if 1
else if( (l_buf[0]==VEHICLE_CFG_CDS_VALUE_ADAS) || (l_buf[0]==VEHICLE_CFG_CDS_VALUE_CF) )
{
dem_set_test_result(DTC_VCS_INVALID_ID, DTC_TEST_STATE_PASSED);
}
#endif
else
{
}
}
else
{
//不通过,表示未写入
dem_set_test_result(DTC_VCS_INVALID_ID, DTC_TEST_STATE_FAILED);
}
#endif
}
static void fault_detect_power_task(void)
{
#if 0
switch(g_fault_detect.power_state)
{
case FAULT_DETECT_STATE_IDLE:
g_fault_detect.power_timecount++;
if(g_fault_detect.power_timecount>=FAULT_DETECT_POWER_TIME)
{
g_fault_detect.power_timecount=0;
g_fault_detect.power_state = FAULT_DETECT_STATE_POWER;
}
break;
case FAULT_DETECT_STATE_POWER:
break;
default:
//为了 default而加未验证
break;
}
#endif
}
static void fault_detect_ign_task(void)
{
#if 0
switch(g_fault_detect.ign_state)
{
case FAULT_DETECT_STATE_IDLE:
if(can_app_get_bcm_t15d()!=0u)
{
g_fault_detect.ign_timecount++;
if(g_fault_detect.ign_timecount>=FAULT_DETECT_IGN_ON_TIME)
{
g_fault_detect.ign_timecount=0;
fault_detect_vin();
fault_detect_vehicle_cfginfo();
g_fault_detect.ign_state = FAULT_DETECT_STATE_IGN_ON;
}
}
else
{
g_fault_detect.ign_timecount=0u;
}
break;
case FAULT_DETECT_STATE_IGN_ON:
if(can_app_get_bcm_t15d()!=0u)
{
}
else
{
g_fault_detect.ign_timecount=0;
g_fault_detect.ign_state = FAULT_DETECT_STATE_IGN_OFF;
}
break;
case FAULT_DETECT_STATE_IGN_OFF:
if(can_app_get_bcm_t15d()!=0u)
{
g_fault_detect.ign_timecount++;
if(g_fault_detect.ign_timecount>=FAULT_DETECT_IGN_ON_TIME)
{
g_fault_detect.ign_timecount=0;
g_fault_detect.ign_state = FAULT_DETECT_STATE_IGN_ON;
}
}
else
{
g_fault_detect.ign_timecount=0;
g_fault_detect.ign_state = FAULT_DETECT_STATE_IGN_OFF;
}
break;
default:
//为了 default而加未验证
break;
}
}
static void fault_detect_his_task(void)
{
app_com_rx_tbox_time_s l_tbox_time;
power_supply_history_s l_power_his;
//对历史电源状态的记录---以最小的周期帧为基准
g_fault_detect.his_power_count++;
if(g_fault_detect.his_power_count>=FAULT_DETECT_HISTORY_POWER_TIME)
{
g_fault_detect.his_power_count=0u;
(void)can_app_get_sig_tbox_time(&l_tbox_time);
//power his
l_power_his.poweroff = 0u;
l_power_his.out30s = 0u;
l_power_his.out30r = 0u;
l_power_his.out15d = 0u;
l_power_his.sigt30s = can_app_get_bcm_t30s();
l_power_his.sigt30r = can_app_get_bcm_t30r();
l_power_his.sigt15d = can_app_get_bcm_t15d();
l_power_his.year = l_tbox_time.year;
l_power_his.month = l_tbox_time.month;
l_power_his.day = l_tbox_time.day;
l_power_his.hour = l_tbox_time.hour;
l_power_his.min = l_tbox_time.min;
l_power_his.sec = l_tbox_time.sec;
fault_detect_input_power_history(&l_power_his);
}
else
{
//code
}
#endif
}
/**
* @brief 10ms定時器
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void fault_detect_task(void)
{
#if 0
fault_detect_ign_task();
fault_detect_power_task();
fault_detect_his_task();
#endif
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void vehicle_cfg_set_cds(u8 cds)
{
g_vehicle_cfg.cds = cds;
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
u8 vehicle_cfg_get_cds(void)
{
return g_vehicle_cfg.cds;
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
u8 fault_detect_get_power_state(void)
{
return g_fault_detect.power_state;
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
u8 fault_detect_get_ign_state(void)
{
return g_fault_detect.ign_state;
}
u8 fault_detect_judge_node_bcmstate_loss(void)
{
#if 0
u8 l_result=FAULT_DETECT_JUDGE_NODE_LOSS_OK;
u8 l_busoff_state ;
l_busoff_state = net_app_get_busoff(); /*PRQA S 3426*/
if((system_voltage_manage_mode_get(POWER_GRADE_ID_DIAG)==POWER_GRADE_FUNC_NORMAL)&&(l_busoff_state==0u))
{
l_result=FAULT_DETECT_JUDGE_NODE_LOSS_OK;
}
else
{
l_result=FAULT_DETECT_JUDGE_NODE_LOSS_NOTOK;
}
return l_result;
#else
return 0u;
#endif
}
u8 fault_detect_judge_key_stuck(void)
{
#if 0
u8 l_result=FAULT_DETECT_JUDGE_NODE_LOSS_OK;
if((system_voltage_manage_mode_get(DIG_SYSTEM_VOLTAGE_MANAGE_ID)==POWER_GRADE_FUNC_NORMAL) \
&& (fault_detect_get_ign_state()==FAULT_DETECT_STATE_IGN_ON) \
)
{
l_result=FAULT_DETECT_JUDGE_NODE_LOSS_OK;
}
else
{
l_result=FAULT_DETECT_JUDGE_NODE_LOSS_NOTOK;
}
return l_result;
#else
return 0u;
#endif
}
static u8 fault_detect_get_event(u8 event)
{
#if 0
u8 l_event;
if(event==DTC_TEST_STATE_FAILED)
{
l_event=DTC_TEST_STATE_FAILED;
}
else if(event==DTC_TEST_STATE_PASSED)
{
l_event=DTC_TEST_STATE_PASSED;
}
else
{
l_event=DTC_TEST_STATE_PASSED;
}
return l_event;
#else
return 0u;
#endif
}
void fault_detect_iokey_dtc(u8 key_id,u8 event)
{
#if 0
u8 l_event;
u8 l_result;
l_result = fault_detect_judge_key_stuck();
if(l_result ==FAULT_DETECT_JUDGE_NODE_LOSS_OK)
{
l_event=fault_detect_get_event(event);
switch(key_id)
{
case KEY_ID_GAP1:
dem_set_test_result(DTC_DSPA_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_GAP2:
dem_set_test_result(DTC_DSPD_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_ACC:
dem_set_test_result(DTC_ACC_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_CANCEL:
dem_set_test_result(DTC_CANCEL_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_RES1:
dem_set_test_result(DTC_SPDA_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_SET2:
dem_set_test_result(DTC_SPDD_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_UP:
dem_set_test_result(DTC_UP_BUTTON_STUCK_ID, l_event);
break;
case KEY_ID_DOWN:
dem_set_test_result(DTC_DOWN_BUTTON_STUCK_ID, l_event);
break;
default:
//为了 default而加未验证
break;
}
}
else
{
//
}
#endif
}
void fault_detect_adckey_dtc(u8 key_id,u8 event)
{
#if 0
u8 l_event;
u8 l_result;
l_result = fault_detect_judge_key_stuck();
if(l_result ==FAULT_DETECT_JUDGE_NODE_LOSS_OK)
{
l_event=fault_detect_get_event(event);
switch(key_id)
{
case KEY_ADC_ID_PHONE:
dem_set_test_result(DTC_BT_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_SOUNDCTRL:
dem_set_test_result(DTC_SOUND_CTRL_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_VOL_INC:
dem_set_test_result(DTC_VOLA_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_VOL_DEC:
dem_set_test_result(DTC_VOLD_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_PREVIOUS:
dem_set_test_result(DTC_PREV_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_NEXT:
dem_set_test_result(DTC_NEXT_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_MODE:
dem_set_test_result(DTC_MODE_BUTTON_STUCK_ID, l_event);
break;
case KEY_ADC_ID_CUSTOM:
dem_set_test_result(DTC_CUSTOM_BUTTON_STUCK_ID, l_event);
break;
default:
//为了 default而加未验证
break;
}
}
else
{
//
}
#endif
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void fault_detect_goto_sleep(void)
{
}
/**
* @brief
* @param input:
* @param output:
* @return none:
* @calls
* @calls by
* @others
*/
void fault_detect_goto_wakeup(void)
{
}

View File

@ -0,0 +1,94 @@
/**********************************************************************************
Copyright Science&Technology Co., Ltd. 2012-2016. All rights reserved.
File name: power_manage.h
Author:
ID:
Version: V1.0.0
Date: 2019.09.05
Description:
Others:
History:
1. Date:
Author:
Modification:
**********************************************************************************/
#ifndef __FAULT_DETECT_H
#define __FAULT_DETECT_H
#include "common_types.h"
#define FAULT_DETECT_TIME_UNIT APP_TASK_10MS
#define FAULT_DETECT_HISTORY_POWER_TIME (20u/FAULT_DETECT_TIME_UNIT)
#define FAULT_DETECT_IGN_ON_TIME (2000u/FAULT_DETECT_TIME_UNIT)
#define FAULT_DETECT_POWER_TIME (5500u/FAULT_DETECT_TIME_UNIT)
#define FAULT_DETECT_STATE_IDLE 0u
#define FAULT_DETECT_STATE_IGN_ON 1u
#define FAULT_DETECT_STATE_IGN_OFF 2u
#define FAULT_DETECT_STATE_POWER 3u
#define VEHICLE_CFG_CDS_VALUE_DEFAULT 0XFFU
#define VEHICLE_CFG_CDS_VALUE_CF 0X01U
#define VEHICLE_CFG_CDS_VALUE_ADAS 0X03U
#define VEHICLE_CFG_CDS_VALUE_NONE 0XFEU
#define FAULT_DETECT_JUDGE_NODE_LOSS_NOTOK 0u
#define FAULT_DETECT_JUDGE_NODE_LOSS_OK 1u
//0xAA表示busoff了0x55表示正常
#define FAULT_DETECT_COM_BUSOFF_STATE 0XAAu
#define FAULT_DETECT_COM_NORMAL_STATE 0X55u
typedef struct
{
u8 cds;
}vehicle_cfg_s;
#define POWER_SUPPLY_HIS_DATA_SIZE 8u
#define POWER_SUPPLY_HIS_MAX 10u
typedef struct
{
u8 poweroff;
u8 out30s;
u8 out30r;
u8 out15d;
u8 sigt30s;
u8 sigt30r;
u8 sigt15d;
u8 year;
u8 month;
u8 day;
u8 hour;
u8 min;
u8 sec;
}power_supply_history_s;
typedef struct
{
power_supply_history_s his[POWER_SUPPLY_HIS_MAX];
u8 count; //計數
u8 p_cur; //當前的指針
}power_supply_history_detect_s;
void fault_detect_input_power_history(const power_supply_history_s *input_power);
void fault_detect_get_power_history(power_supply_history_s *out_power,u8 *p_len);
void fault_detect_init(void);
void fault_detect_task(void);
void vehicle_cfg_set_cds(u8 cds);
u8 vehicle_cfg_get_cds(void);
u8 fault_detect_get_power_state(void);
u8 fault_detect_get_ign_state(void);
u8 fault_detect_judge_node_bcmstate_loss(void);
u8 fault_detect_judge_key_stuck(void);
void fault_detect_iokey_dtc(u8 key_id,u8 event);
void fault_detect_adckey_dtc(u8 key_id,u8 event);
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,156 @@
/*****************************************************************************
** Filename : key_app.h
** Project :
** Module :
** Processor :
** Date/Time :
** Abstract :
** Contents :
** Author : mingyea
** http :
** mail :
** --------------------------------------------------------------------------
**
** --------------------------------------------------------------------------
******************************************************************************/
#ifndef _KEY_APP_H_
#define _KEY_APP_H_
/*****************************************************************************
* Include Files
*****************************************************************************/
#include "common_types.h"
#include "key_adc_mid.h"
#include "key_digital_driver.h"
#include "key_encoder_driver.h"
typedef u16 key_app_tim_t;
#define KEY_APP_MEDIUM_TYPE_TOTAL 3u
typedef enum
{
KEY_APP_SW_STATE_INACTIVE=0U,
KEY_APP_SW_STATE_ACTIVE=1U,
KEY_APP_SW_STATE_ERROR=2U,
KEY_APP_SW_STATE_FAULT=3U
}key_app_sw_state_e;
typedef enum
{
KEY_APP_INPUT_NULL=0U, //没有按下
KEY_APP_INPUT_VALID, //按下
KEY_APP_INPUT_STUCK, //卡滞
KEY_APP_INPUT_FAULT //
}key_app_input_s;
typedef enum
{
ACC_ERROR=0u,
ACC_NO_ERROR
}key_app_acc_dig;
/*****************************************************************************
* Defines
*****************************************************************************/
#define KEY_APP_MULTI_MEDIA_VOL_PLUS_ID 0u //音量加,逻辑排序
#define KEY_APP_MULTI_MEDIA_VOL_SUB_ID 1u //音量减,逻辑排序
#define KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID 2u //影像,全景,逻辑排序
#define KEY_APP_MULTI_MEDIA_VOL_LMENU_ID 3u //左菜单
#define KEY_APP_MULTI_MEDIA_CUSTOM_ID 4u //定制按键
#define KEY_APP_MULTI_MEDIA_PREV_ID 5u //向上搜台 逻辑排序
#define KEY_APP_MULTI_MEDIA_NEXT_ID 6u //向下搜台 逻辑排序
#define KEY_APP_MULTI_MEDIA_VOL_VOICE_ID 7u //语音,逻辑排序--数字按键
#define KEY_APP_MULTI_MEDIA_VOL_CALL_ID 8u //接电话,逻辑排序
#define KEY_APP_MULTI_MEDIA_VOL_RMENU_ID 9u //右菜单,逻辑排序
#define KEY_APP_MULTI_MEDIA_VOL_MUTE_ID 10u //静音,逻辑排序--数字按键
#define NUM_OF_MULTI_MEDIA_KEY 11u
#define KEY_APP_MULTI_MEDIA_ID_START KEY_MAPP_MULTI_MEDIA_VOL_VEDIO_ID //除了滚轮以外的mid adc id 实际通道
#define KEY_DCM_SHOW_UP 0u //2F服务室内展车模式开启
#define KEY_DCM_SHOW_IN 1u //2F服务室内展车模式开启
#define KEY_DCM_SHOW_OUT 2u //2F服务室外展车模式开启
typedef enum
{
KEY_APP_MEDIUM_STATE_NORMAL =0u,
KEY_APP_MEDIUM_STATE_PROSLEEP ,
}key_app_medium_state_e;
typedef enum
{
KEY_APP_SUBSTATE_NORMAL =0u, //用於normal
KEY_APP_SUBSTATE_PRESLEEP, //用於normal
KEY_APP_SUBSTATE_SLEEP ,//= KEY_APP_SUBSTATE_NORMAL, //用於sleep
KEY_APP_SUBSTATE_PREWAKE,// = KEY_APP_SUBSTATE_PRESLEEP, //用於sleep
}key_app_sub_state_e;
typedef enum
{
KEY_APP_STATE_NORMAL =0u,
KEY_APP_STATE_SLEEP
}key_app_state_e;
typedef struct
{
key_app_medium_state_e state;
key_app_tim_t timecount;
}key_app_medium_s;
typedef struct
{
key_app_state_e state;
key_app_sub_state_e sub_state;
key_app_tim_t timecount;
#ifdef KEY_APP_ENABLE_SLEEP_FUNCTION
key_app_medium_s medium[KEY_APP_MEDIUM_TYPE_TOTAL];
#endif
}key_app_s;
/*****************************************************************************
* Macros
*****************************************************************************/
/*****************************************************************************
* Type Defines
*****************************************************************************/
/*****************************************************************************
*Static Variable
*****************************************************************************/
/*****************************************************************************
*Global Variable
*****************************************************************************/
/*****************************************************************************
*Constant
*****************************************************************************/
/*****************************************************************************
*Function Prototype
*****************************************************************************/
void key_app_init(void);
void key_app_task(void);
void key_app_goto_sleep(void);
void key_app_goto_wake(void);
key_app_sw_state_e key_app_get_digi_state(u8 id);
key_app_sw_state_e key_app_get_adc_state(u8 id);
#endif /* end __KEY_H */
/*****************************************************************************
** End Of File
******************************************************************************/

View File

@ -0,0 +1,542 @@
#include "led_app.h"
#include "can_app.h"
#include "Com_Cfg.h"
#include "pwm_manage.h"
#include "Com.h"
#include "system_voltage_manage.h"
#include "system_voltage_manage_cfg.h"
#include "CanNm.h"
#include "common_memory.h"
#include "Com_Cfg.h"
#define LED_APP_TASK_PERIOD_TIME 5u
#define OTA_EXIT_DELAY_3S (3000u / LED_APP_TASK_PERIOD_TIME)
#define BACKGROUND_LIGHT_MOD_4G_49A_LOST_COMMUNICATION_3MIN (1000u * 60u * 3u / LED_APP_TASK_PERIOD_TIME)
#define BACKGROUND_LIGHT_METER_1_DIR_4BF_LOST_COMMUNICATION_2S (2000u / LED_APP_TASK_PERIOD_TIME)
#define BACKGROUND_LIGHT_LEVEL_INVALID 0u
#define BACKGROUND_LIGHT_LEVEL_1 1u
#define BACKGROUND_LIGHT_LEVEL_2 2u
#define BACKGROUND_LIGHT_LEVEL_3 3u
#define BACKGROUND_LIGHT_LEVEL_4 4u
#define BACKGROUND_LIGHT_LEVEL_5 5u
#define BACKGROUND_LIGHT_LEVEL_6 6u
#define BACKGROUND_LIGHT_LEVEL_7 7u
#define BACKGROUND_LIGHT_LEVEL_8 8u
#define BACKGROUND_LIGHT_LEVEL_9 9u
#define BACKGROUND_LIGHT_LEVEL_10 10u
#define BACKGROUND_LIGHT_LEVEL_11 11u
#define BACKGROUND_LIGHT_LEVEL_RESERVED 23u
#define BACKGROUND_LIGHT_LEVEL_MAX 11u
#define NUM_OF_BACKGROUND_LIGHT_LEVEL 12u
#define PICK_LIGHT_FAST_FLASH_PERIOD (380u / LED_APP_TASK_PERIOD_TIME)
#define PICK_LIGHT_FAST_FLASH_DUTY (200u / LED_APP_TASK_PERIOD_TIME)
#define PICK_LIGHT_SLOW_FLASH_PERIOD (750u / LED_APP_TASK_PERIOD_TIME)
#define PICK_LIGHT_SLOW_FLASH_DUTY (400u / LED_APP_TASK_PERIOD_TIME)
#define PICK_FUN_INACTIVE 0u
#define PICK_FUN_ACTIVE 1u
#define PICK_FUN_SECOND_ALARM 2u
#define PICK_FUN_THREE_ALARM 3u
const uint8_t background_light_level_tab[NUM_OF_BACKGROUND_LIGHT_LEVEL] =
{
0, 10, 16, 22, 28, 34, 40, 70, 80, 85, 90, 100
};
#define BACKGROUND_LIGHT_STEP_TIME_35MS (30u / LED_APP_TASK_PERIOD_TIME)
typedef struct
{
uint8_t cur_level;
uint8_t duty;
uint16_t invalid_timer;
uint8_t ota_mod;
uint16_t ota_exit_delay;
uint32_t mod_4g_49a_lost_communication_timer;
uint8_t step_timer;
uint16_t meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer;
}app_background_light_type;
app_background_light_type app_background_light;
#define APP_PICK_LIGHT_STATE_IDLE 0u
#define APP_PICK_LIGHT_STATE_ON 1u
#define APP_PICK_LIGHT_STATE_SLOW_FLASH 2u
#define APP_PICK_LIGHT_STATE_FAST_FLASH 3u
#define APP_PICK_LIGHT_DAY_MOD 0u
#define APP_PICK_LIGHT_NIGHT_MOD 1u
typedef struct
{
uint8_t timer;
uint8_t state;
uint8_t output;
uint8_t day_night_mod;
}app_pick_light_type;
app_pick_light_type app_pick_light;
void led_app_init(void)
{
common_memory_clear((uint8_t *)&app_background_light, sizeof(app_background_light));
common_memory_clear((uint8_t *)&app_pick_light, sizeof(app_pick_light));
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
}
uint8_t is_led_app_allow_sleep(void)
{
uint8_t ret = FALSE;
if((app_background_light.duty == (uint16_t)0))
{
ret = TRUE;
}
return (ret);
}
uint8_t pick_light_state_get(void)
{
uint8_t acc_mode_display1_29c_s;
uint8_t dnp_status_s;
uint8_t dnp_take_over_req_s;
uint8_t pick_light_state;
can_app_receive_signal(COM_RXSIGADS_ACC_MODE_DISPLAYL, &acc_mode_display1_29c_s);
can_app_receive_signal(COM_RXSIGADS_DNP_STATS, &dnp_status_s);
can_app_receive_signal(COM_RXSIGADS_DNP_TAKE_OVER_REQ_S, &dnp_take_over_req_s);
pick_light_state = PICK_FUN_INACTIVE;
/* ACC 功能未激活 */
if( ( (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_ACTIVE_CONTROL_MODE) \
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_BRAKE_ONLY_MODE) \
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_OVENIDE) \
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_STAND_STILL_ACTIVE_MODE)\
&& (acc_mode_display1_29c_s != ADS_ACC_MODE_DISPLAYL_STAND_STILL_WAIT_MODE) ) \
/* LCC功能不可用*/
&& ((dnp_status_s == ADS_DNP_STATS_OFF) || (dnp_status_s == ADS_DNP_STATS_PASSIVE)) \
/* NOA 功能不可用 */
||((dnp_status_s == ADS_DNP_STATS_FAULT) || (dnp_status_s == ADS_DNP_STATS_FORBIDDEN)))
{
pick_light_state = PICK_FUN_INACTIVE;
}
/* ACC 功能激活 */
if ( (((acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_ACTIVE_CONTROL_MODE) \
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_BRAKE_ONLY_MODE) \
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_OVENIDE) \
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_STAND_STILL_ACTIVE_MODE)\
|| (acc_mode_display1_29c_s == ADS_ACC_MODE_DISPLAYL_STAND_STILL_WAIT_MODE)) \
/*LCC 功能激活*/
|| ((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_ILCA_ACTIVE) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
/* NOA 功能激活 */
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE))) && ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_INACTIVE))
)
{
pick_light_state = PICK_FUN_ACTIVE;
}
/*LCC 功能激活*/
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
/* NOA 功能激活 */
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
/* 触发一级接管请求 */
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL1)))
{
pick_light_state = PICK_FUN_ACTIVE;
}
/*LCC 功能激活*/
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
/* NOA 功能激活 */
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
/* 触发二级接管请求 */
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL2)))
{
pick_light_state = PICK_FUN_SECOND_ALARM;
}
/* LCC 功能退出 */
if( (((dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE2) || (dnp_status_s == ADS_DNP_STATS_LCC_ACTIVE1)) \
/* NOA 功能激活 */
|| ((dnp_status_s == ADS_DNP_STATS_DNP_ACTIVE)))
/* 触发三级接管请求 */
&& ((dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_WARNING_LEVEL3)))
{
pick_light_state = PICK_FUN_THREE_ALARM;
}
/* LCC 等于MRC最小风险策略 */
if((dnp_status_s == ADS_DNP_STATS_MRC) && (dnp_take_over_req_s == ADS_DNP_TAKE_OVER_REQ_S_SAFE_STOP))
{
pick_light_state = PICK_FUN_THREE_ALARM;
}
if(COM_RXIPDUADS_29C_TIMEOUTFLAG)
{
pick_light_state = PICK_FUN_INACTIVE;
}
return (pick_light_state);
}
uint8_t pick_light_state_process(void)
{
uint8_t pick_light_state;
uint8_t pick_light_task_state;
pick_light_state = pick_light_state_get();
if(pick_light_state == PICK_FUN_ACTIVE)
{
pick_light_task_state = APP_PICK_LIGHT_STATE_ON;
}
else if(pick_light_state == PICK_FUN_SECOND_ALARM)
{
pick_light_task_state = APP_PICK_LIGHT_STATE_SLOW_FLASH;
}
else if(pick_light_state == PICK_FUN_THREE_ALARM)
{
pick_light_task_state = APP_PICK_LIGHT_STATE_FAST_FLASH;
}
else
{
pick_light_task_state = APP_PICK_LIGHT_STATE_IDLE;
}
return pick_light_task_state;
}
void pick_light_task(void)
{
uint8_t background_light_level;
Nm_StateType can_nm_state;
Nm_ModeType can_nm_mode;
can_app_receive_signal(COM_RXSIGMETER1_BACKGROUNDLIGHTLVLCMD, &background_light_level);
CanNm_GetState(0 ,(Nm_StateType * )(&can_nm_state),(Nm_ModeType * )(&can_nm_mode));
if(background_light_level >= BACKGROUND_LIGHT_LEVEL_1 && background_light_level <= BACKGROUND_LIGHT_LEVEL_11)
{
app_pick_light.day_night_mod = APP_PICK_LIGHT_NIGHT_MOD;
}
else if(background_light_level > BACKGROUND_LIGHT_LEVEL_11 && background_light_level < BACKGROUND_LIGHT_LEVEL_RESERVED)
{
app_pick_light.day_night_mod = APP_PICK_LIGHT_DAY_MOD;
}
else
{
app_pick_light.day_night_mod = APP_PICK_LIGHT_DAY_MOD;
}
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
#if 0
switch(app_pick_light.state)
{
case APP_PICK_LIGHT_STATE_IDLE:
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
app_pick_light.state = pick_light_state_process();
if(app_pick_light.state != APP_PICK_LIGHT_STATE_IDLE)
{
app_pick_light.timer = 0u;
app_pick_light.output = 1u;
}
break;
case APP_PICK_LIGHT_STATE_ON:
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
}
else
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
}
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
app_pick_light.state = pick_light_state_process();
app_pick_light.timer = 0u;
app_pick_light.output = 1u;
break;
case APP_PICK_LIGHT_STATE_FAST_FLASH:
app_pick_light.timer ++;
if(app_pick_light.output)
{
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
}
else
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
}
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
if(app_pick_light.timer >= PICK_LIGHT_FAST_FLASH_DUTY)
{
app_pick_light.output = 0;
}
}
else
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
if(app_pick_light.timer >= PICK_LIGHT_FAST_FLASH_PERIOD)
{
app_pick_light.timer = 0;
app_pick_light.output = 1;
app_pick_light.state = pick_light_state_process();
}
}
break;
case APP_PICK_LIGHT_STATE_SLOW_FLASH:
app_pick_light.timer ++;
if(app_pick_light.output)
{
if(app_pick_light.day_night_mod == APP_PICK_LIGHT_DAY_MOD)
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 1000);
}
else
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
}
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 1000);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 1000);
if(app_pick_light.timer >= PICK_LIGHT_SLOW_FLASH_DUTY)
{
app_pick_light.output = 0;
}
}
else
{
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
if(app_pick_light.timer >= PICK_LIGHT_SLOW_FLASH_PERIOD)
{
app_pick_light.timer = 0;
app_pick_light.output = 1;
app_pick_light.state = pick_light_state_process();
}
}
break;
default:
while(1);
}
#endif
}
void background_light_task(void)
{
uint8_t enter_ota_mode_req;
uint8_t power_gear;
uint8_t background_light_level;
uint8_t pick_light_state;
Nm_StateType can_nm_state;
Nm_ModeType can_nm_mode;
can_app_receive_signal(COM_RXSIGMETER1_BACKGROUNDLIGHTLVLCMD, &background_light_level);
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR, &power_gear);
can_app_receive_signal(COM_RXSIGMOD_4G_ENTER_OTA_MODE_REQ, &enter_ota_mode_req);
CanNm_GetState(0 ,(Nm_StateType * )(&can_nm_state),(Nm_ModeType * )(&can_nm_mode));
if(power_gear == POWER_GEAR_OFF)
{
if((COM_RXIPDUMETER_1_DIR_4BF_TIMEOUTFLAG == 1u) || (background_light_level == BACKGROUND_LIGHT_LEVEL_INVALID) \
|| (background_light_level >= BACKGROUND_LIGHT_LEVEL_RESERVED))
{
if(app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer < 0xffffu)
{
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer ++;
}
if(app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer >= BACKGROUND_LIGHT_METER_1_DIR_4BF_LOST_COMMUNICATION_2S)
{
app_background_light.cur_level = 0u;
}
}
else
{
if(background_light_level > BACKGROUND_LIGHT_LEVEL_11)
{
background_light_level = 0u;
}
app_background_light.cur_level = background_light_level;
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer = 0u;
}
}
else
{
if((background_light_level != BACKGROUND_LIGHT_LEVEL_INVALID) && (background_light_level < BACKGROUND_LIGHT_LEVEL_RESERVED))
{
if(background_light_level > BACKGROUND_LIGHT_LEVEL_11)
{
background_light_level = 0u;
}
app_background_light.cur_level = background_light_level;
}
app_background_light.meter_1_dir_4bf_lost_comm_or_lvl_sig_invalid_timer = 0u;
}
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG)
{
if(app_background_light.mod_4g_49a_lost_communication_timer < 0xffffffffu)
{
app_background_light.mod_4g_49a_lost_communication_timer ++;
}
}
else
{
app_background_light.mod_4g_49a_lost_communication_timer = 0u;
}
if(app_background_light.ota_mod)
{
app_background_light.cur_level = 0u;
if(app_background_light.mod_4g_49a_lost_communication_timer >= BACKGROUND_LIGHT_MOD_4G_49A_LOST_COMMUNICATION_3MIN)
{
app_background_light.mod_4g_49a_lost_communication_timer = 0u;
app_background_light.ota_mod = 0u;
}
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG == 0u)
{
if(enter_ota_mode_req == 0u)
{
app_background_light.ota_exit_delay ++;
if(app_background_light.ota_exit_delay >= OTA_EXIT_DELAY_3S)
{
app_background_light.ota_exit_delay = 0u;
app_background_light.ota_mod = 0u;
}
}
else
{
app_background_light.ota_exit_delay = 0u;
app_background_light.ota_mod = 1u;
}
}
}
else
{
if(COM_RXIPDUMOD_4G_49A_TIMEOUTFLAG == 0u)
{
if(enter_ota_mode_req == 1u)
{
app_background_light.ota_mod = 1u;
}
}
}
if((can_nm_state == NM_STATE_BUS_SLEEP))
{
app_background_light.cur_level = 0;
}
app_background_light.step_timer ++;
if(app_background_light.step_timer >= BACKGROUND_LIGHT_STEP_TIME_35MS)
{
app_background_light.step_timer = 0u;
if(app_background_light.duty > background_light_level_tab[app_background_light.cur_level])
{
app_background_light.duty --;
}
else if(app_background_light.duty < background_light_level_tab[app_background_light.cur_level])
{
app_background_light.duty ++;
}
else
{
}
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, (uint16_t)(app_background_light.duty * 10u));
}
}
void Led_EnterSleepMode(void)
{
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
app_background_light.cur_level = 0;
app_background_light.duty = 0;
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
}
void led_app_task(void)
{
uint8_t system_voltage_mode;
system_voltage_mode = system_voltage_manage_mode_get(FUNC_SYSTEM_VOLTAGE_MANAGE_ID);
if(system_voltage_mode == SYSTEM_VOLTAGE_MODE_NORMAL)
{
background_light_task();
//pick_light_task();
}
else
{
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, L_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(PICK_BACKGROUND_LIGHT_PWM_ID, R_PICK_BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(BACKGROUND_LIGHT_PWM_ID, BACKGROUND_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_HIGH_LIGHT_PWM_ID, L_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(L_PICK_LOW_LIGHT_PWM_ID, L_PICK_LOW_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_HIGH_LIGHT_PWM_ID, R_PICK_HIGH_LIGHT_PWM_CH, 0);
pwm_set_duty(R_PICK_LOW_LIGHT_PWM_ID, R_PICK_LOW_LIGHT_PWM_CH, 0);
app_background_light.cur_level = 0;
app_background_light.duty = 0;
app_pick_light.state = APP_PICK_LIGHT_STATE_IDLE;
}
}

View File

@ -0,0 +1,31 @@
#ifndef LED_APP_H
#define LED_APP_H
#include "common_types.h"
#define BACKGROUND_LIGHT_PWM_ID PWM_BASE_ID_GPTM1
#define BACKGROUND_LIGHT_PWM_CH 3
#define PICK_BACKGROUND_LIGHT_PWM_ID PWM_BASE_ID_GPTM1
#define L_PICK_BACKGROUND_LIGHT_PWM_CH 2
#define R_PICK_BACKGROUND_LIGHT_PWM_CH 1
#define L_PICK_HIGH_LIGHT_PWM_ID PWM_BASE_ID_ATM
#define L_PICK_LOW_LIGHT_PWM_ID PWM_BASE_ID_ATM
#define R_PICK_HIGH_LIGHT_PWM_ID PWM_BASE_ID_ATM
#define R_PICK_LOW_LIGHT_PWM_ID PWM_BASE_ID_ATM
#define L_PICK_HIGH_LIGHT_PWM_CH 2
#define L_PICK_LOW_LIGHT_PWM_CH 1
#define R_PICK_HIGH_LIGHT_PWM_CH 3
#define R_PICK_LOW_LIGHT_PWM_CH 4
void led_app_task(void);
uint8_t is_led_app_allow_sleep(void);
void led_app_init(void);
void Led_EnterSleepMode(void);
#endif

View File

@ -0,0 +1,336 @@
#include "low_power_app.h"
#include "Cpu.h"
#include "Can_BusOff.h"
#include "app_encoder.h"
#include "CanNm.h"
#include "can_app.h"
#include "Com_Cfg.h"
#include "led_app.h"
#include "main.h"
#include "Can_Pl.h"
#include "CanIf.h"
#include "pwm_manage.h"
#include "can_app.h"
#include "WheelHeat.h"
#include "SimpleOs_Time.h"
#define LOW_POWER_TASK_PERIOD_TIME 10u
#define GOTO_SLEEP_TIMEOUT (5000u / LOW_POWER_TASK_PERIOD_TIME)
#define LOW_POWER_PRE_WAKEUP_DELAY_2S (2000u / LOW_POWER_TASK_PERIOD_TIME)
#define LOW_POWER_APP_ENTER_CRITICAL() System_DisableIrqGlobal()
#define LOW_POWER_APP_EXIT_CRITICAL() System_EnableIrqGlobal()
uint8_t lp_tim16_wakeup_flag = 0;
uint8_t gpio_wakeup_flag = 0;
uint16_t goto_sleep_timer = 0;
uint8_t u8LowPowerPreWakeUpDelay = 0u;
uint8_t u8LowPower4BFMsgWakeUpFlag = 0u;
void lp_tim16_wakeup_flag_set(void)
{
lp_tim16_wakeup_flag = 1;
}
void lp_tim16_wakeup_flag_clear(void)
{
lp_tim16_wakeup_flag = 0;
}
uint8_t lp_tim16_wakeup_flag_get(void)
{
return (lp_tim16_wakeup_flag);
}
void LowPower4BFMsgWakeUpFlag_Set(void)
{
u8LowPower4BFMsgWakeUpFlag = 1u;
}
void LowPower4BFMsgWakeUpFlag_Clear(void)
{
u8LowPower4BFMsgWakeUpFlag = 0u;
}
void gpio_wakeup_flag_set(void)
{
gpio_wakeup_flag = 1;
}
void gpio_wakeup_flag_clear(void)
{
gpio_wakeup_flag = 0;
}
uint8_t gpio_wakeup_flag_get(void)
{
return gpio_wakeup_flag;
}
/**
* @brief Sleep
* @param void
* @retval void
*/
void Sleep(void)
{
FL_PMU_SleepInitTypeDef LPM_InitStruct;
// FL_CMU_RCLF_Enable(); /* 暂开启RCLF */
FL_RMU_PDR_Enable(RMU); /* 打开PDR */
FL_RMU_BOR_Disable(RMU); /* 关闭BOR 2uA */
FL_VREF_Disable(VREF); /* 关闭VREF1p2 */
LPM_InitStruct.deepSleep = FL_PMU_SLEEP_MODE_NORMAL;
LPM_InitStruct.powerMode = FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP;
LPM_InitStruct.wakeupFrequency = FL_PMU_RCHF_WAKEUP_FREQ_8MHZ;
LPM_InitStruct.wakeupDelay = FL_PMU_WAKEUP_DELAY_2US;
LPM_InitStruct.LDOLowPowerMode = FL_PMU_LDO_LPM_DISABLE;
LPM_InitStruct.coreVoltageScaling = FL_DISABLE;
FL_PMU_Sleep_Init(PMU, &LPM_InitStruct);
/* 使能BOR */
FL_RMU_BOR_Enable(RMU);
/* 睡眠电源模式*/
FL_PMU_SetLowPowerMode(PMU, FL_PMU_POWER_MODE_SLEEP_OR_DEEPSLEEP);
/* 休眠 */
__WFI();
/* 使能VREF1p2 */
FL_VREF_Enable(VREF);
}
void low_power_goto_sleep(void)
{
LOW_POWER_APP_ENTER_CRITICAL();
(void)Led_EnterSleepMode();
(void)tim_de_init();
(void)adc_de_init();
(void)CanTrcv_Disable();
(void)gpio_goto_sleep();
(void)pwm_manage_deinit();
(void)lptim16_init();
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
LOW_POWER_APP_EXIT_CRITICAL();
}
uint8_t low_power_pre_wakeup_Process(void)
{
logic_timer_s logic_delay_100ms;
uint8_t time_out;
uint8_t power_gear;
uint8_t ret;
uint8_t time_100ms_cnt;
(void)clk_init();
(void)tim_init();
(void)gpio_goto_wakeup();
(void)Can_Init();
(void)CanIf_SetControllerMode(0,CANIF_CS_STARTED);
(void)Com_RxStart();
(void)logic_timer_start((logic_timer_s*)&logic_delay_100ms, (void*)NULL_POINT , 100);
time_100ms_cnt = 0;
for(;;)
{
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR, &power_gear);
if(power_gear == POWER_GEAR_ON)
{
ret = true;
break;
}
if( CanNm_RxIndFlg[0] == TRUE )
{
CanNm_RxIndFlg[0] = FALSE;
ret = true;
break;
}
time_out = logic_timer_out((logic_timer_s*)&logic_delay_100ms);
if(time_out)
{
(void)logic_timer_start((logic_timer_s*)&logic_delay_100ms, (void*)NULL_POINT , 100);
wdog_task();
time_100ms_cnt ++;
if(time_100ms_cnt >= 20u)
{
ret = false;
break;
}
}
}
return ret;
}
void low_power_goto_wakeup(void)
{
LOW_POWER_APP_ENTER_CRITICAL();
clk_init();
gpio_init();
adc_init();
tim_init();
system_voltage_manage_init();
(void)app_encoder_init();
stack_check_init();
CanTrcv_Init();
(void)Can_Init();
CanIf_Init();
(void)CanIf_SetControllerMode(0,CANIF_CS_STARTED);
Com_Init();
//Com_TxStart();
Com_RxStart();
CanTp_Init(((void *) 0));
CAN_BusOff_Init();
Dcm_Init(((void *) 0));
key_app_init();
(void)key_encoder_driver_init();
cal_did_init();
boot_app_init();
random_init();
service_27_init();
dem_task_init();
WheelHeat_Init();
(void)CanApp_WakeupProcess();
// CanNm_PassiveStartUp(0);
FL_LPTIM16_DeInit(LPTIM16);
SimpleOsTime_Init();
goto_sleep_timer = 0;
u8LowPowerPreWakeUpDelay = LOW_POWER_PRE_WAKEUP_DELAY_2S;
u8LowPower4BFMsgWakeUpFlag = 0;
LOW_POWER_APP_EXIT_CRITICAL();
}
void low_power_process(void)
{
for(;;)
{
wdog_task();
(void)lp_tim16_wakeup_flag_clear();
(void)gpio_wakeup_flag_clear();
(void)low_power_goto_sleep();
(void)CanTrcv_Disable();
Sleep();
if(gpio_wakeup_flag_get() != 0u)
{
low_power_goto_wakeup();
break;
}
}
}
void LowPowerPreWakeUpDelay_Start(void)
{
u8LowPowerPreWakeUpDelay = LOW_POWER_PRE_WAKEUP_DELAY_2S;
}
uint8_t Is_LowPowerPreWakeUpDelay_Empty(void)
{
uint8_t Ret;
if(u8LowPowerPreWakeUpDelay != 0U)
{
Ret = FALSE;
}
else
{
Ret = TRUE;
}
return Ret;
}
void low_power_app_task(void)
{
Nm_StateType can_nm_state;
Nm_ModeType can_nm_mode;
uint8_t power_gear;
uint8_t led_app_allow_sleep;
CanNm_GetState(0 ,(Nm_StateType *)(&can_nm_state),(Nm_ModeType *)(&can_nm_mode));
can_app_receive_signal(COM_RXSIGBCM1_POWER_GEAR, &power_gear);
switch(can_nm_state)
{
case NM_STATE_UNINIT:
while(1);
break;
case NM_STATE_BUS_SLEEP:
if(u8LowPowerPreWakeUpDelay)
{
u8LowPowerPreWakeUpDelay --;
if((power_gear != POWER_GEAR_OFF) || (u8LowPower4BFMsgWakeUpFlag != 0u))
{
u8LowPowerPreWakeUpDelay = 0;
CanNm_PassiveStartUp(0);
break;
}
}
else
{
led_app_allow_sleep = is_led_app_allow_sleep();
goto_sleep_timer ++;
if((led_app_allow_sleep == true) || (goto_sleep_timer >= GOTO_SLEEP_TIMEOUT))
{
low_power_process();
}
}
break;
case NM_STATE_PREPARE_BUS_SLEEP:
goto_sleep_timer = 0;
if((power_gear != POWER_GEAR_OFF))
{
CanNm_PassiveStartUp(0);
}
break;
case NM_STATE_READY_SLEEP:
goto_sleep_timer = 0;
if((power_gear != POWER_GEAR_OFF))
{
CanNm_NetworkRequest(0);
}
break;
case NM_STATE_REPEAT_MESSAGE:
goto_sleep_timer = 0;
if((power_gear != POWER_GEAR_OFF))
{
CanNm_NetworkRequest(0);
}
else
{
CanNm_NetworkRelease(0);
}
break;
case NM_STATE_NORMAL_OPERATION:
case NM_STATE_SYNCHRONIZE:
case NM_STATE_WAIT_CHECK_ACTIVATION:
case NM_STATE_WAIT_NETWORK_STARTUP:
goto_sleep_timer = 0;
if((power_gear == POWER_GEAR_OFF))
{
CanNm_NetworkRelease(0);
}
break;
default:
while(1);
break;
}
}

View File

@ -0,0 +1,17 @@
#ifndef LOW_POWER_APP_H
#define LOW_POWER_APP_H
#include "common_types.h"
void low_power_app_task(void);
uint8_t lp_tim16_wakeup_flag_get(void);
void lp_tim16_wakeup_flag_clear(void);
void lp_tim16_wakeup_flag_set(void);
void gpio_wakeup_flag_set(void);
void gpio_wakeup_flag_clear(void);
uint8_t gpio_wakeup_flag_get(void);
void LowPower4BFMsgWakeUpFlag_Clear(void);
void LowPower4BFMsgWakeUpFlag_Set(void);
#endif

View File

@ -0,0 +1,132 @@
/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.h
* @brief : Header for main.c file.
* This file contains the common defines of the application.
******************************************************************************
* @attention
*
* <h2><center>&copy; Copyright (c) 2019 FMSH.
* All rights reserved.</center></h2>
*
* This software component is licensed by FM under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "common_types.h"
#include "common_cfg.h"
#include "mf_config.h"
#include "fm33lg0xx_fl.h"
#if defined(USE_FULL_ASSERT)
#include "fm33_assert.h"
#endif /* USE_FULL_ASSERT */
#include "system_config.h"
#include "nvic.h"
#include "clk.h"
#include "svd.h"
#include "gpio.h"
#include "tim.h"
#include "adc.h"
#include "i2c.h"
#include "Cpu.h"
#include "rmu.h"
//#include "pwm.h"
#include "wdog.h"
//#include "spm.h"
#include "Can.h"
//#include "nvm.h"
#include "eeprom.h"
#include "eeprom_seq.h"
#include "eeprom_state_machine.h"
//#include "common_timer.h"
#include "random_pseudo.h"
#include "service_27.h"
#include "logic_timer.h"
#include "CanTrcv.h"
#include "CanIf.h"
#include "CanIf_Cfg.h"
#include "Com.h"
#include "CanTp.h"
#include "Dcm.h"
#include "Demm.h"
#include "stack_check.h"
//#include "power_drive.h"
#include "system_voltage_manage.h"
#include "calibration.h"
#include "key_app.h"
#ifdef CAN_AUTOSAR_NM_EN
#include "CanNm.h"
//#include "NM.h"
#endif
#include "boot_app.h"
#include "fault_detect.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
/* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */
/* USER CODE END ET */
/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
/* USER CODE END EC */
/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */
/* USER CODE END EM */
/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
/* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */
#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */
/************************ (C) COPYRIGHT FMSH *****END OF FILE****/

Some files were not shown because too many files have changed in this diff Show More