]> pilppa.org Git - libplpdevicebus.git/blobdiff - src_client/DeviceManagerClient.cc
implement method for getting data between dates
[libplpdevicebus.git] / src_client / DeviceManagerClient.cc
index 2ef02eef55af04fbc92f058008423da5ad3b74a4..bacbdb49c408a68a8a29e2cea25b885b53e131b9 100644 (file)
@@ -151,7 +151,7 @@ void DeviceManagerClient::parse_device_data_msg(BusMessage *msg_param,
                }
                if (data != NULL) {
                        result->add(data);
-                       log_debug("%s\n", description.c_str());
+                       //log_debug("%s\n", description.c_str());
                        data->printout();
                        delete(data);
                }
@@ -197,7 +197,7 @@ Data *DeviceManagerClient::get_latest_data(BusClient *client_param,
        return ret_val;
 }
 
-DataRange *DeviceManagerClient::parse_data_range_msg(BusMessage *msg_param,
+DataRange *DeviceManagerClient::parse_first_and_last_data_msg(BusMessage *msg_param,
                                                int *err_flg) {
        DataRange       *ret_val;
 
@@ -212,6 +212,39 @@ DataRange *DeviceManagerClient::parse_data_range_msg(BusMessage *msg_param,
        return ret_val;
 }
 
+DataRange *DeviceManagerClient::parse_data_range_msg(BusMessage *msg_param,
+                                               int *err_flg) {
+       DataRange       *ret_val;
+       int             ii;
+       int             count;
+       string          data_str;
+       string          key_str;
+       string          desc_str;
+       ostringstream   key;
+       ostringstream   desc;
+
+       *err_flg        = PLP_ERR;
+       ret_val         = NULL;
+       if (msg_param != NULL) {
+               ret_val         = new DataRange();
+               count   = msg_param->get_int_parameter(RSP__COUNT, err_flg);
+               //unit  = msg_param->get_string_parameter(RSP__DATA_UNIT, err_flg);
+               for (ii = 0; ii < count; ii++) {
+                       key.str("");
+                       key << RSP__DATA_VALUE << ii;
+                       desc.str("");
+                       desc << "value_" << ii;
+                       parse_device_data_msg(msg_param,
+                                       ret_val,
+                                       key.str(),
+                                       err_flg,
+                                       desc.str());
+               }
+               *err_flg        = PLP_OK;
+       }
+       return ret_val;
+}
+
 DataRange *DeviceManagerClient::get_data_range(BusClient *client_param,
                                        string device_id_param,
                                        int *err_flg) {
@@ -222,7 +255,30 @@ DataRange *DeviceManagerClient::get_data_range(BusClient *client_param,
        msg_rsp = NULL;
        ret_val = NULL;
        msg_req = new BusMessage(MSG_TYPE_ID__GET_DATA_RANGE);
-       msg_req->add_string_parameter(REQ__DEVICE_ID, device_id_param.c_str());
+       msg_req->add_string_parameter(REQ__DEVICE_ID, device_id_param);
+       client_param->send_message_and_wait_response(msg_req, &msg_rsp);
+       ret_val = parse_first_and_last_data_msg(msg_rsp, err_flg);
+       delete(msg_req);
+       delete(msg_rsp);
+
+       return ret_val;
+}
+
+DataRange *DeviceManagerClient::get_data(BusClient *client_param,
+                                       string device_id_param,
+                                       Date *start_date,
+                                       Date *end_date,
+                                       int *err_flg) {
+       BusMessage      *msg_req;
+       BusMessage      *msg_rsp;
+       DataRange       *ret_val;
+
+       msg_rsp = NULL;
+       ret_val = NULL;
+       msg_req = new BusMessage(MSG_TYPE_ID__GET_DATA_BETWEEN_DATES);
+       msg_req->add_string_parameter(REQ__DEVICE_ID, device_id_param);
+       msg_req->add_string_parameter(REQ__DATE1, start_date->to_string());
+       msg_req->add_string_parameter(REQ__DATE2, end_date->to_string());
        client_param->send_message_and_wait_response(msg_req, &msg_rsp);
        ret_val = parse_data_range_msg(msg_rsp, err_flg);
        delete(msg_req);