]> pilppa.org Git - lib1wire.git/blob - src_test/test_w1_datalog_read.cc
d135c03f611b856f9fa26ecbf927a7d414433ceb
[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
16 #include "Date.hh"
17 #include "DeviceData.hh"
18 #include "DeviceConfig.hh"
19 #include "Factory.hh"
20 #include "W1Util.hh"
21
22 using namespace w1;
23 using namespace std;
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         DeviceData              *dta;
53         DataRange               *dr;
54         DataRange               *dr2;
55         list<DeviceData *>      dta_list;
56
57         // default values than can be overwritten with parameters
58         loc     = "/tmp/w1data";
59         if (argc > 1) {
60                 loc     = argv[1];
61                 log_info("storage location: %s\n", loc.c_str());
62         }
63         else {
64                 log_warning("No storage location parameter given, using default location: %s\n", loc.c_str());
65         }
66         DeviceConfig::set_base_dir_name(loc);
67         dta_list        = Factory::get_device_data_list();
68         for(list<DeviceData *>::iterator list_iter = dta_list.begin(); list_iter != dta_list.end(); list_iter++) {
69                 dta     = (DeviceData *)*list_iter;
70                 if (dta != NULL) {
71                         dr      = dta->get_data_range();
72                         if (dr != NULL) {
73                                 fdata   = dr->get_first_data();
74                                 if (fdata != NULL) {
75                                         fdata->printout();
76                                         ldata   = dr->get_last_data();
77                                         if (ldata != NULL) {
78                                                 ldata->printout();
79                                                 plp::Date d1;
80                                                 plp::Date d2;
81
82                                                 d1      = fdata->get_date();
83                                                 d2      = ldata->get_date();
84                                                 dr2     = dta->get_data(&d1, &d2);
85                                                 if (dr2 != NULL) {
86                                                         dr2->printout();
87                                                         delete(dr2);
88                                                 }
89                                                 delete(ldata);
90                                         }
91                                         delete(fdata);
92                                 }
93                                 delete(dr);
94                         }
95                         delete(dta);
96                 }
97         }
98         return 0;
99 }