]> pilppa.org Git - lib1wire.git/blob - src/DeviceData.hh
Added support for cacheing monthly data.
[lib1wire.git] / src / DeviceData.hh
1 /*
2  * DeviceData.hh
3  *
4  *  Created on: Nov 7, 2010
5  *      Author: lamikr
6  */
7
8 #ifndef W1DATALIST_H_
9 #define W1DATALIST_H_
10
11 #include <string>
12 #include <vector>
13
14 #include "Data.hh"
15 #include "Date.hh"
16 #include "DeviceConfig.hh"
17
18 #include <time.h>
19
20 namespace w1 {
21         class DeviceData {
22                 public:
23                         DeviceData(std::string device_id);
24                         virtual ~DeviceData();
25                         plp::DataRange *get_data_range();
26                         plp::DataRange *get_monthly_summary(plp::Date *date, EnumSummaryCalculationType calc_type);
27                         /**
28                          * Get summary data calculated from the daily data items that is meaning full.
29                          * Depending from the device type, it may be daily mean value, daily delta, highest value, etc...
30                          */
31                         plp::DataRange *get_monthly_summary(plp::Date *date);
32                         plp::DataRange *get_monthly_summary(plp::Date *start_date, plp::Date *end_date);
33                         plp::DataRange *get_daily_summary(plp::Date *date, EnumSummaryCalculationType calc_type);
34                         /**
35                          * Get summary data calculated from the daily data items that is meaning full.
36                          * Depending from the device type, it may be daily mean value, daily delta, highest value, etc...
37                          */
38                         plp::DataRange *get_daily_summary(plp::Date *date);
39                         plp::DataRange *get_daily_summary(plp::Date *start_date, plp::Date *end_date);
40                         plp::DataRange *get_hourly_summary(plp::Date *date, EnumSummaryCalculationType calc_type);
41                         plp::DataRange *get_hourly_summary(plp::Date *date);
42                         plp::DataRange *get_hourly_summary(plp::Date *start_date, plp::Date *end_date);
43                         plp::DataRange *get_data(plp::Date *start_date, plp::Date *end_date);
44                 protected:
45                         std::string                     device_id;
46                         std::string                     device_dir;
47                         std::string                     device_ch_dir;
48                         w1::DeviceConfig                *device_config;
49                         EnumSummaryCalculationType      summary_calc_type;
50                         plp::Data *find_oldest_data(std::vector<std::string> year_vector);
51                         plp::Data *find_newest_data(std::vector<std::string> year_vector);
52                         plp::DataRange *get_summary(plp::Date *date_param,
53                                         EnumSummaryCalculationType calc_type_param,
54                                         EnumSummaryPeriod period_type_param);
55         };
56 }
57
58 #endif /* W1DATALIST_H_ */