/******************************************************************************
版权所有：	 
文件名称：	history_file.h
文件版本：	01.01
创建作者：	 
创建日期：	2016-08-09
功能说明：	历史数据文件操作接口头文件
其它说明：
修改记录：
*/
#ifndef _HISTORY_FILE_H
#define _HISTORY_FILE_H


#define	HF_HISTORY_DIR			"/app/HISTORY/"
#define	HF_SOE_101_DIR			"/app/HISTORY/SOE/"	
#define	HF_CO_101_DIR			"/app/HISTORY/CO/"
#define	HF_EXV_101_DIR			"/app/HISTORY/EXV/"
#define	HF_FIXPT_101_DIR		"/app/HISTORY/FIXPT/"
#define	HF_FRZ_101_DIR			"/app/HISTORY/FRZ/"
#define	HF_FLOWREV_101_DIR		"/app/HISTORY/FLOWREV/"
#define	HF_LOG_101_DIR			"/app/HISTORY/ULOG/"

#ifdef DKY_GONGHUOJIAN
#define	HF_WAVE_DIR				"/tmp/COMTRADE/"
#else
#define	HF_WAVE_DIR				"/app/COMTRADE/"
#endif

#ifdef FUN_ADD_CONFIG_DIR
#define HF_CONFIG_DIR				"/app/CONFIG/"
#define HF_CONFIG_ZF_DIR			"/app/CONFIG/ZF/"
#define HF_CONFIG_MAIN_DIR			"/app/CONFIG/MAIN/"

#define HF_PROGRAM_DIR				"/app/PROGRAM/"
#define HF_PROGRAM_MAIN_DIR			"/app/PROGRAM/MAIN/"
#define HF_PROGRAM_PROTOCOL_DIR		"/app/PROGRAM/PROTOCOL/"
#define HF_PROGRAM_LCD_DIR			"/app/PROGRAM/LCD/"
#endif

#define HF_HISTORY_DB_INFO  	"/app/HIS_DB_INFO"

#define LL_LINELOSS_DIR			"/app/LINELOSS/"
#define LL_FIXD_101_DIR			"/app/LINELOSS/FIXD/"
#define LL_RAND_101_DIR			"/app/LINELOSS/RAND/"
#define LL_FRZD_101_DIR			"/app/LINELOSS/FRZD/"
#define LL_SHARPD_101_DIR		"/app/LINELOSS/SHARPD/"
#define LL_MONTHD_101_DIR		"/app/LINELOSS/MONTHD/"
#define LL_EVENTD_101_DIR		"/app/LINELOSS/EVENTD/"


#define	HF_SOE_FILENAME			p_his_file[HS_FILE_SOE]	//"soe.msg"
#define	HF_SOE_FILENAME_N		20	

#define	HF_YK_FILENAME			p_his_file[HS_FILE_CO]	//"co.msg"	
#define	HF_YK_FILENAME_N			21	



#define HF_LOG_FILENAME			p_his_file[HS_FILE_LOG]//"ulog.msg"
#define	HF_LOG_FILENAME_N			175	

#define	HF_FIXPT_FILENAME			p_his_file[HS_FILE_FIXPT]//"fixptXXXXXXXX.msg"	
#define	HF_FIXPT_FILENAME_N			22	//
#define	HF_FIXPT_FILENAME_N_MAX		52	
#define	HF_FIXPT_FILENAME_LEN			17    //文件名长度

#define	HF_EXV_FILENAME			p_his_file[HS_FILE_EXV]///"exvXXXXXXXX.msg"
#define	HF_EXV_FILENAME_N			112	
#define	HF_EXV_FILENAME_N_MAX	142
#define	HF_EXV_FILENAME_LEN		15  //文件名长度

#define	HF_FRZ_FILENAME			p_his_file[HS_FILE_FRZ]//"frzXXXXXXXX.msg"
#define	HF_FRZ_FILENAME_N			143
#define	HF_FRZ_FILENAME_N_MAX	173
#define	HF_FRZ_FILENAME_LEN		15  //文件名长度


