]> pilppa.org Git - nws-w1.git/blob - src_server/NetworkServiceServer_W1.cc
3e8802243bacebe3e8fb4cb66db65779c68b0ee3
[nws-w1.git] / src_server / NetworkServiceServer_W1.cc
1 #include <iostream>
2 #include <list>
3
4 #include <string.h>
5 #include <errno.h>
6
7 #include <plp/log.h>
8 #include <plp/str_util.h>
9 #include <plp/bus/BusServer.hh>
10
11 #include <w1/Factory.hh>
12
13 #include <plp/devicebus/DeviceBusMessageId.hh>
14 #include <plp/devicebus/server/ServerListenerImpl.hh>
15 #include <plp/devicebus/server/DeviceManagerServer.hh>
16
17 using namespace std;
18 using namespace plp;
19 using namespace plpbus;
20 using namespace plpdevicebus;
21 using namespace w1;
22
23 #define DEFAULT_READ_INTERVAL_SEC       600
24
25 void printout_usage() {
26         log_info("usage:\n\tnws-w1 <save_path for results> <read_interval_in seconds>\n");
27 }
28
29 int main(int argc, char** argv)
30 {
31         BusServer               *server;
32         ServerListenerImpl      *listener;
33         DeviceManagerServer     *dev_man;
34         string                  save_loc;
35         long                    interval_sec;
36         string                  server_name;
37         list<Device *>          dev_lst;
38         bool                    succ;
39
40         server_name     = W1_SERVER_NAME;
41         save_loc        = "/tmp/w1data";
42         interval_sec    = DEFAULT_READ_INTERVAL_SEC;
43         if (argc > 1) {
44                 save_loc        = argv[1];
45                 log_info("storage location: %s\n", save_loc.c_str());
46         }
47         else {
48                 log_info("no parameter given using default values:\n");
49                 log_info("\tnws-w1 %s %ld\n\n", save_loc.c_str(), interval_sec);
50                 printout_usage();
51         }
52         if (argc > 2) {
53                 succ    = parse_long(argv[2], &interval_sec);
54                 if (succ == false) {
55                         interval_sec    = DEFAULT_READ_INTERVAL_SEC;
56                         log_error("failed to parse read interval parameter, using default value: %ld", interval_sec);
57                         printout_usage();
58                 }
59         }
60         log_info("device polling interval: %ld seconds\n", interval_sec);
61         DeviceConfig::set_base_dir_name(save_loc);
62         DeviceConfig::set_read_interval_seconds(interval_sec);
63         log_info("starting server: %s\n", server_name.c_str());
64         dev_lst         = Factory::get_device_list();
65         server          = new BusServer();
66         dev_man         = new DeviceManagerServer(dev_lst);
67         server->init();
68         listener        = new ServerListenerImpl(dev_man);
69         server->add_server_listener(listener);
70         server->launch(server_name.c_str());
71         return 0;
72 }