From: Mika Laitio Date: Sun, 31 Oct 2010 11:15:10 +0000 (+0200) Subject: add support for specifying scan interval and store interval in test app X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=80cdda7a07fe93c3f701c562f960081fa9376187;p=lib1wire.git add support for specifying scan interval and store interval in test app --- diff --git a/src_test/test_w1.cc b/src_test/test_w1.cc index e3a17f3..6aa372f 100644 --- a/src_test/test_w1.cc +++ b/src_test/test_w1.cc @@ -8,6 +8,9 @@ #include #include +#include +#include + #include #include "W1Store.hh" @@ -16,15 +19,42 @@ using namespace w1; using namespace std; +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) { W1Scanner *scanner; list device_list; int round; - int interval_seconds; - int store_interval; + long scan_interval; + long store_interval; string location; + bool err_flg; + // default values than can be overwritten with parameters location = "/tmp/"; + scan_interval = 600; + store_interval = 6; if (argc > 1) { location = argv[1]; log_info("storage location: %s\n", location.c_str()); @@ -32,17 +62,21 @@ int main(int argc, char** argv) { else { log_warning("storage location was not given as a parameter, using default location: %s\n", location.c_str()); } + if (argc > 2) { + try_parse_long(argv[2], &scan_interval); + } + if (argc > 3) { + try_parse_long(argv[3], &store_interval); + } + log_info("start scanning, data saved to location: %s, scan interval: %d, store interval: %d\n", location.c_str(), scan_interval, store_interval); W1Store::set_location(location.c_str()); - interval_seconds = 600; - store_interval = 6; scanner = new W1Scanner(); device_list = scanner->get_device_list(); round = 0; if (device_list.size() > 0) { while(1) { round++; - for(list::iterator list_iter = device_list.begin(); list_iter != device_list.end(); list_iter++) - { + for(list::iterator list_iter = device_list.begin(); list_iter != device_list.end(); list_iter++) { W1Device *device = (W1Device *)*list_iter; device->printout(); @@ -51,7 +85,7 @@ int main(int argc, char** argv) { device->store(); } } - sleep(interval_seconds); + sleep(scan_interval); if (round >= store_interval) { round = 0; }