一、意义
为了指导开发工程师,正确的使用诊断模块,快速开发出满足车厂要求的诊断功能。
二、诊断模块介绍
此诊断模块根据ISO-14229-1文档,并结合部分车厂的文档进行开发,使用面向对象的思路进行设计,将模块需要处理的所有事情封装在模块内部,留出模块处理过程接口和配置接口供调用接口的工程师使用。通过调用配置接口,可以配置我们想要的功能。通过调用处理过程接口,诊断模块便能提供诊断服务,无需其他操作,便能实现诊断功能,开发起来方便快捷。
使用过程中的复杂之处在于配置,需要根据具体项目的诊断需求进行具体配置。以下详细介绍。
三、接口与配置说明
1、类型定义
1)、安全等级定义
typedef enum{
LEVEL_ZERO= 7,//安全等级0,当一个服务不需要安全解锁时,使用此安全等级。
LEVEL_ONE= 1,//安全等级1,当一个服务可以在安全等级1时,使用此安全等级。
LEVEL_TWO= 2,//安全等级2,当一个服务可以在安全等级2时,使用此安全等级。
LEVEL_THREE= 4,//安全等级3,当一个服务可以在安全等级3时,使用此安全等级。
LEVEL_FOUR = 8,//安全等级4,工厂模式会话使用此安全等级,用户零部件商下线配置。
LEVEL_UNSUPPORT= 0,//不支持,当一个服务在某个会话模式不支持时,使用此等级。
}SecurityLevel;
2)、复位类型,参考ISO-14229-1中11服务复位类型的定义。
typedef enum{
HARD_RESET= 1,//硬件复位
KEY_OFF_ON_RESET= 2,//关开钥匙复位
SOFT_RESET= 3,//软件复位
ENABLE_RAPID_POWER_SHUTDOWN= 4,//预留,一般不使用
DISABLE_RAPID_POWER_SHUTDOWN= 5,//预留,一般不使用
}EcuResetType;
3)、DTC类型定义。
typedef enum{
ISO15031_6DTCFORMAT=1,
ISO14229_1DTCFORMAT= 2,
SAEJ1939_73DTCFORMAT= 3,
}DTCFormatIdentifier;
4)、诊断故障状态定义
typedef enum{
PASSED,//测试通过
IN_TESTING,//测试未完成
FAILED,//测试失败
}DTCTestResult;
5)、DID类型定义
typedef enum{
EEPROM_DID,//静态存储器DID,存储在EEPROM中的DID使用此类型
REALTIME_DID,//实时DID,存储在RAM中,会实时改变的数据使用此类型
IO_DID,//输入输出控制DID,需要通过2F服务控制的DID使用此类型
}DIDType;
6)、DID的读写属性
typedef enum{
READONLY= 1,//只读
WRITEONLY= 2,//只写
READWRITE= 3,//可读写
}ReadWriteAttr;
7)、通信控制参数
typedef enum{
ERXTX,//enableRxAndTx
ERXDTX,//enableRxAndDisableTx
DRXETX,//disableRxAndEnableTx
DRXTX,//disableRxAndTx
//ERXDTXWEAI,//enableRxAndDisableTxWithEnhancedAddressInformation
//ERXTXWEAI,//enableRxAndTxWithEnhancedAddressInformation
}CommulicationType;
8)、通信控制的控制对象参数
typedef enum{
NCM= 1,//application message
NWMCM,//networkmanage message
NWMCM_NCM,//applicationand netwrok manage message
}communicationParam;
9)、子功能在会话的支持情况