#include <errno.h>
#include <plp/log.h>
+#include <plp/str_util.h>
#include <plp/bus/BusServer.hh>
#include <w1/Factory.hh>
using namespace plpdevicebus;
using namespace w1;
-#define DEFAULT_READ_INTERVAL_SECONDS 600
+#define DEFAULT_READ_INTERVAL_SEC 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;
+void printout_usage() {
+ log_info("usage:\n\tnws-w1 <save_path for results> <read_interval_in seconds>\n");
}
int main(int argc, char** argv)
ServerListenerImpl *listener;
DeviceManagerServer *dev_man;
string save_loc;
- long read_interval_sec;
+ long interval_sec;
string server_name;
- list<Device *> dev_lst;
+ list<Device *> dev_lst;
+ bool succ;
server_name = W1_SERVER_NAME;
save_loc = "/tmp/w1data";
- read_interval_sec = DEFAULT_READ_INTERVAL_SECONDS;
+ interval_sec = DEFAULT_READ_INTERVAL_SEC;
if (argc > 1) {
save_loc = argv[1];
log_info("storage location: %s\n", save_loc.c_str());
}
else {
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");
+ log_info("\tnws-w1 %s %ld\n\n", save_loc.c_str(), interval_sec);
+ printout_usage();
}
if (argc > 2) {
- try_parse_long(argv[2], &read_interval_sec);
+ 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", interval_sec);
+ printout_usage();
+ }
}
- log_info("device polling interval: %ld seconds\n", read_interval_sec);
+ log_info("device polling interval: %ld seconds\n", interval_sec);
DeviceConfig::set_base_dir_name(save_loc);
- DeviceConfig::set_read_interval_seconds(read_interval_sec);
+ 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();