From be29a522da58c90ef44f2006ee1d4ca2ffdfcc27 Mon Sep 17 00:00:00 2001 From: Mika Laitio Date: Tue, 24 Jul 2012 04:42:28 +0300 Subject: [PATCH] add read interval parameter for nws-w1 Signed-off-by: Mika Laitio --- src_server/NetworkServiceServer_W1.cc | 44 ++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src_server/NetworkServiceServer_W1.cc b/src_server/NetworkServiceServer_W1.cc index 5bebc04..af68ad3 100644 --- a/src_server/NetworkServiceServer_W1.cc +++ b/src_server/NetworkServiceServer_W1.cc @@ -2,6 +2,8 @@ #include #include +#include + #include #include @@ -17,25 +19,59 @@ using namespace plpbus; using namespace plpdevicebus; using namespace w1; +#define DEFAULT_READ_INTERVAL_SECONDS 600 + +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) { BusServer *server; ServerListenerImpl *listener; DeviceManagerServer *dev_man; string save_loc; + long read_interval_sec; string server_name; list dev_lst; server_name = W1_SERVER_NAME; - save_loc = DeviceConfig::get_base_dir_name(); - if (argc >= 2) { + save_loc = "/tmp/w1data"; + read_interval_sec = DEFAULT_READ_INTERVAL_SECONDS; + 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(), read_interval_sec); + log_info("usage:\n\tnws-w1 \n"); + } + if (argc > 2) { + try_parse_long(argv[2], &read_interval_sec); } + log_info("device polling interval: %ld seconds\n", read_interval_sec); + DeviceConfig::set_base_dir_name(save_loc); + DeviceConfig::set_read_interval_seconds(read_interval_sec); log_info("starting server: %s\n", server_name.c_str()); dev_lst = Factory::get_device_list(); server = new BusServer(); -- 2.41.1