return _device_list;
}
-BusMessage *DeviceManagerClient::get_latest_data(BusClient *client_param, string device_id_param) {
+DataRange *DeviceManagerClient::parse_device_data_msg(BusMessage *msg_param,
+ int *err_flg) {
+ Data *data;
+ string data_str;
+ DataRange *ret_val;
+
+ *err_flg = PLP_ERR;
+ ret_val = NULL;
+ if (msg_param != NULL) {
+ data_str = msg_param->get_string_parameter(RSP__GET_LATEST_DATA__VALUE, err_flg);
+ data = Data::parse_string(data_str);
+ ret_val = new DataRange(data);
+ log_debug("latest data\n");
+ data->printout();
+
+ data_str = msg_param->get_string_parameter(RSP__GET_LATEST_DATA__MIN_VALUE, err_flg);
+ data = Data::parse_string(data_str);
+ ret_val->add(data);
+ log_debug("min data\n");
+ data->printout();
+
+ data_str = msg_param->get_string_parameter(RSP__GET_LATEST_DATA__MAX_VALUE, err_flg);
+ data = Data::parse_string(data_str);
+ ret_val->add(data);
+ log_debug("max data\n");
+ data->printout();
+
+ *err_flg = PLP_OK;
+ }
+ return ret_val;
+}
+
+Data *DeviceManagerClient::get_latest_data(BusClient *client_param,
+ string device_id_param,
+ int *err_flg) {
BusMessage *msg_req;
BusMessage *msg_rsp;
+ Data *ret_val;
+ DataRange *dr;
msg_rsp = NULL;
+ ret_val = NULL;
msg_req = new BusMessage(MSG_TYPE_ID__GET_LATEST_DATA);
msg_req->add_string_parameter(REQ__GET_LATEST_DATA__ID, device_id_param.c_str());
client_param->send_message_and_wait_response(msg_req, &msg_rsp);
+ dr = parse_device_data_msg(msg_rsp, err_flg);
+ ret_val = dr->get_first()->clone();
+ delete(dr);
delete(msg_req);
- return msg_rsp;
+ delete(msg_rsp);
+
+ return ret_val;
}
-list<Device *> *DeviceManagerClient::parse_device_list_msg(BusMessage *msg_param, int *err_flg) {
+list<Device *> *DeviceManagerClient::parse_device_list_msg(BusMessage *msg_param,
+ int *err_flg) {
int ii;
long count;
ostringstream key;
key.str("");
key << RSP__DEVICE_LIST__ID << ii;
id = msg_param->get_string_parameter(key.str(), err_flg);
- if (*err_flg != PLP_OK)
+ if (*err_flg != PLP_OK) {
+ log_error("Failed to parse device id.\n");
break;
+ }
key.str("");
key << RSP__DEVICE_LIST__NAME << ii;
name = msg_param->get_string_parameter(key.str(), err_flg);
- if (*err_flg != PLP_OK)
+ if (*err_flg != PLP_OK) {
+ log_error("Failed to parse name for the device: %s\n", id.c_str());
break;
+ }
key.str("");
key << RSP__DEVICE_LIST__TYPE << ii;
type = msg_param->get_string_parameter(key.str(), err_flg);
- if (*err_flg != PLP_OK)
+ if (*err_flg != PLP_OK) {
+ log_error("Failed to parse type for the device: %s\n", id.c_str());
break;
+ }
key.str("");
key << RSP__DEVICE_LIST__LF_STATE << ii;
state_i = msg_param->get_int_parameter(key.str(), err_flg);
- if (*err_flg != PLP_OK)
+ if (*err_flg != PLP_OK) {
+ log_error("Failed to parse life cycle state for the device: %s\n", id.c_str());
break;
+ }
state = (EnumDeviceLifeCycleStatus)state_i;
key.str("");
key << RSP__DEVICE_LIST__DATA << ii;
datastr = msg_param->get_string_parameter(key.str(), err_flg);
- if (*err_flg != PLP_OK)
- break;
-
- data = Data::parse_string(datastr);
- if (data == NULL) {
- *err_flg = PLP_ERR;
- break;
+ if (*err_flg == PLP_OK) {
+ data = Data::parse_string(datastr);
+ if (data == NULL) {
+ log_error("Failed to parse data items for the device: %s\n", id.c_str());
+ *err_flg = PLP_ERR;
+ break;
+ }
+ }
+ else {
+ log_error("No data available for the device: %s\n", id.c_str());
+ data = new Data(0);
}
-
dev = new DeviceData(id, type, name, state, data);
ret_val->push_back(dev);
}