/******************************************************************************
版权所有：	
文件名称：	battery.h
文件版本：	01.01
创建作者：	xxxxxx
创建日期：	2015-05-12
功能说明：	电池管理头文件
其它说明：
修改记录：
*/

#ifndef _BATTERY_H
#define _BATTERY_H
/*------------------------------- 头文件 --------------------------------------
*/


/*------------------------------- 宏定义 --------------------------------------
*/
// 活化来源
enum
{
	FROM_DEVICE=1,	// 来自装置
	FROM_MODULE,	// 来自电源模块
};

/*------------------------------ 类型结构 -------------------------------------
*/
//电池管理结构体
struct BATT_MANA
{
	int stu;			// 状态机
	int hhtype;			// 活化类型
	int hhstart_from;	// 活化启动来源
	int hhquit_from;	// 活化退出来源
	int poweron_flag;	// 上电标志
	
	struct timespec powerontime;// DTU上电时刻
	struct timespec hqtime;		// 电池活化启动时刻
	struct timespec hhexitts;	// 活化退出时刻
	struct timespec poweron;
	
	float totalhh_ah;	// 活化总消耗容量
	float thishh_ah;	// 本次活化消耗容量
	float surplus_ah;	// 剩余容量
	float poweronhour;

	int poweroff;		// 电源失电
	int powerabn;		// 电源故障
	int switchstatus;	// 开关控制
	int hhstatus;		// 活化状态
	int voltless;		// 电池欠压
	int hhexit;			// 活化退出标志
	int hhon;			// 活化进行标志
	int chargeok;		// 电池充饱标志
	u32 chargeoktime;	// 电池充饱持续时间
	u32 chargeokdly;	// 用于判断电池充饱持续时间
	int voltlessdly;	// 用于欠压持续时间计数

	float hhhour;		// 本次活化持续时间
	float hhamp;		// 
	float batvolold;
	float hattvol;		// 电池电压

	u32 len;		// 一条记录的长度
	u32 index;		// 索引0xFF标示行
	u32 rcd_num;	// 记录行总数

	int bat_ok;		// 电池是否正常

};

/*------------------------------ 变量声明 -------------------------------------
*/
extern struct BATT_MANA g_batt_mana;

/*------------------------------ 函数声明 -------------------------------------
*/
int bat_init(void);
int bat_exit(void);
int bat_proc(void);
void bat_set_sw_status(bool value);
int bat_get_sw_status(void);
int bat_begin_time(void);
int bat_active(int value);
int bat_act_off(int value);

#endif 

/*------------------------------ 文件结束 -------------------------------------
*/

