#include <stdlib.h>
#include <plp/log.h>
+#include <plp/Date.hh>
+#include <plp/DataReader.hh>
+#include <plp/DeviceConfig.hh>
+#include <plp/Device.hh>
+#include <plp/SensorDevice.hh>
-#include "Date.hh"
-#include "DeviceData.hh"
-#include "DeviceConfig.hh"
#include "Factory.hh"
-#include "W1Util.hh"
using namespace std;
using namespace plp;
using namespace w1;
-bool try_parse_long(const char *str, long *result) {
- int new_result;
- char *endptr;
- bool ret_val;
-
- ret_val = false;
- errno = 0;
- new_result = strtol(str, &endptr, 10);
- if (errno != 0) {
- log_error("invalid input %s, could not convert to integer.\n", str);
- }
- else {
- if (endptr == str) {
- log_error("invalid input %s, could not convert to integer.\n", str);
- }
- else {
- *result = new_result;
- ret_val = true;
- }
- }
- return ret_val;
-}
-
int main(int argc, char** argv) {
- string loc;
- Data *fdata;
- Data *ldata;
- DeviceData *dta;
- DataRange *dr;
- DataRange *dr2;
- list<DeviceData *> dta_list;
+ string loc;
+ Data *fdata;
+ Data *ldata;
+ const DataReader *reader;
+ Device *dev;
+ SensorDevice *device;
+ DataRange *dr;
+ DataRange *dr2;
+ list<Device *> dev_lst;
+ list<Device *>::iterator list_iter;
// default values than can be overwritten with parameters
- loc = "/tmp/w1data";
+ loc = DeviceConfig::get_base_dir_name();
if (argc > 1) {
loc = argv[1];
log_info("storage location: %s\n", loc.c_str());
+ DeviceConfig::set_base_dir_name(loc);
}
else {
log_warning("No storage location parameter given, using default location: %s\n", loc.c_str());
}
- DeviceConfig::set_base_dir_name(loc);
- dta_list = Factory::get_device_data_list();
- for(list<DeviceData *>::iterator list_iter = dta_list.begin(); list_iter != dta_list.end(); list_iter++) {
- dta = (DeviceData *)*list_iter;
- if (dta != NULL) {
- dr = dta->get_data_range();
- if (dr != NULL) {
- fdata = dr->get_first();
- if (fdata != NULL) {
- fdata->printout();
- ldata = dr->get_last();
- if (ldata != NULL) {
- ldata->printout();
- plp::Date d1;
- plp::Date d2;
+ dev_lst = Factory::get_device_list();
+ for(list_iter = dev_lst.begin(); list_iter != dev_lst.end(); list_iter++) {
+ dev = (Device *)*list_iter;
+ if (dev != NULL) {
+ device = dynamic_cast<SensorDevice *>(dev);
+ if (device != NULL) {
+ reader = device->get_device_data();
+ if (reader != NULL) {
+ dr = ((DataReader *)reader)->get_data_range();
+ if (dr != NULL) {
+ fdata = dr->get_first();
+ if (fdata != NULL) {
+ fdata->printout();
+ ldata = dr->get_last();
+ if (ldata != NULL) {
+ ldata->printout();
+ plp::Date d1;
+ plp::Date d2;
- d1 = fdata->get_date();
- d2 = ldata->get_date();
- dr2 = dta->get_data(&d1, &d2);
- if (dr2 != NULL) {
- dr2->printout();
- delete(dr2);
+ d1 = fdata->get_date();
+ d2 = ldata->get_date();
+ dr2 = ((DataReader *)reader)->get_data(&d1, &d2);
+ if (dr2 != NULL) {
+ dr2->printout();
+ delete(dr2);
+ }
+ delete(ldata);
+ }
+ delete(fdata);
}
- delete(ldata);
+ delete(dr);
}
- delete(fdata);
}
- delete(dr);
}
- delete(dta);
}
}
+ while (dev_lst.empty() == false) {
+ dev = dev_lst.back();
+ dev_lst.pop_back();
+ delete(dev);
+ }
return 0;
}