]> pilppa.org Git - lib1wire.git/commitdiff
add support for specifying scan interval and store interval in test app
authorMika Laitio <lamikr@pilppa.org>
Sun, 31 Oct 2010 11:15:10 +0000 (13:15 +0200)
committerMika Laitio <lamikr@pilppa.org>
Sun, 31 Oct 2010 11:15:10 +0000 (13:15 +0200)
src_test/test_w1.cc

index e3a17f36ee5ead8ea95e42c9ac24abd6080c83b4..6aa372fb3e05e2f9e2bfe7303d22ac3428408ba7 100644 (file)
@@ -8,6 +8,9 @@
 #include <string>
 #include <iostream>
 
+#include <errno.h>
+#include <stdlib.h>
+
 #include <plp/log.h>
 
 #include "W1Store.hh"
 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<W1Device *>        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<W1Device *>::iterator list_iter = device_list.begin(); list_iter != device_list.end(); list_iter++)
-                       {
+                       for(list<W1Device *>::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;
                        }