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
#include "Maintenance.h"
/*** 保养里程 ***/
uint32_t DataServiceInterval = 0xFFFFu;
uint32_t NVM_User_Settings_Service; /***********临时接口*********/
/******************************************************************************
Data_Maintenance_Interval_Set
功 能: 写入保养
参 数: 无
返回值:无
******************************************************************************/
void Data_Maintenance_Interval_Set(uint32_t u32Data)
{
uint32_t u32Data1[1u] = {0};
u32Data1[0u] = u32Data;
Data_User_EEPROM_Write(EM_Maintenance_BLOCK, u32Data1, 1u);
}
/******************************************************************************
Data_Maintenance_Interval_Set_Flag
功 能: 写入保养标志
参 数: 无
返回值:无
******************************************************************************/
void Data_Maintenance_Interval_Set_Flag(uint32_t u32Data)
{
uint32_t u32Data1[1u] = {0};
u32Data1[0u] = u32Data;
Data_User_EEPROM_Write(EM_Maintenance_Firstflg, u32Data1, 1u);
}
/******************************************************************************
函数名:Data_Service_Interval_Processing
功 能: 剩余保养里程处理
参 数: 无
返回值:无
******************************************************************************/
uint32_t Get_Data_Maintenace_Interval_Processing(void)
{
uint32_t MileageDev = 0;
uint32_t Servicekm = 0;
uint32_t ODO_Data = 0;
ODO_Data = Data_ODO_Read() / 10;
if (ODO_Data >= NVM_User_Settings_Service)
{
Servicekm = 0u;
}
else
{
MileageDev = NVM_User_Settings_Service - ODO_Data;
Servicekm = MileageDev;
}
if (Servicekm >= 2000u)
{
Servicekm = 2000u;
}
DataServiceInterval = Servicekm;
return DataServiceInterval;
}
/******************************************************************************
函数名:Data_Service_Interval_Reset
功 能: 重置保养里程
参 数: 无
返回值:无
******************************************************************************/
void Data_Maintenance_Interval_Reset(void)
{
uint32_t ODO_Data = 0;
uint32_t u32Data[1u] = {0};
uint32_t Maintenance_Firstflg[1u] = {0};
ODO_Data = Data_ODO_Read() / 10u;
Data_User_EEPROM_Read(EM_Maintenance_Firstflg, Maintenance_Firstflg, 1u);
if (Maintenance_Firstflg[0u] == 0xFFFFFFFF)
{
NVM_User_Settings_Service = ODO_Data + 1000;
u32Data[0u] = NVM_User_Settings_Service;
Data_User_EEPROM_Write(EM_Maintenance_BLOCK, u32Data, 1u);
Maintenance_Firstflg[0u] = 1;
Data_User_EEPROM_Write(EM_Maintenance_Firstflg, Maintenance_Firstflg, 1u);
}
else if (Maintenance_Firstflg[0u] == 1)
{
NVM_User_Settings_Service = ODO_Data + 2000;
u32Data[0u] = NVM_User_Settings_Service;
Data_User_EEPROM_Write(EM_Maintenance_BLOCK, u32Data, 1u);
}
}