]> pilppa.org Git - libplpdevicebus.git/blob - src_client/DeviceManagerController.cc
9b4e89d8fbd7c01153265ef256629d1461755070
[libplpdevicebus.git] / src_client / DeviceManagerController.cc
1 /*
2  * DeviceManagerController.cc
3  *
4  *  Created on: Mar 7, 2011
5  *      Author: lamikr
6  */
7 #include <sstream>
8
9 #include <plp/log.h>
10 #include <plp/retval.h>
11 #include <plp/bus/BusClient.hh>
12 #include <plp/bus/BusMessage.hh>
13
14 #include "DeviceManagerController.hh"
15 #include "../src/plp/devicebus/DeviceBusMessageId.hh"
16
17 using namespace std;
18 using namespace plp;
19 using namespace plpbus;
20 using namespace plpdevicebus;
21
22 DeviceManagerController::DeviceManagerController() {
23         int     err_flg;
24         string  server_name;
25
26         server_name     = W1_SERVER_NAME;
27         _dev_man        = NULL;
28         _lstnr          = NULL;
29         try {
30                 _bus_client     = new BusClient();
31                 err_flg         = _bus_client->init(server_name.c_str());
32                 if (err_flg == 0) {
33                         _dev_man        = new DeviceManagerClient();
34                         _lstnr          = new ClientListenerImpl(_dev_man);
35                         err_flg         = _bus_client->add_client_listener(_lstnr);
36                 }
37         }
38         catch(...) {
39                 log_error("Exception catched\n");
40                 _dev_man        = NULL;
41                 _lstnr          = NULL;
42         }
43 }
44
45 DeviceManagerController::~DeviceManagerController() {
46         if (_dev_man != NULL) {
47                 delete(_dev_man);
48         }
49         if (_bus_client != NULL) {
50                 delete(_bus_client);
51         }
52         if (_lstnr != NULL) {
53                 delete(_lstnr);
54         }
55 }
56
57 const std::list<plp::Device *> *DeviceManagerController::get_device_list(int *err_flg) {
58         const list<Device *>    *ret_val;
59
60         ret_val         = NULL;
61         *err_flg        = PLP_ERR;
62         try {
63                 if (_dev_man != NULL) {
64                         ret_val = _dev_man->get_device_list(_bus_client, err_flg);
65                 }
66                 else {
67                         ret_val = new list<Device *>;
68                 }
69         }
70         catch(...) {
71                 log_error("Could not get a device list\n");
72                 *err_flg        = PLP_ERR;
73         }
74         return ret_val;
75 }
76
77
78 Data *DeviceManagerController::get_latest_data(string device_id_param,
79                                                 int *err_flg) {
80         Data            *ret_val;
81
82         ret_val         = NULL;
83         *err_flg        = PLP_ERR;
84         try {
85                 if (_dev_man != NULL) {
86                         ret_val = _dev_man->get_latest_data(_bus_client,
87                                                         device_id_param,
88                                                         err_flg);
89                 }
90         }
91         catch(...) {
92                 log_error("Could not get latest data\n");
93                 *err_flg        = PLP_ERR;
94         }
95         return ret_val;
96 }