}
}
-void decode_data_range_to_busmessage(const BusMessage *ret_val,
- DataRange *dr) {
+void decode_first_and_last_data_to_busmessage(const BusMessage *ret_val,
+ DataRange *dr) {
Data *data;
data = dr->get_first();
}
}
+void decode_data_range_to_busmessage(const BusMessage *ret_val,
+ DataRange *dr) {
+ Data *data;
+ int ii;
+ int count;
+ ostringstream key;
+
+ count = dr->get_count();
+ ((BusMessage *)ret_val)->add_int_parameter(RSP__COUNT, count);
+ for (ii = 0; ii < count; ii++) {
+ data = dr->get(ii);
+ if (data != NULL) {
+ key.str("");
+ key << RSP__DATA_VALUE << ii;
+ add_data_values_to_bus_message(ret_val,
+ data,
+ key.str());
+ delete(data);
+ }
+ }
+}
+
void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param,
const BusMessage *ret_val) {
string id;
reader = sensor->get_datareader();
if (reader != NULL) {
dr = ((DataReader *)reader)->get_data_range();
+ if (dr != NULL) {
+ decode_first_and_last_data_to_busmessage(ret_val, dr);
+ delete(dr);
+ }
+ }
+ }
+ }
+ }
+}
+
+void DeviceManagerServer::get_data_between_dates(BusMessage *msg_req_param,
+ const BusMessage *ret_val) {
+ string id;
+ int err_flg;
+ Device *dev;
+ SensorDevice *sensor;
+ ostringstream key;
+ const DataReader *reader;
+ DataRange *dr;
+ string startdate_str;
+ string enddate_str;
+ Date sdate;
+ Date edate;
+
+ log_debug("started\n");
+ id = msg_req_param->get_string_parameter(REQ__DEVICE_ID, &err_flg);
+ if (err_flg == PLP_OK)
+ startdate_str = msg_req_param->get_string_parameter(REQ__DATE1, &err_flg);
+ if (err_flg == PLP_OK)
+ enddate_str = msg_req_param->get_string_parameter(REQ__DATE2, &err_flg);
+ log_debug("id: %s, sdate: %s, edate: %s\n", id.c_str(), startdate_str.c_str(), enddate_str.c_str());
+ if (err_flg == PLP_OK) {
+ sdate = Date::parse_date_str(startdate_str);
+ edate = Date::parse_date_str(enddate_str);
+ log_debug("id: %s, sdate: %s, edate: %s\n", id.c_str(), startdate_str.c_str(), enddate_str.c_str());
+ dev = (Device *)get_device_by_id(id);
+ if (dev != NULL) {
+ sensor = dynamic_cast<SensorDevice *>(dev);
+ if (sensor != NULL) {
+ reader = sensor->get_datareader();
+ if (reader != NULL) {
+ dr = ((DataReader *)reader)->get_data(&sdate, &edate);
+ log_debug("dr.size: %d\n", dr->get_count());
if (dr != NULL) {
decode_data_range_to_busmessage(ret_val, dr);
delete(dr);
}
}
}
+ else {
+ log_error("Invalid request parameters.\n");
+ }
}