HWBS/ECU_APP/diagnose/extern.c
2023-08-21 16:48:00 +08:00

594 lines
16 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "extern.h"
#include "hwCtrl.h"
#include "PINdef.h"
#pragma section const DID_TBL
__far const unsigned char HD_VERSION[]={
'H' , //AC_HD_VERSION_00
'W' , //AC_HD_VERSION_01
'0' , //AC_HD_VERSION_02
'1' , //AC_HD_VERSION_03
'0' , //AC_HD_VERSION_04
'0' , //AC_HD_VERSION_05
' ' , //AC_HD_VERSION_06
' ' , //AC_HD_VERSION_07
' ' , //AC_HD_VERSION_08
' ' , //AC_HD_VERSION_09
' ' , //AC_HD_VERSION_10
' ' , //AC_HD_VERSION_11
' ' , //AC_HD_VERSION_12
' ' , //AC_HD_VERSION_13
' ' , //AC_HD_VERSION_14
' ' , //AC_HD_VERSION_15
};
__far const unsigned char SW_VERSION[]={
'0' , //AC_SW_VERSION_00
'1' , //AC_SW_VERSION_01
'.' , //AC_SW_VERSION_02
'0' , //AC_SW_VERSION_03
'1' , //AC_SW_VERSION_04
'.' , //AC_SW_VERSION_05
'0' , //AC_SW_VERSION_06
'1' , //AC_SW_VERSION_07
' ' , //AC_SW_VERSION_08
' ' , //AC_SW_VERSION_09
' ' , //AC_SW_VERSION_10
' ' , //AC_SW_VERSION_11
' ' , //AC_SW_VERSION_12
};
__far const unsigned char SUP_ECU_SW_VERSION[]={
'0' , //
'2' , //
'0' , //
'1' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
' ' , //
};
#pragma section
IO_parameter_t io_parameter[8];
const unsigned char DID_0xF110_VehicleNetworkConfiguration[8]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
const unsigned char DID_0xF190_vehicleIdentificationNumber[17]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
const unsigned char DID_0xF197_SystemNameOrEngineType[8]={0x44,0x41,0x4D,0x49,0x4e,0x47,0x41,0x43};
const unsigned char DID_0xF198_RepairShopCodeOrTesterSerialNumber[16]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
const unsigned char DID_0xF199_ProgrammingOrConfigurationDate[4]={0x20,0x00,0x01,0x01};
const unsigned char DID_0xF19D_ECUInstallationDateDataIdentifier[4]={0x20,0x00,0x01,0x01};
const unsigned char DID_0xF112_VehicleName[8]={0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
can_frame_t TxCanMessageT;
//const unsigned char DID_0xF15A[]={};
/****************************************************************************************/
/* <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ch : */
/* 0: ѹ<><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* 1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* 2: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
/* <09><>Ӧ<EFBFBD>ĵ<EFBFBD>ѹ*10<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĵ<D8B5>ѹֵ<D1B9><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0.1V<EFBFBD>ģ<EFBFBD> */
/* */
unsigned char GetVoltage(unsigned char ch)
{
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> return Voltage[ch]; */
// switch(ch)
// {
// case EVA_SENSOR:
// return uiDuctAdVal;
// break;
// case OUTSIDE_SENSOR:
// return uiAmbAdVal;
// break;
// case INSIDE_SENSOR:
// return uiIncarAdVal;
// break;
// default:
// return 0;
// break;
// }
}
/************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> motor : */
/* 1: <20><>ʻԱ<CABB><D4B1><EFBFBD>¶ȵ<C2B6><C8B5>ڵ<EFBFBD><DAB5><EFBFBD> */
/* 2: <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* 3: ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><C5B5>ڵ<EFBFBD><DAB5><EFBFBD> */
/* */
/* <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
/* 0: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1<><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת */
/* */
unsigned char GetMotorLockStatus(unsigned char motor)
{
// switch(motor)
// {
// case 1:
// return temprunErr;
// break;
// case 2:
// return moderunErr;
// break;
// case 3:
// return 0;
// break;
// default:
// return 0;
// break;
// }
}
/************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p : */
/* 0: TEMP <09><>ʻԱ<CABB><D4B1><EFBFBD>¶ȷ<C2B6><C8B7><EFBFBD>λ<EFBFBD><CEBB> */
/* 1: REC <09><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ */
/* 2: FAN <09>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>λ */
/* 3: MODE ģʽ<C4A3><CABD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> */
/* 4: DEFROST <09><>˪<EFBFBD><CBAA><EFBFBD><EFBFBD> */
/* 5: REARDEF <09><><EFBFBD><EFBFBD>˪<EFBFBD><CBAA><EFBFBD><EFBFBD> */
/* 6: AC A/C<><43><EFBFBD><EFBFBD><E4B0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* 7: K30 ECU Supplier voltage */
/* */
/* <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
/* 0: <20><>Ӧ<EFBFBD><D3A6>data,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>22<32><32>2F<32><46><EFBFBD><EFBFBD> */
/************************************************************************************/
unsigned char GetIoParameter(unsigned char p)
{
switch(p)
{
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
break;
case 7:
break;
default:
return 0;
break;
}
return (io_parameter[p].data);
}
/************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ */
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p : */
/* 0: TEMP <09><>ʻԱ<CABB><D4B1><EFBFBD>¶ȷ<C2B6><C8B7><EFBFBD>λ<EFBFBD><CEBB> */
/* 1: REC <09><><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>ģʽ */
/* 2: FAN <09>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD>λ */
/* 3: MODE ģʽ<C4A3><CABD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> */
/* 4: DEFROST <09><>Ч */
/* 5: REARDEF <09><><EFBFBD><EFBFBD>˪<EFBFBD><CBAA><EFBFBD><EFBFBD> */
/* 6: AC <09><>Ч */
/* 7: K30 <09><>Ч */
/* <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
/* */
/************************************************************************************/
void WriteIoParameter(unsigned char p,unsigned char data)
{
io_parameter[p].write = 1; //<2F><>ֵΪ1<CEAA><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Զ<EFBFBD>Ӧ<EFBFBD>õIJ<C3B5><C4B2><EFBFBD>д<EFBFBD><D0B4>data<74><61>APP<50><50><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
io_parameter[p].data = data;
}
/************************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> p : */
/* */
/* */
/* <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> */
/* 0: IGN<47><4E>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD> 1<><31>IGN > 16V <20><> IGN < 9V */
/* */
/************************************************************************************/
unsigned char GetIgnVoltStatus(void)
{
// if(*Power_Protect.mark == 1)
// {
// return 0;
// }
// else
// {
// return 1;
// }
return 0;
}
unsigned char TransmitCAN_Message(unsigned int ID,unsigned char Dlc,unsigned char *Data)
{
Can_RtnType re_flag;
TxCanMessageT.IDL=ID;
TxCanMessageT.DLC=Dlc;
TxCanMessageT.IDE = 0; /* IDE 0:Standard 1:Extend */
TxCanMessageT.RTR = 0; /* RTR 0:Data 1:Remote */
TxCanMessageT.THDSE = 0; /* Transmit History Data Store Enable */
TxCanMessageT.IDH = 0; /* ID Data (high) */
TxCanMessageT.DLC = 8; /* DLC Data */
TxCanMessageT.LBL = 0; /* Label Data */
TxCanMessageT.TS = 0; /* Timestamp Data */
Copy_Array_to_Array(TxCanMessageT.DB,Data,Dlc);
re_flag=R_CAN_TrmByTRFIFO0_CH0(&TxCanMessageT);
if(re_flag == CAN_RTN_OK)
{
return 0;
}
else
{
return 1;
}
}
unsigned char DF_Write(unsigned char* write_buf,unsigned char data_num,unsigned char len)
{
unsigned char DID_Buf[0x50],i;
i=0;
switch(data_num)
{
case 1:
ReadFlashData(DID_Buf,0x000F1000+0x400,0x50);
for(i=0;i<len;i++)
{
DID_Buf[i+0]=*write_buf;
write_buf++;
}
if(WriteDataflash(DID_Buf,0x000F1000+0x400,0x50) == 0x11)
{
return 0;
}
break;
case 2:
ReadFlashData(DID_Buf,0x000F1000+0x400,0x50);
for(i=0;i<len;i++)
{
DID_Buf[i+0x40]=*write_buf;
write_buf++;
}
if(WriteDataflash(DID_Buf,0x000F1000+0x400,0x50) == 0x11)
{
return 0;
}
break;
case 3:
ReadFlashData(DID_Buf,0x000F1000+0x400,0x50);
for(i=0;i<len;i++)
{
DID_Buf[i+0x30]=*write_buf;
write_buf++;
}
if(WriteDataflash(DID_Buf,0x000F1000+0x400,0x50) == 0x11)
{
return 0;
}
break;
case 4:
ReadFlashData(DID_Buf,0x000F1000+0x400,0x50);
for(i=0;i<len;i++)
{
DID_Buf[i+0x38]=*write_buf;
write_buf++;
}
if(WriteDataflash(DID_Buf,0x000F1000+0x400,0x50) == 0x11)
{
return 0;
}
break;
default:
break;
}
return 0;
}
unsigned char DF_Read(unsigned char* read_buf,unsigned char data_num,unsigned char len)
{
switch(data_num)
{
case 1:
ReadFlashData(read_buf,0x000F1000+0x400,len);
return 0;
break;
case 2:
ReadFlashData(read_buf,0x000F1000+0x420,len);
return 0;
break;
case 3:
ReadFlashData(read_buf,0x000F1000+0x430,len);
return 0;
break;
case 4:
ReadFlashData(read_buf,0x000F1000+0x438,len);
return 0;
break;
default:
break;
}
return 0;
}
uint32 GetTimerCnt(void)
{
return Can_1ms_count_alive;
}
/************************************************************************************
// <20><>ȡdata Flash<73><68><EFBFBD>ݴ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> code : //
// 0 : <20><>ȡAPP<50>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 1 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF110<31><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 2 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF190<39><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 3 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF197<39><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 4 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF198<39><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 5 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF199<39><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 6 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF19D<39><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 7 : <20><>ȡ2E<32><45><EFBFBD><EFBFBD>0xF112<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// 8 : <20><>ȡ19<31><39><EFBFBD><EFBFBD>0xF00616<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 9 : <20><>ȡ19<31><39><EFBFBD><EFBFBD>0xF00617<31><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 10: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918112<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 11: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918114<31><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 12: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918171<37><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 13: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918312<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 14: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918314<31><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 15: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918371<37><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 16: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918412<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 17: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918414<31><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 18: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918471<37><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 19: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918611<31><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 20: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0x918614<31><34><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// 21: <20><>ȡ19<31><39><EFBFBD><EFBFBD>0xC07300<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
// 2E <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// //
************************************************************************************/
const unsigned char DF_INDEX_TAB[]={
0U , //APP REProgrammer Request
1U , //BLOCK_0xF110,
2U , //BLOCK_0xF190,
3U , //BLOCK_0xF197,
4U , //BLOCK_0xF198,
5U , //BLOCK_0xF199,
6U , //BLOCK_0xF19D,
7U , //BLOCK_0xF112,
8U , //19<31><39><EFBFBD><EFBFBD>0xF00616
9U , //19<31><39><EFBFBD><EFBFBD>0xF00617
10U , //19<31><39><EFBFBD><EFBFBD>0x918112
11U , //19<31><39><EFBFBD><EFBFBD>0x918114
12U , //19<31><39><EFBFBD><EFBFBD>0x918171
13U , //19<31><39><EFBFBD><EFBFBD>0x918312
14U , //19<31><39><EFBFBD><EFBFBD>0x918314
15U , //19<31><39><EFBFBD><EFBFBD>0x918371
16U , //19<31><39><EFBFBD><EFBFBD>0x918412
17U , //19<31><39><EFBFBD><EFBFBD>0x918414
18U , //19<31><39><EFBFBD><EFBFBD>0x918471
19U , //19<31><39><EFBFBD><EFBFBD>0x918611
20U , //19<31><39><EFBFBD><EFBFBD>0x918614
21U //19<31><39><EFBFBD><EFBFBD>0xC07300
};
unsigned char GetIndexNumber(unsigned char code)
{
return(DF_INDEX_TAB[code]);
}
/************************************************************************************
// <20><>ȡACӲ<43><D3B2><EFBFBD>汾 //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> hdv : //
// ָ<><D6B8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
// //
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
// //
// //
************************************************************************************/
void GetHardwareVersion(unsigned char* hdv)
{
unsigned char cnt;
for(cnt=0;cnt<16;cnt++){
hdv[cnt] = HD_VERSION[cnt];
}
}
/************************************************************************************
// <20><>ȡAC<41><43><EFBFBD><EFBFBD><EFBFBD>汾 //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> swv : //
// ָ<><D6B8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
// //
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
// //
// //
************************************************************************************/
void GetSoftwareVersion(unsigned char* swv)
{
unsigned char cnt;
for(cnt=0;cnt<13;cnt++){
swv[cnt] = SW_VERSION[cnt];
}
}
/************************************************************************************
// <20><>ȡAC<41><43>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>汾 //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> swv : //
// ָ<><D6B8><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ //
// //
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
// //
// //
************************************************************************************/
void GetSupplierSoftwareVersion(unsigned char* swv)
{
unsigned char cnt;
for(cnt=0;cnt<16;cnt++){
swv[cnt] = SUP_ECU_SW_VERSION[cnt];
}
}
/************************************************************************************
// <20><>ȡAC<41><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *date : //
// data[0] = YEAR //
// data[1] = MONTH //
// data[0] = DAY //
// //
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> //
// //
// //
************************************************************************************/
const unsigned char MANUFACTURING_DATE[]={
0x18, //Year
0x06, //Month
0x15, //Day
};
void GetManufacturingDate(unsigned char* date)
{
date[0] = MANUFACTURING_DATE[0];
date[1] = MANUFACTURING_DATE[1];
date[2] = MANUFACTURING_DATE[2];
}
/******************************/
//<2F><>ȡcan<61><6E><EFBFBD>߳<EFBFBD><DFB3><EFBFBD>״̬
//<2F><><EFBFBD><EFBFBD>ֵ
/******************************/
unsigned char GetCanBusOffErr(void)
{
// if(BusOff_flag==0)
// return 0;
// else
// return 1;
}
/******************************/
//<2F><>ȡBCM<43>ڵ㶪ʧ״̬
//<2F><><EFBFBD><EFBFBD>ֵ
/******************************/
unsigned char GetBcmCommFault(void)
{
// if(uiBcmCommFaultCnt < 500)
// {
// return 0;
// }
// else
// {
// BCM_Recover=0;
// BCM=0;
// return 1;
// }
}
/******************************/
//<2F><>ȡACP<43>ڵ㶪ʧ״̬
//<2F><><EFBFBD><EFBFBD>ֵ
/******************************/
unsigned char GetAcpCommFault(void)
{
// if(uiAcpCommFaultCnt < 500)
// {
// return 0;
// }
// else
// {
// ACP_Recover=0;
// ACP=0;
// return 1;
// }
}
/******************************/
//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʷ<EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>
/******************************/
unsigned char GetProgrammingCounter(void)
{
return 0;
}
/******************************/
//<2F><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>
/******************************/
unsigned char GetProgrammingAttempCounter(void)
{
return 0;
}
/******************************/
//<2F><><EFBFBD><EFBFBD>DTC
//Ŀǰ<C4BF><C7B0>BusOff
//
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>0
/******************************/
unsigned char Clear_DTC_Data(void)
{
//Clear_DTC_Data_Command=1;
return 0;
}
//S51EV
void getInputState(unsigned char* data)
{
}
void getOutputState(unsigned char* data)
{
}
extern uint16_t SupplyVoltage;
void getSupplyVoltage(unsigned char* data)
{
data[0] = SupplyVoltage;
}