FuelConfig.h 6.52 KB
Newer Older
时昊's avatar
时昊 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
#ifndef	_FUELCONFIG_H                            	
#define _FUELCONFIG_H	
#include "g_includes.h"




#define FUEL_R_MIN_VAL	20	//10 X ohm
#define FUEL_R_MAX_VAL	3500    //10 X ohm

#define DISPLAY_BOUNDARY_FIRST 		3000
#define DISPLAY_BOUNDARY_SECOND		2690
#define DISPLAY_BOUNDARY_THIRD		1979
#define DISPLAY_BOUNDARY_FOURTH		1491
#define DISPLAY_BOUNDARY_FIFTH		1136
#define DISPLAY_BOUNDARY_SIXTH		865
#define DISPLAY_BOUNDARY_SEVENTH	652
#define DISPLAY_BOUNDARY_EIGHTH		480
#define DISPLAY_BOUNDARY_NINTH	        345
#define DISPLAY_BOUNDARY_TENTH		215
#define DISPLAY_BOUNDARY_ELEVENTH	150

#define BOUNDARY_FUEL_FIRST 		3000
#define BOUNDARY_FUEL_SECOND		4800
#define BOUNDARY_FUEL_THIRD		10200
#define BOUNDARY_FUEL_FOURTH		15600
#define BOUNDARY_FUEL_FIFTH		21000
#define BOUNDARY_FUEL_SIXTH	        26400
#define BOUNDARY_FUEL_SEVENTH		31800
#define BOUNDARY_FUEL_EIGHTH		37200
#define BOUNDARY_FUEL_NINTH	    	42600
#define BOUNDARY_FUEL_TENTH		48000
#define BOUNDARY_FUEL_ELEVENTH		50400


//Fuel Config
typedef struct _FuelStruct {
    uint16_t FuelShortCircuitR;
    uint16_t FuelOpenCircuitR;
    uint16_t LowFuelWarningResistance;
    uint16_t LowFuelWarningReleaseResistance;
    uint32_t LowFuelWarningFuelCapacity; 
    uint16_t RefuleDteFuelChangeThreshold;      //ml
    uint32_t FullFuelStopCapacity;      //S/F
    uint32_t EmptyFuelStopCapacity;     //S/E
    uint16_t DisplayZoneBoundary[11];
    uint32_t FuelCapacityBoundary[11];
}FuelStruct;

extern void InitFuelParamter(FuelStruct *para);
extern uint8_t *GetFuelSaveData(uint16_t *len);
extern void SetFuelSaveData(uint8_t *data, uint16_t len);

extern void SaveSampleVal(uint16_t FuelResistance); //unit:ohm,accuracy:0.1
extern void FuelFSM(uint16_t FuelResistance);

extern void SetFuelSensorRecoverGroupCnt(uint16_t n);       //1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600)
extern void SetFuelSensorOpenCircuitGroupCnt(uint16_t n);   //1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600) 
extern void SetFuelSensorShortCircuitGroupCnt(uint16_t n);  //1:500ms,2:1000ms,3:1500ms.......,range:5s(10)-30min(3600)

extern void SetRefuleDteFuelChangeThreshold(uint16_t ml);
extern uint32_t ResistanceToCapacity(uint16_t Resistance);
extern uint32_t StepToCapacity(uint8_t Step);
extern void SetPowerSt(uint8_t n);
extern void SetSpeed(uint16_t n);
extern void SetRefuelThreshold(uint32_t data);	/* 2000 ~ 50000:2L ~ 50L, default:6L */
extern uint8_t GetFuelSeg(void); //����
extern uint8_t GetFuelStep(void); //ָ��
extern uint8_t GetFuelStepPointer(void);
extern uint32_t GetFuelCapacityVal(void);
extern uint8_t GetFuelLFW(void);
extern uint16_t GetRefuelVrefResistance(void);

extern uint8_t GetFuelDestStep(void);
extern uint8_t GetOutputFuelStep(void);

extern void SetFuelInit(void);
extern void ExecFuel(void);


enum {
	FuelSensorNormal,
	FuelSensorShortCircuit,
	FuelSensorOpenCircuit,
	FuelSensorPreFault,
};
extern uint8_t GetFuelSensorState(void); 

enum {
    FUEL_ST_BATTERY_RESET,
    FUEL_ST_REFUEL,     
    FUEL_ST_VEHICLE_RUN,	
}; 
extern uint8_t GetFuelFSM_St(void);
extern uint16_t GetFuelResistance(void);

