]> pilppa.org Git - nws-w1.git/blobdiff - src_server/NetworkServiceServer_W1.cc
fix compiler warning from sleep prototype
[nws-w1.git] / src_server / NetworkServiceServer_W1.cc
index 5bebc04ae57531294a77d212daafe85770c56a07..f328592b4cb998f3a9231b68aa9d18fe462f4645 100644 (file)
@@ -2,7 +2,10 @@
 #include <list>
 
 #include <string.h>
+#include <errno.h>
+
 #include <plp/log.h>
+#include <plp/str_util.h>
 #include <plp/bus/BusServer.hh>
 
 #include <w1/Factory.hh>
@@ -17,25 +20,46 @@ using namespace plpbus;
 using namespace plpdevicebus;
 using namespace w1;
 
+#define DEFAULT_READ_INTERVAL_SEC      600
+
+void printout_usage() {
+       log_info("usage:\n\tnws-w1 <save_path for results> <read_interval_in seconds>\n");
+}
+
 int main(int argc, char** argv)
 {
        BusServer               *server;
        ServerListenerImpl      *listener;
        DeviceManagerServer     *dev_man;
        string                  save_loc;
+       long                    interval_sec;
        string                  server_name;
-       list<Device *>  dev_lst;
+       list<Device *>          dev_lst;
+       bool                    succ;
 
        server_name     = W1_SERVER_NAME;
-       save_loc        = DeviceConfig::get_base_dir_name();
-       if (argc >= 2) {
+       save_loc        = "/tmp/w1data";
+       interval_sec    = DEFAULT_READ_INTERVAL_SEC;
+       if (argc > 1) {
                save_loc        = argv[1];
                log_info("storage location: %s\n", save_loc.c_str());
-               DeviceConfig::set_base_dir_name(save_loc);
        }
        else {
-               log_warning("No storage location parameter given, using default location: %s\n", save_loc.c_str());
+               log_info("no parameter given using default values:\n");
+               log_info("\tnws-w1 %s %ld\n\n", save_loc.c_str(), interval_sec);
+               printout_usage();
+       }
+       if (argc > 2) {
+               succ    = parse_long(argv[2], &interval_sec);
+               if (succ == false) {
+                       interval_sec    = DEFAULT_READ_INTERVAL_SEC;
+                       log_error("failed to parse read interval parameter, using default value: %ld\n", interval_sec);
+                       printout_usage();
+               }
        }
+       log_info("device polling interval: %ld seconds\n", interval_sec);
+       DeviceConfig::set_base_dir_name(save_loc);
+       DeviceConfig::set_read_interval_seconds(interval_sec);
        log_info("starting server: %s\n", server_name.c_str());
        dev_lst         = Factory::get_device_list();
        server          = new BusServer();