Files

69 lines
2.0 KiB
C

#ifndef __LOG_TASK_H
#define __LOG_TASK_H
#define LOG_TYPE_INVALID 0
#define LOG_TYPE_POWER_ON 1
#define LOG_TYPE_POWER_OFF 2
#define LOG_TYPE_SYS_PARA_CHANGE 3
#define LOG_TYPE_TIME_CHANGE 4
#define LOG_TYPE_GPS_UNLOCK 5
#define LOG_TYPE_GPS_LOCK 6
#define LOG_TYPE_TS_ERR 7
#define LOG_TYPE_TS_OK 8
#define LOG_TYPE_OVER_TEMPERATURE 9
#define LOG_TYPE_NORMAL_TEMPERATURE 10
#define LOG_TYPE_OVER_FLOW 11
#define LOG_TYPE_UNDER_FLOW 12
//..其他告警类型
#define LOG_TYPE_END 13 //结束标志
#define LOG_ERR_NO_ERR 0
#define LOG_ERR_PARA_INVALID 1
#define LOG_ERR_ALLOC_MSG_FAILED 2
#define LOG_ERR_ALLOC_MEM_FAILED 3
//日志最大多少条合适?
#define LOG_MAX_RECORD_NUM 100
//一整条告警,64字节, 200*64 共12.5K字节
#define LOG_PER_RECORD_SIZE 32
typedef struct
{
uint8 valid;
uint8 type;
uint8 year;
uint8 month;
uint8 date;
uint8 hour;
uint8 min;
uint8 sec; //发生时间 8字节
uint8 content[LOG_PER_RECORD_SIZE-8]; //日志的具体内容,根据需要使用
}S_LOG_STRUCT;
typedef struct
{
uint16 ram_flag; //内存中数据是否有效标志
uint8 lastest_index; //当前的下一条log指向的位置 0~(LOG_MAX_RECORD_NUM-1) 是即将保存的位置,
uint8 total_num; //当前有效log数目
S_LOG_STRUCT log[LOG_MAX_RECORD_NUM];
}S_OS_LOG; //当前使用模式下,不能大于3.9K
extern void log_task(void * pvParameters);
extern uint32 log_read_record_by_index(uint32 index,void *pdata);
extern uint32 log_system_event_generate(S_SYS_TIME* ptime,uint32 type,uint8 *pcontent,uint32 ctlen);
uint32 log_get_total_record_num(void);
void log_record_reset(void);
void log_record_printf(void);
extern int sntp_enable(uint8 en, uint8 *pAddr);
#endif