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
|
#ifndef _BATTERY_METER_H
#define _BATTERY_METER_H
#include <mach/mt_typedefs.h>
#include "cust_battery_meter.h"
/* ============================================================ */
/* define */
/* ============================================================ */
#define FG_CURRENT_AVERAGE_SIZE 30
/* ============================================================ */
/* ENUM */
/* ============================================================ */
/* ============================================================ */
/* structure */
/* ============================================================ */
#define FGD_NL_MSG_T_HDR_LEN 12
#define FGD_NL_MSG_MAX_LEN 9200
struct fgd_nl_msg_t{
unsigned int fgd_cmd;
unsigned int fgd_data_len;
unsigned int fgd_ret_data_len;
char fgd_data[FGD_NL_MSG_MAX_LEN];
};
enum {
FG_MAIN = 1,
FG_SUSPEND = 2,
FG_RESUME = 4,
FG_CHARGER = 8
};
enum {
HW_FG,
SW_FG,
AUXADC
};
/* ============================================================ */
/* typedef */
/* ============================================================ */
typedef struct {
INT32 BatteryTemp;
INT32 TemperatureR;
} BATT_TEMPERATURE;
typedef enum {
FG_DAEMON_CMD_GET_INIT_FLAG,
FG_DAEMON_CMD_GET_SOC,
FG_DAEMON_CMD_GET_DOD0,
FG_DAEMON_CMD_GET_DOD1,
FG_DAEMON_CMD_GET_HW_OCV,
FG_DAEMON_CMD_GET_HW_FG_INIT_CURRENT,
FG_DAEMON_CMD_GET_HW_FG_CURRENT,
FG_DAEMON_CMD_GET_HW_FG_INIT_CURRENT_SIGN,
FG_DAEMON_CMD_GET_HW_FG_CURRENT_SIGN,
FG_DAEMON_CMD_GET_HW_FG_CAR_ACT,
FG_DAEMON_CMD_GET_TEMPERTURE,
FG_DAEMON_CMD_DUMP_REGISTER,
FG_DAEMON_CMD_CHARGING_ENABLE,
FG_DAEMON_CMD_GET_BATTERY_INIT_VOLTAGE,
FG_DAEMON_CMD_GET_BATTERY_VOLTAGE,
FG_DAEMON_CMD_FGADC_RESET,
FG_DAEMON_CMD_GET_BATTERY_PLUG_STATUS,
FG_DAEMON_CMD_GET_RTC_SPARE_FG_VALUE,
FG_DAEMON_CMD_IS_CHARGER_EXIST,
FG_DAEMON_CMD_IS_BATTERY_FULL, //bat_is_battery_full,
FG_DAEMON_CMD_SET_BATTERY_FULL, //bat_set_battery_full,
FG_DAEMON_CMD_SET_RTC, //set RTC,
FG_DAEMON_CMD_SET_POWEROFF, //set Poweroff,
FG_DAEMON_CMD_IS_KPOC, //is KPOC,
FG_DAEMON_CMD_GET_BOOT_REASON, //g_boot_reason,
FG_DAEMON_CMD_GET_CHARGING_CURRENT,
FG_DAEMON_CMD_GET_CHARGER_VOLTAGE,
FG_DAEMON_CMD_GET_SHUTDOWN_COND,
FG_DAEMON_CMD_GET_CUSTOM_SETTING,
FG_DAEMON_CMD_GET_UI_SOC,
FG_DAEMON_CMD_GET_CV_VALUE,
FG_DAEMON_CMD_GET_DURATION_TIME,
FG_DAEMON_CMD_GET_TRACKING_TIME,
FG_DAEMON_CMD_GET_CURRENT_TH,
FG_DAEMON_CMD_GET_CHECK_TIME,
FG_DAEMON_CMD_GET_DIFFERENCE_VOLTAGE_UPDATE,
FG_DAEMON_CMD_GET_AGING1_LOAD_SOC,
FG_DAEMON_CMD_GET_AGING1_UPDATE_SOC,
FG_DAEMON_CMD_GET_SHUTDOWN_SYSTEM_VOLTAGE,
FG_DAEMON_CMD_GET_CHARGE_TRACKING_TIME,
FG_DAEMON_CMD_GET_DISCHARGE_TRACKING_TIME,
FG_DAEMON_CMD_GET_SHUTDOWN_GAUGE0,
FG_DAEMON_CMD_GET_SHUTDOWN_GAUGE1_XMINS,
FG_DAEMON_CMD_GET_SHUTDOWN_GAUGE1_MINS,
FG_DAEMON_CMD_SET_SUSPEND_TIME,
FG_DAEMON_CMD_SET_WAKEUP_SMOOTH_TIME,
FG_DAEMON_CMD_SET_IS_CHARGING,
FG_DAEMON_CMD_SET_RBAT,
FG_DAEMON_CMD_SET_SWOCV,
FG_DAEMON_CMD_SET_DOD0,
FG_DAEMON_CMD_SET_DOD1,
FG_DAEMON_CMD_SET_QMAX,
FG_DAEMON_CMD_SET_SOC,
FG_DAEMON_CMD_SET_UI_SOC,
FG_DAEMON_CMD_SET_UI_SOC2,
FG_DAEMON_CMD_SET_INIT_FLAG,
FG_DAEMON_CMD_SET_DAEMON_PID,
FG_DAEMON_CMD_NOTIFY_DAEMON,
FG_DAEMON_CMD_FROM_USER_NUMBER
} FG_DAEMON_CTRL_CMD_FROM_USER;
/* ============================================================ */
/* External Variables */
/* ============================================================ */
/* ============================================================ */
/* External function */
/* ============================================================ */
extern kal_int32 battery_meter_get_battery_voltage(kal_bool update);
extern kal_int32 battery_meter_get_charging_current_imm(void);
extern kal_int32 battery_meter_get_charging_current(void);
extern kal_int32 battery_meter_get_battery_current(void);
extern kal_bool battery_meter_get_battery_current_sign(void);
extern kal_int32 battery_meter_get_car(void);
extern kal_int32 battery_meter_get_battery_temperature(void);
extern kal_int32 battery_meter_get_charger_voltage(void);
extern kal_int32 battery_meter_get_battery_percentage(void);
extern kal_int32 battery_meter_initial(void);
extern kal_int32 battery_meter_reset(void);
extern kal_int32 battery_meter_sync(kal_int32 bat_i_sense_offset);
extern kal_int32 battery_meter_get_battery_zcv(void);
extern kal_int32 battery_meter_get_battery_nPercent_zcv(void); /* 15% zcv, 15% can be customized */
extern kal_int32 battery_meter_get_battery_nPercent_UI_SOC(void); /* tracking point */
extern kal_int32 battery_meter_get_tempR(kal_int32 dwVolt);
extern kal_int32 battery_meter_get_tempV(void);
extern kal_int32 battery_meter_get_VSense(void); /* isense voltage */
#ifdef MEIZU_M81
extern kal_int32 battery_meter_get_battery_current_now(void);
#endif
extern int wakeup_fg_algo(int flow_state);
#endif /* #ifndef _BATTERY_METER_H */
|