diff --git a/source/Application/APP/Data_Fuel/Data_Fuel_User.c b/source/Application/APP/Data_Fuel/Data_Fuel_User.c index 526b72a9b9a2b5ab0a40666645a033757c386635..dd596947a036bb767a0a60cf772a01e8a1b34d79 100644 --- a/source/Application/APP/Data_Fuel/Data_Fuel_User.c +++ b/source/Application/APP/Data_Fuel/Data_Fuel_User.c @@ -1,13 +1,23 @@ +#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 diff --git a/source/Application/APP/Data_Fuel/FuelConfig.h b/source/Application/APP/Data_Fuel/FuelConfig.h index 2eb5a7b22cbb9c9d52b68f3601289999d620192d..ec65f05437285fa80420c425d6cb48b304bf606d 100644 --- a/source/Application/APP/Data_Fuel/FuelConfig.h +++ b/source/Application/APP/Data_Fuel/FuelConfig.h @@ -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 + + + + + + diff --git a/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.4.a b/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.4.a deleted file mode 100644 index 481c2290efc227c6614e89187a06adedde9d5bcb..0000000000000000000000000000000000000000 Binary files a/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.4.a and /dev/null differ diff --git a/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.5.a b/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.5.a new file mode 100644 index 0000000000000000000000000000000000000000..d57ffa6242fe3ead68e913a74243dd7add6f6e16 Binary files /dev/null and b/source/Application/APP/Data_Fuel/TruckFuel_RH850_V1.5.a differ