#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[]={}; /****************************************************************************************/ /* 输入参数 ch : */ /* 0: 压缩机温度 */ /* 1: 室外温度 */ /* 2: 室内温度 */ /* 返回值: */ /* 对应的电压*10(即返回的电压值精度是0.1V的) */ /* */ unsigned char GetVoltage(unsigned char ch) { /* 这里可以做数组的方式返回,但尽量不要在这里计算,例如下 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; // } } /************************************************************************************/ /* 输入参数 motor : */ /* 1: 驾驶员侧温度调节电机 */ /* 2: 出风模式电机电机 */ /* 3: 循环风门调节电机 */ /* */ /* 返回值: */ /* 0: 电机正常 1:电机堵转 */ /* */ 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; // } } /************************************************************************************/ /* 输入参数 p : */ /* 0: TEMP 驾驶员侧温度风门位置 */ /* 1: REC 内外循环模式 */ /* 2: FAN 鼓风机档位 */ /* 3: MODE 模式风门位置 */ /* 4: DEFROST 除霜开关 */ /* 5: REARDEF 后除霜控制 */ /* 6: AC A/C制冷按键按键 */ /* 7: K30 ECU Supplier voltage */ /* */ /* 返回值: */ /* 0: 对应的data,具体见22,2F服务 */ /************************************************************************************/ 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); } /************************************************************************************/ /* 主函数查询 */ /*输入参数 p : */ /* 0: TEMP 驾驶员侧温度风门位置 */ /* 1: REC 内外循环模式 */ /* 2: FAN 鼓风机档位 */ /* 3: MODE 模式风门位置 */ /* 4: DEFROST 无效 */ /* 5: REARDEF 后除霜控制 */ /* 6: AC 无效 */ /* 7: K30 无效 */ /* 返回值: */ /* */ /************************************************************************************/ void WriteIoParameter(unsigned char p,unsigned char data) { io_parameter[p].write = 1; //此值为1,代表着需要对对应用的参数写入data。APP完成写入操作后面把这个清零。 io_parameter[p].data = data; } /************************************************************************************/ /* 输入参数 p : */ /* */ /* */ /* 返回值: */ /* 0: IGN电源正常 1:IGN > 16V 或 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