]> pilppa.org Git - lib1wire.git/blob - src_test/test_w1_datalog_read.cc
80822bd76a5016f17e882f3dfb0f52423ed0e332
[lib1wire.git] / src_test / test_w1_datalog_read.cc
1 /*
2  * test_data_read.cc
3  *
4  *  Created on: Nov 15, 2010
5  *      Author: lamikr
6  */
7 #include <list>
8 #include <string>
9 #include <iostream>
10
11 #include <errno.h>
12 #include <stdlib.h>
13
14 #include <plp/log.h>
15 #include <plp/Date.hh>
16 #include <plp/DataReader.hh>
17 #include <plp/DeviceConfig.hh>
18
19 #include "Factory.hh"
20
21 using namespace std;
22 using namespace plp;
23 using namespace w1;
24
25 bool try_parse_long(const char *str, long *result) {
26         int     new_result;
27         char    *endptr;
28         bool    ret_val;
29
30         ret_val         = false;
31         errno           = 0;
32         new_result      = strtol(str, &endptr, 10);
33         if (errno != 0) {
34                 log_error("invalid input %s, could not convert to integer.\n", str);
35         }
36         else {
37                 if (endptr == str) {
38                         log_error("invalid input %s, could not convert to integer.\n", str);
39                 }
40                 else {
41                         *result = new_result;
42                         ret_val = true;
43                 }
44         }
45         return ret_val;
46 }
47
48 int main(int argc, char** argv) {
49         string                          loc;
50         Data                            *fdata;
51         Data                            *ldata;
52         DataReader                      *reader;
53         Device                          *device;
54         DataRange                       *dr;
55         DataRange                       *dr2;
56         list<Device *>                  dev_lst;
57         list<Device *>::iterator        list_iter;
58
59         // default values than can be overwritten with parameters
60         loc     = DeviceConfig::get_base_dir_name();
61         if (argc > 1) {
62                 loc     = argv[1];
63                 log_info("storage location: %s\n", loc.c_str());
64                 DeviceConfig::set_base_dir_name(loc);
65         }
66         else {
67                 log_warning("No storage location parameter given, using default location: %s\n", loc.c_str());
68         }
69         dev_lst = Factory::get_device_list();
70         for(list_iter = dev_lst.begin(); list_iter != dev_lst.end(); list_iter++) {
71                 device  = (Device *)*list_iter;
72                 if (device != NULL) {
73                         reader  = device->get_device_data();
74                         if (reader != NULL) {
75                                 dr      = reader->get_data_range();
76                                 if (dr != NULL) {
77                                         fdata   = dr->get_first();
78                                         if (fdata != NULL) {
79                                                 fdata->printout();
80                                                 ldata   = dr->get_last();
81                                                 if (ldata != NULL) {
82                                                         ldata->printout();
83                                                         plp::Date d1;
84                                                         plp::Date d2;
85
86                                                         d1      = fdata->get_date();
87                                                         d2      = ldata->get_date();
88                                                         dr2     = reader->get_data(&d1, &d2);
89                                                         if (dr2 != NULL) {
90                                                                 dr2->printout();
91                                                                 delete(dr2);
92                                                         }
93                                                         delete(ldata);
94                                                 }
95                                                 delete(fdata);
96                                         }
97                                         delete(dr);
98                                 }
99                                 delete(reader);
100                         }
101                 }
102         }
103         return 0;
104 }