#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