X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FW1DataList.cc;h=844db8e34a435359b76e230e0f9a9f62befcf93b;hb=9c47855d3ddc3d09b9733c43d420a7d5b739bd37;hp=949454cf3aa0bb2935bb1f3b2e2878b636be79f9;hpb=c4b6d88d7ea02f5ae9b68a075944ff381a2f22c5;p=lib1wire.git diff --git a/src/W1DataList.cc b/src/W1DataList.cc index 949454c..844db8e 100644 --- a/src/W1DataList.cc +++ b/src/W1DataList.cc @@ -22,18 +22,20 @@ using namespace plp; W1DataList::W1DataList(string device_id_param) { string base_dir; - device_id = device_id_param; - base_dir = W1Store::get_store_base_dir(); - device_dir = W1Util::concat_paths(base_dir, device_id); - device_ch_dir = W1Util::concat_paths(base_dir, "cache"); - device_ch_dir = W1Util::concat_paths(device_ch_dir, device_id); + device_config = new DeviceConfig(device_id_param); + summary_calc_type = device_config->get_summary_calculation_type(); + device_id = device_id_param; + base_dir = W1Store::get_base_dir_name(); + device_dir = W1Util::concat_paths(base_dir, device_id); + device_ch_dir = W1Util::concat_paths(base_dir, "cache"); + device_ch_dir = W1Util::concat_paths(device_ch_dir, device_id); } W1DataList::~W1DataList() { - //delete(device_dir); + delete(device_config); } -Data *W1DataList::find_first_data(vector year_vector) { +Data *W1DataList::find_oldest_data(vector year_vector) { int ii; string year_dir; string month_dir; @@ -58,7 +60,7 @@ Data *W1DataList::find_first_data(vector year_vector) { f_name = data_vector.at(0); f_name = W1Util::concat_paths(month_dir, f_name); store = new W1Store(f_name); - ret_val = store->load_first_data_row(); + ret_val = store->get_oldest_data(); delete(store); break; } @@ -67,7 +69,7 @@ Data *W1DataList::find_first_data(vector year_vector) { return ret_val; } -Data *W1DataList::find_last_data(vector year_vector) { +Data *W1DataList::find_newest_data(vector year_vector) { int ii; string year_dir; string month_dir; @@ -95,7 +97,7 @@ Data *W1DataList::find_last_data(vector year_vector) { f_name = data_vector.at(size - 1); f_name = W1Util::concat_paths(month_dir, f_name); store = new W1Store(f_name); - ret_val = store->load_last_data_row(); + ret_val = store->get_newest_data(); delete(store); break; } @@ -110,32 +112,22 @@ DataRange *W1DataList::get_data_range() { struct dirent *year_dirent; vector year_list; Data *first_data; - Data *last_data; + Data *newest_data; ret_val = NULL; year_list = W1Util::get_subdirectories(device_dir); - first_data = find_first_data(year_list); + first_data = find_oldest_data(year_list); if (first_data != NULL) { - last_data = find_last_data(year_list); - if (last_data != NULL) { + newest_data = find_newest_data(year_list); + if (newest_data != NULL) { ret_val = new DataRange(*first_data); - ret_val->add_data(*last_data); - delete(last_data); + ret_val->add_data(*newest_data); + delete(newest_data); } delete(first_data); } return ret_val; } -/* -long int get_date_as_seconds(struct tm *date) { - long int ret_val; - - ret_val = date->tm - date->tm_hour * 3600 + - date->tm_min * 60 + - date->tm_sec; -} -*/ long int get_interval_type(Date *start_date, Date *end_date) { @@ -177,64 +169,52 @@ long int get_interval_type(Date *start_date, return ret_val; } -string W1DataList::get_day_data(Date *date) { - string ret_val; +Data *W1DataList::get_daily_summary(Date *date) { + Data *ret_val; + W1Store *store; - ret_val = W1Store::get_store_file_name(device_id, date); - return ret_val; -} - -Data *W1DataList::get_avg_day_data(Date *date) { - return NULL; -} - -/* -time_t to_seconds2(const char *date) -{ - struct tm storage={0,0,0,0,0,0,0,0,0}; - char *p=NULL; - time_t retval=0; + store = new W1Store(device_id, date); + store->load(); + switch(summary_calc_type) { + case SUM: + ret_val = store->get_sum(); + break; + case DELTA: + ret_val = store->get_delta(); + break; + case MEAN: + default: + ret_val = store->get_mean(); + break; + case MAX: + ret_val = store->get_max(); + break; + case MIN: + ret_val = store->get_min(); + break; + } + ret_val->printout(); + delete(store); - p=(char *)strptime(date,"%d-%b-%Y",&storage); - if(p==NULL) { - retval=0; - } - else - { - errno = 0; - retval =mktime(&storage); - if (retval == ((time_t)-1)) { - log_error("Error2 converting struct tm to seconds: %s\n", strerror(errno)); - } - else { - log_debug("succ2: %ld\n", retval); - } - } - return retval; + return ret_val; } -*/ -DataRange *W1DataList::get_avg_day_data(Date *start_date, +DataRange *W1DataList::get_daily_summary(Date *start_date, Date *end_date) { DataRange *ret_val; Data *data; - W1Store *store; Date *date; ret_val = NULL; date = start_date->clone(); while(date->before(*end_date)) { - store = new W1Store(device_id, date); - store->load(); - data = store->get_mean(); - data->printout(); + data = get_daily_summary(date); if (ret_val == NULL) { ret_val = new DataRange(*data); } else { ret_val->add_data(*data); } - delete(store); delete(data); date->tomorrow(); } @@ -253,23 +233,23 @@ DataRange *W1DataList::get_data(Date *start_date, int_type = get_interval_type(start_date, end_date); switch(int_type) { case 0: - log_debug("get avg year data\n"); + log_debug("get yearly summary\n"); break; case 1: - log_debug("get avg month data\n"); + log_debug("get monthly summary\n"); break; case 2: - log_debug("get avg day data\n"); - ret_val = get_avg_day_data(start_date, end_date); + log_debug("get daily summary\n"); + ret_val = get_daily_summary(start_date, end_date); break; case 3: - log_debug("get avg hour data\n"); + log_debug("get hourly summary\n"); break; case 4: - log_debug("get avg min data\n"); + log_debug("get minute summary data\n"); break; case 5: - log_debug("get avg sec data\n"); + log_debug("get second summary data\n"); break; } return ret_val;