#include <list>
#include <string.h>
+#include <errno.h>
+
#include <plp/log.h>
#include <plp/bus/BusServer.hh>
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<Device *> 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 <result_save_path> <read_interval_seconds>\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();