Commit 1990c6d8 authored by hu's avatar hu

调整燃油库,调整燃油相关用法

parent ef0694e5
#include <stddef.h>
#include "Data_Fuel_User.h"
#include "FuelConfig.h"
#include "Common_Interface.h"
#include "RTE_ADC.h"
#include "GPIO.h"
#include "Services_ODO_User.h"
#include "TYW_stdint.h"
static uint16_t Fuel_CurSeg;
static uint16_t Fuel_CyrStep;
#pragma ghs section bss=".myNonInitArea"
uint8_t FuelSaveData[1024] ;// = {0};
uint16_t FuelSaveLen ;// = 0;
uint8_t DrivingRangeSaveData[1024] ;// = {0};
uint16_t DrivingRangeSaveLen ;// = 0;
#pragma ghs section bss=default
/*-------------------------------------------------------------------------
* Function Name : Fuel_User_KL30_Init
* Description :
......@@ -20,9 +30,9 @@ void Fuel_User_KL30_Init(void)
{
Fuel_CurSeg = 0u;
Fuel_CyrStep = 0u;
FuelStruct FuelInitPara;
AFC_INIT AFCInit;
uint32_t ODO_Value = 0u;
ODO_Value = Data_ODO_Read();
......@@ -53,6 +63,8 @@ void Fuel_User_KL30_Init(void)
AFCInit.CurODO = ODO_Value * 100; /*总共里数100倍*/
AFCInit.MaxDRMileage = 69900; /*续航里程最大值*/
SetFuelSaveData(FuelSaveData, FuelSaveLen);/*新增 ----20220503----*/
InitFuelParamter(&FuelInitPara);
InitAFC(&AFCInit);
......@@ -64,6 +76,8 @@ void Fuel_User_KL30_Init(void)
SetFuelSensorRecoverGroupCnt(10);
SetFuelSensorOpenCircuitGroupCnt(120);
SetFuelSensorShortCircuitGroupCnt(120);
SetDrivingRangeSaveData(DrivingRangeSaveData, DrivingRangeSaveLen);
}
void Fuel_User_KL15_ON_Init(void)
{
......@@ -74,9 +88,41 @@ void Fuel_User_KL15_OFF_Init(void)
}
void Fuel_User_Wakeup_Init(void)
{
/*每次唤醒都要调用 ----20220503----*/
SetFuelSaveData(FuelSaveData, FuelSaveLen);
SetDrivingRangeSaveData(DrivingRangeSaveData, DrivingRangeSaveLen);
}
void *memcpy_new(void *to, void *from, size_t size)
{
char *tempFrom = NULL;
char *tempTo = NULL;
//assert( to && from );
/*先转型为字符指针,字符为一个字节*/
tempFrom = (char*)from;
tempTo = (char*)to;
while (size-- > 0)
{
*tempTo++ = *tempFrom++;
}
return to;
}
void Fuel_User_Sleep_Init(void)
{
uint8_t *p;
p = GetFuelSaveData(&FuelSaveLen);
if (FuelSaveLen < 1024)
{
memcpy_new(FuelSaveData, p, FuelSaveLen);
}
p = GetDrivingRangeSaveData(&DrivingRangeSaveLen);
if (DrivingRangeSaveLen < 1024)
{
memcpy_new(DrivingRangeSaveData, p, DrivingRangeSaveLen);
}
}
/*-------------------------------------------------------------------------
* Function Name : Fuel_User_KL15_ON_Processing_Service
......
......@@ -42,7 +42,9 @@
#define FUEL_R_MIN_VAL 40u /* 10 X ohm */
#define FUEL_R_MAX_VAL 3000u /* 10 X ohm */
// Fuel Config
//Fuel Config
typedef struct _FuelStruct
{
uint16_t FuelShortCircuitR;
......@@ -52,21 +54,23 @@ typedef struct _FuelStruct
} FuelStruct;
extern void InitFuelParamter(FuelStruct *para);
extern uint8_t *GetFuelLibVersion(void);
extern uint8_t *GetFuelSaveData(uint16_t *len);
extern void SetFuelSaveData(uint8_t *data, uint16_t len);
extern uint8_t* GetFuelLibVersion(void);
extern void FuelFSM(uint16_t FuelResistance); // unit:ohm,accuracy:0.1
extern void FuelFSM(uint16_t FuelResistance); //unit:ohm,accuracy:0.1
extern void SetMaxFuelBlockNum(uint8_t n); // call after InitFuelParamter(),default 12,max 20
extern void SetMaxFuelBlockNum(uint8_t n); //call after InitFuelParamter(),default 12,max 20
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 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 SetPowerSt(uint8_t n);
extern uint8_t GetFuelSeg(void); // Segment, range:0~8
extern uint8_t GetFuelStep(void); // Pointer or Mono TFT stepless,range:0,10~((MaxFuelBlockNum + 1) * 10) 0,10:E, ((MaxFuelBlockNum + 1) * 10):F
extern uint8_t GetFuelSeg(void); //Segment, range:0~8
extern uint8_t GetFuelStep(void); //Pointer or Mono TFT stepless,range:0,10~((MaxFuelBlockNum + 1) * 10) 0,10:E, ((MaxFuelBlockNum + 1) * 10):F
extern uint16_t GetFuelCapacityVal(void); // unit:L,accuracy:0.1
extern uint16_t GetFuelCapacityVal(void); //unit:L,accuracy:0.1
enum
{
......@@ -79,29 +83,32 @@ extern uint8_t GetFuelSensorState(void);
enum
{
FUEL_ST_IGN_ON_PROCESS = 1, // 1
FUEL_ST_POWER_ON_ADD_FUEL, // 2
FUEL_ST_VEHICLE_RUN, // 3
FUEL_ST_IGN_OFF_PROCESS, // 4
FUEL_ST_IGN_OFF, // 5
FUEL_ST_IGN_ON_PROCESS = 1, //1
FUEL_ST_POWER_ON_ADD_FUEL, //2
FUEL_ST_VEHICLE_RUN, //3
FUEL_ST_IGN_OFF_PROCESS, //4
FUEL_ST_IGN_OFF, //5
};
extern uint8_t GetFuelFSM_St(void);
extern uint16_t GetFuelResistance(void); // unit:ohm,accuracy:0.1
extern uint16_t GetFuelResistance(void); //unit:ohm,accuracy:0.1
extern void SetPowerDnStep(uint8_t step); //call every ign on (after InitFuelParamter())
extern uint8_t GetPowerDnStep(void); //every 10km or ign off or refuel(FUEL_ST_POWER_ON_ADD_FUEL->FUEL_ST_VEHICLE_RUN) record
extern void SetPowerDnStep(uint8_t step); // call every ign on (after InitFuelParamter())
extern uint8_t GetPowerDnStep(void); // every 10km or ign off or refuel(FUEL_ST_POWER_ON_ADD_FUEL->FUEL_ST_VEHICLE_RUN) record
// 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
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
......@@ -115,29 +122,36 @@ extern void SetAFCPara(AFC_PARA *data);
typedef struct _DAFC_PARA
{
uint32_t DAFC_FuelConsumeSum; // unit:ul (ul:m->ml:km->L:1000km)
uint32_t DAFC_ODO; // unit:m
uint32_t DAFC_FuelConsumeSum; //unit:ul (ul:m->ml:km->L:1000km)
uint32_t DAFC_ODO; //unit:m
} DAFC_PARA;
extern void DAFC_GetPowerDownPara(DAFC_PARA *data); // call every 10km or ign off or reset afc
extern void DAFC_SetPowerDownPara(DAFC_PARA *data); // call every KL30 OFF -> KL30 ON (after InitAFC())
extern void DAFC_GetPowerDownPara(DAFC_PARA *data); //call every 10km or ign off or reset afc
extern void DAFC_SetPowerDownPara(DAFC_PARA *data); //call every KL30 OFF -> KL30 ON (after InitAFC())
typedef struct _DR_PARA
{
uint32_t DR_FuelConsumeSum; // unit:ul (ul:m->ml:km->L:1000km)
uint32_t DR_Mileage; // unit:km,accuracy:0.01
uint32_t DR_FuelConsumeSum; //unit:ul (ul:m->ml:km->L:1000km)
uint32_t DR_Mileage; //unit:km,accuracy:0.01
} DR_PARA;
extern void DR_GetPowerDownPara(DR_PARA *data); // call every 10km or ign off
extern void DR_SetPowerDownPara(DR_PARA *data); // call every KL30 OFF -> KL30 ON (after InitAFC())
extern void DR_GetPowerDownPara(DR_PARA *data); //call every 10km or ign off
extern void DR_SetPowerDownPara(DR_PARA *data); //call every KL30 OFF -> KL30 ON (after InitAFC())
extern void AFCTimerCall(void); //must per 10ms interrupt
extern uint16_t GetDRMileage(void); //unit:km,accuracy:1
extern uint16_t GetCurAFC(void); //unit:L,accuracy:0.1
extern void AFCTimerCall(void); // must per 10ms interrupt
extern uint16_t GetDRMileage(void); // unit:km,accuracy:1
extern uint16_t GetCurAFC(void); // unit:L,accuracy:0.1
// display afc
//display afc
extern void DAFC_Reset(AFC_INIT *data);
extern uint16_t DAFC_GetAFC(void); // unit:L,accuracy:0.1
// display afc end
extern uint16_t DAFC_GetAFC(void); //unit:L,accuracy:0.1
//display afc end
extern void SetIgnOffRefuelThreshold(uint8_t data);
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment