2 * DeviceManagerClient.cc
4 * Created on: Mar 4, 2011
11 #include <plp/retval.h>
13 #include <plp/DeviceData.hh>
15 #include "DeviceManagerClient.hh"
16 #include "../src/plp/devicebus/DeviceBusMessageId.hh"
20 using namespace plpbus;
21 using namespace plpdevicebus;
23 DeviceManagerClient::DeviceManagerClient() {
27 static void clean_device_list(list<Device *> *dev_lst) {
30 if (dev_lst != NULL) {
31 while (dev_lst->empty() == false) {
32 dev = dev_lst->back();
41 DeviceManagerClient::~DeviceManagerClient() {
42 clean_device_list(_device_list);
45 const std::list<plp::Device *> *DeviceManagerClient::get_device_list(BusClient *client_param) {
46 send_request__get_device_list(client_param);
50 void DeviceManagerClient::send_request__get_device_list(BusClient *client_param) {
55 msg_req = new BusMessage(MSG_TYPE_ID__GET_DEVICE_LIST);
56 client_param->send_message_and_wait_response(msg_req, &msg_rsp);
57 clean_device_list(_device_list);
58 _device_list = parse_device_list_msg(msg_rsp);
63 BusMessage *DeviceManagerClient::get_latest_data(BusClient *client_param, string device_id_param) {
68 msg_req = new BusMessage(MSG_TYPE_ID__GET_LATEST_DATA);
69 msg_req->add_string_parameter(REQ__GET_LATEST_DATA__ID, device_id_param.c_str());
70 client_param->send_message_and_wait_response(msg_req, &msg_rsp);
75 list<Device *> *DeviceManagerClient::parse_device_list_msg(BusMessage *msg_param) {
83 EnumDeviceLifeCycleStatus state;
86 list<Device *> *ret_val;
88 log_debug("parse_device_list_msg() started\n");
89 count = msg_param->get_long_parameter(RSP__DEVICE_LIST__DEVICE_COUNT, &err_flg);
90 log_debug("count: %ld\n", count);
91 ret_val = new list<Device *>;
92 if (err_flg == PLP_OK) {
93 for (ii = 0; ii < count; ii++) {
95 key << RSP__DEVICE_LIST__ID << ii;
96 id = msg_param->get_string_parameter(key.str(), &err_flg);
99 key << RSP__DEVICE_LIST__NAME << ii;
100 name = msg_param->get_string_parameter(key.str(), &err_flg);
103 key << RSP__DEVICE_LIST__TYPE << ii;
104 type = msg_param->get_string_parameter(key.str(), &err_flg);
107 key << RSP__DEVICE_LIST__LF_STATE << ii;
108 state_i = msg_param->get_int_parameter(key.str(), &err_flg);
109 state = (EnumDeviceLifeCycleStatus)state_i;
111 dev = new DeviceData(id, type, name, state);
112 ret_val->push_back(dev);