#define	HF_FLOWREV_FILENAME			p_his_file[HS_FILE_FLOWREV]//"flowrev.msg"
#define	HF_FLOWREV_FILENAME_N		174	
#define	HF_FLOWREV_FILENAME_LEN		11  //文件名长度


	


#define	HF_WAVE_FILENAME			"_XXXXXXXX_XXXXXX_XXX.dat"
#define	HF_WAVE_FILENAME_N		0	

#define	HF_SOE_101_TMP			"/tmp/soe_101"	
#define	HF_YK_101_TMP				"/tmp/yk_101"
#define	HF_MAX_MIN_101_TMP		"/tmp/max_min_101"
#define	HF_TIMED_101_TMP			"/tmp/timed_101"
#define	HF_FRZ_101_TMP			"/tmp/frz_101"
#define	HF_FLOWREV_101_TMP		"/tmp/flowrev_101"
#define 	HF_ULOG_101_TMP			"/tmp/ulog_101"

#define	HF_WAVE_TMP				"/tmp/wave_cfg_dat"

#define	HF_DEFAULT_PATH			"/app/data/"

//录波文件名长度
#define HF_WAVE_FILE_LENGTH		28


//目录文件数据结构
struct dir_file_struct{
	 int   file_name;	//文件名称
	 unsigned int    file_size;  //文件大小
	struct timespec  file_time; //文件时间
	 char   name[64];	//文件名称
};


//目录文件数据结构
struct dir_file_ext_struct{
	 char   file_name[64];	//文件名称
	 unsigned int    file_size;  //文件大小
	struct timespec  file_time; //文件时间
};


/******************************************************************************
函数名称：	hf_get_dir_file
函数版本：	01.01
创建作者：	 
创建日期：	2016-08-09
函数说明：	获取目录文件.						
参数说明：	
		    dir: 目录
		    p_file_cnt:  返回的文件个数
返回值：  	如果获取成功，则得到*p_file_cnt 个struct dir_file_struct 的指针。使用完毕应当释放内存。
			如果获取失败，则返回NULL.

修改记录：	
*/
struct dir_file_struct * hf_get_dir_file(char *dir,  int *p_file_cnt);

/******************************************************************************
函数名称：	hf_get_file_part
函数版本：	01.01
创建作者：	 
创建日期：	2016-08-09
函数说明：	获取特定目录下某个文件节的信息					
参数说明：	
		    dir: 目录
		    file_name: 文件名
		    part: 节名
		    part_len: 节长度
返回值：  	如果获取成功，则得到节内容和节长度
			如果获取失败，则返回NULL.

修改记录：	
*/
char  * hf_get_file_part(char *dir,  int  file_name,  int  part,  int *part_len);


/******************************************************************************
函数名称：	hf_get_file_inf
函数版本：	01.01
创建作者：	 
创建日期：	2016-08-09
函数说明：	获取目录文件.						
参数说明：	
		    dir: 目录
		    file_name:  文件名
		    partnum: 节个数
返回值：  	如果获取成功，则返回 文件长度、节个数

			如果获取失败，则返回NULL.

修改记录：	
*/
int  hf_get_file_inf(char *dir,  int  file_name,  int  *partnum);


/******************************************************************************
函数名称：	hf_get_dir_file_ext
函数版本：	01.01
创建作者：	 
创建日期：	2016-08-09
函数说明：	获取目录文件.						
参数说明：	
		    dir: 目录
		    p_file_cnt:  返回的文件个数
		    tmpfile: 指定一个临时文件
返回值：  	如果获取成功，则得到*p_file_cnt 个struct dir_file_ext_struct 的指针。使用完毕应当释放内存。
			如果获取失败，则返回NULL.

修改记录：	
*/
struct dir_file_ext_struct * hf_get_dir_file_ext(char *dir,  int *p_file_cnt, char *tmpfile);



char *  hf_get_file_inf_n(char *file_name,   uint32_t  *id,int *filelenth);


struct dir_file_struct * hf_get_dir_file_n(uint32_t id,char *dir,  char cf,struct rtc_time_t *ts,struct rtc_time_t *te,int *p_file_cnt);

int hf_init(void);
	
int hf_exit(void);

#ifdef ADD_MULTIPLE_FILE_WR_FUN
int ll_init(void);
#endif

#endif
