#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>
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();