// AFC & DrivingRange
typedef struct _AFC_INIT {
	uint8_t CalcAFCMaxNum;	//max 100km,default 50
	uint16_t AFCMin;	//unit:L,accuracy:0.1
	uint16_t AFCMax;	//unit:L,accuracy:0.1
	uint16_t AFCPreinstall;	//unit:L,accuracy:0.1
	uint32_t CurODO;		// unit:m,accuracy:1
	uint32_t MaxDRMileage;	//unit:km,accuracy:0.01
}AFC_INIT;
extern void InitAFC(AFC_INIT *data);
extern uint8_t *GetDrivingRangeSaveData(uint16_t *len);
extern void SetDrivingRangeSaveData(uint8_t *data, uint16_t len);
extern void ResetAFC(AFC_INIT *data);

typedef struct _AFC_PARA {
	uint32_t CurODO;		// unit:m,accuracy:1
	uint16_t FuleConsume;	// unit:ul,accuracy:1
	uint16_t RPM;			// unit:RPM,accuracy:1
	uint16_t Speed;		// unit:km/h,accuracy:0.1
}AFC_PARA;
extern void SetAFCPara(AFC_PARA *data);

extern void AFCTimerCall(void); //must per 10ms interrupt
extern uint16_t GetDRMileage(void);  //unit:km,accuracy:1
extern uint16_t GetDR_Ori(void);
extern uint16_t GetCurAFC(void); //unit:L,accuracy:0.1 
extern uint16_t GetAFCSumH(void);
extern uint16_t GetAFCSumL(void); 

extern uint16_t GetRefuelResistance(void);


extern void DisplayLongAFC_InitFuelconsume(uint16_t DataH, uint16_t DataL);
extern void DisplayLongAFC_InitODO(uint16_t DataH, uint16_t DataL);
extern void CalcDisplayLongAFC(void);
extern uint16_t GetDisplayLongAFC(void);

extern void DisplayLongAFC_InitFuelconsume_1(uint16_t DataH, uint16_t DataL);
extern void DisplayLongAFC_InitODO_1(uint16_t DataH, uint16_t DataL);
extern void CalcDisplayLongAFC_1(void);
extern uint16_t GetDisplayLongAFC_1(void);

#if 1
void FuelSleep(void);
void FuelWake(void);
void GET_Data_For_YB(void);
void FuelAFCTimeCall(void);
void Fuel_RangeDis(void);
uint8_t GetFuelCapacity_Val(void);
void Data_Fuel_Display(void);
uint8_t Get_Fuel_curPosition(void);
void Data_Fuel_Display_Init(void);
uint8_t Get_Fuel_Valid(void);
void ExecFuel_Init(void);
uint8_t GET_Fuel_Sensor_Resistance_High(void);
uint8_t GET_Fuel_Sensor_Resistance_Low(void);
//void Data_InsFuel_KM_ADD(INT16U Inc);
typedef struct
{
    uint32_t FuelMaxResistance;
    uint32_t FuelMinResistance;
    uint32_t MaxFuelMileage;
    uint32_t MinFuelMileage;
    uint32_t Capacity_Val;
}_BackFuelData;
  
typedef struct
{
    uint8_t Icon;

    uint16_t FastModeCnt;
    Data_Renew_Mode_Enum Mode;
    uint8_t DampT;
    uint8_t DampTCnt;
    uint8_t destPosition;
    uint8_t curPosition;

}_MinFuelDis;
extern _MinFuelDis MinFuelMeter;

typedef struct           
{
    uint8_t Sensor_State;
    uint16_t Res_Pre_Get;
    uint16_t Step_Get_Value;
    uint16_t Step_Get_Valid;
    uint16_t Capacity_PerCent_Export;
    uint16_t FuelExecTime;
    uint16_t AFC;
    uint16_t Capacity_Val;
    uint32_t ChangeDisplayZoneBoundary[11];
    uint32_t ChangeCapacityBoundary[11];
    uint16_t ChangeOpenRes;
    uint16_t ChangeShortRse;
    uint16_t AFCPreinstall;
    uint8_t  Fuel_Sensor_Resistance_High;
    uint8_t  Fuel_Sensor_Resistance_Low;
    
}_MinFuel_Data_Struct;
extern _MinFuel_Data_Struct MinFuelData;

typedef struct
{
	uint8_t DestPosition;
    uint8_t DisStep;
	uint16_t Range;
    uint16_t RangeDis;
    uint16_t LastRange;
    uint8_t RangeValid;
    uint8_t Flg_18FEF200;
}_FuelDis;

extern _FuelDis FuelMeter;



typedef struct
{
    uint16_t FreshTime;
    uint8_t Valid;
    uint8_t First_Distance;
    uint32_t Value;
    uint32_t Display_Value;
    uint32_t Distance;
    uint32_t Time;
    uint32_t  RateSum;
    uint8_t Flg_18FEF200;
    uint32_t Value_Last;
}_Data_InsFuel_Struct;
extern _Data_InsFuel_Struct Data_InsFuel;
#endif
#endif