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