#include "file.h" #include "filedata.h" static uint32_t get_meter_data(uint32_t pluseCounter,uint32_t reversepluseCounter) { return 0; } static void get_one_reportdata(uint8_t * val,struct waterdata_struct * waterdata) { } static void curtime_printf(struct waterdata_struct * waterdata,uint8_t day,uint8_t i) { #ifdef DEBUG_FILEI2C HT_PRINT("reportdata %04d/%02d/%02d %02d:%02d:00 cnt = %02d day=%02d ", waterdata->year,waterdata->mon,waterdata->day,waterdata->hour,waterdata->min, i,day); waterdata_printf(waterdata); #endif } static bool is_waterdata_cmp(struct waterdata_struct * waterdata,uint8_t year,uint8_t mon,uint8_t day,uint8_t valid) { uint8_t ck = get_ck((uint8_t*)&waterdata->invalid,WATERDATA_LEN); if(waterdata->invalid == valid && waterdata->crc == ck && waterdata->year == year && waterdata->mon == mon && waterdata->day == day) { if(waterdata->year>=CUR_YEAR && waterdata->year!=0xFF) { return true; } } return false; } void get_waterdata(struct waterdata_struct * waterdata,uint8_t year,uint8_t mon,uint8_t day,uint8_t valid,uint8_t * value) { if(is_waterdata_cmp(waterdata,year,mon,day,valid)) { get_one_reportdata(value,waterdata); } else { memset(value,0xEE,4); } #ifdef DEBUG_FILEI2C HT_PRINT("[data=%02x%02x%02x%02x]\r\n",value[0],value[1],value[2],value[3]); #endif } void get_waterdata_spacetime(struct waterdata_struct * waterdata,uint8_t year,uint8_t mon,uint8_t day,uint8_t valid,uint8_t * value) { uint32_t tmpyear = 0; uint8_t tmpmon = 0; uint8_t tmpday = 0; uint8_t tmphour = 0; uint8_t tmpmin = 0; uint8_t spaceday = DATA_DAY_MAX; uint32_t newtime = 0; uint32_t oldtime = 0; get_complete_curtime(&tmpyear,&tmpmon,&tmpday,&tmphour,&tmpmin); newtime = mktime(tmpyear,tmpmon,tmpday,0,0,0); oldtime = mktime(year,mon,day,0,0,0); if(newtime>=oldtime) { spaceday = get_space_day(oldtime,newtime); } if(is_waterdata_cmp(waterdata,year,mon,day,valid)&& spaceday<=1) { get_one_reportdata(value,waterdata); } else { memset(value,0xEE,4); } #ifdef DEBUG_FILEI2C HT_PRINT("[spaceday=%d] oldtime=%d newtime=%d [data=%02x%02x%02x%02x] \r\n",spaceday,oldtime,newtime,value[0],value[1],value[2],value[3]); #endif } void get_reportdata_mask(uint8_t year,uint8_t mon,uint8_t day,uint8_t density,uint8_t * num,uint8_t *value) { uint8_t realday = 0; uint8_t valid = 0; uint32_t tmpyear = 0; uint8_t tmpmon = 0; uint8_t tmpday = 0; bool find = false; struct waterdata_struct waterdata; year = year + DEC_YEAR; for(uint8_t i=0; i COLLECT_DENSITY_60) { density = COLLECT_DENSITY_30; } if(COLLECT_DENSITY_15 == density) { for(uint8_t i=0; i<24; i++) { memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,0,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,15,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,30,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,45,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; } * num = 96; } else if(COLLECT_DENSITY_30 == density) { for(uint8_t i=0; i<24; i++) { memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,0,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,30,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; } * num = 48; } else { for(uint8_t i=0; i<24; i++) { memset((uint8_t *)&waterdata,0,sizeof(waterdata)); file_waterdata_read(realday,i,0,(uint8_t *)&waterdata,sizeof(waterdata)); curtime_printf(&waterdata,day,i); get_waterdata(&waterdata,year,mon,day,valid,value); value = value + 4; } * num = 24; } } //得到当前时间之前24小时数据 static void get_reportdata_curtime1(uint8_t density,uint8_t * num,uint8_t *value,uint8_t begin,uint8_t end,uint8_t realday) { struct waterdata_struct waterdata; uint8_t valid = 0; uint32_t year = 0; uint8_t mon = 0; uint8_t day = 0; validflag_read(realday); valid = get_validflag(); year = get_validyear(); mon = get_validmon(); day = get_validday(); if(COLLECT_DENSITY_15 == density) { for(uint8_t i=begin; i COLLECT_DENSITY_60) { density = COLLECT_DENSITY_30; } get_reportdata_curtime2(realday,hour,density,num,value); } void get_reportdata_curtime(uint8_t density,uint8_t * num,uint8_t *value) { uint32_t year = 0; uint8_t mon = 0; uint8_t day = 0; uint8_t hour = 0; uint8_t min = 0; uint8_t realday = 0; uint32_t tmpyear = 0; uint8_t tmpmon = 0; uint8_t tmpday = 0; bool find = false; get_complete_curtime(&year,&mon,&day,&hour,&min); for(uint8_t i=0; i COLLECT_DENSITY_60) { density = COLLECT_DENSITY_30; } get_reportdata_curtime2(realday,hour,density,num,value); }