]> pilppa.org Git - lib1wire.git/blobdiff - src_test/test_w1_datalog_read.cc
configuration data related changes
[lib1wire.git] / src_test / test_w1_datalog_read.cc
index 2658c46ebffb26f2fb7a2681b2faa986847f167d..064831b4bc8c71432bd57b1e87294792e73effd3 100644 (file)
 #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 "DataReader.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;
-       DataReader                      *reader;
-       Device                          *device;
+       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);
        dev_lst = Factory::get_device_list();
        for(list_iter = dev_lst.begin(); list_iter != dev_lst.end(); list_iter++) {
-               device  = (Device *)*list_iter;
-               if (device != NULL) {
-                       reader  = device->get_device_data();
-                       if (reader != NULL) {
-                               dr      = 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;
+               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     = reader->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(ldata);
+                                                       delete(fdata);
                                                }
-                                               delete(fdata);
+                                               delete(dr);
                                        }
-                                       delete(dr);
                                }
-                               delete(reader);
                        }
                }
        }
+       while (dev_lst.empty() == false) {
+               dev     = dev_lst.back();
+               dev_lst.pop_back();
+               delete(dev);
+       }
        return 0;
 }