X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src_server%2FDeviceManagerServer.cc;fp=src_server%2FDeviceManagerServer.cc;h=3eb8a0106526a191691584934f7c2f11ad78f89c;hb=5cb22566f978007d9cb037032e2fc2d0affc9199;hp=d83accb671f6d4c06c786ce09b868ab5801844fe;hpb=569cc4f7781fe28fa1c94efc6c3f24f31c37f522;p=libplpdevicebus.git diff --git a/src_server/DeviceManagerServer.cc b/src_server/DeviceManagerServer.cc index d83accb..3eb8a01 100644 --- a/src_server/DeviceManagerServer.cc +++ b/src_server/DeviceManagerServer.cc @@ -65,49 +65,59 @@ DeviceManagerServer::DeviceManagerServer(list dev_lst_param) { DeviceManagerServer::~DeviceManagerServer() { } +void decode_device_to_busmessage(const BusMessage *ret_val, + Device *device, + int indx) { + ostringstream key; + SensorDevice *sensor; + Data *data; + string data_str; + + if ((ret_val != NULL) && + (device != NULL)) { + key.str(""); + key << RSP__DEVICE_LIST__ID << indx; + ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_id()); + + key.str(""); + key << RSP__DEVICE_LIST__NAME << indx; + ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_name()); + + key.str(""); + key << RSP__DEVICE_LIST__TYPE << indx; + ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_type()); + + key.str(""); + key << RSP__DEVICE_LIST__LF_STATE << indx; + ((BusMessage *)ret_val)->add_int_parameter(key.str(), device->get_lifecycle_state()); + sensor = dynamic_cast(device); + if (sensor != NULL) { + key.str(""); + key << RSP__DEVICE_LIST__DATA << indx; + data = sensor->get_data(); + if (data != NULL) { + data_str = data->to_string(); + log_debug("returning data: %s\n", data_str.c_str()); + ((BusMessage *)ret_val)->add_string_parameter(key.str(), data_str); + delete(data); + } + } + } +} + void DeviceManagerServer::get_device_list(const BusMessage *ret_val) { - Data *data; list::iterator list_iter; Device *device; - SensorDevice *sensor; int indx; - ostringstream key; - string data_str; indx = 0; ((BusMessage *)ret_val)->add_int_parameter(RSP__DEVICE_LIST__DEVICE_COUNT, _dev_lst.size()); for (list_iter = _dev_lst.begin(); list_iter != _dev_lst.end(); list_iter++) { device = (Device *)*list_iter; - if (device != NULL) { - key.str(""); - key << RSP__DEVICE_LIST__ID << indx; - ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_id()); - - key.str(""); - key << RSP__DEVICE_LIST__NAME << indx; - ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_name()); - - key.str(""); - key << RSP__DEVICE_LIST__TYPE << indx; - ((BusMessage *)ret_val)->add_string_parameter(key.str(), device->get_type()); - - key.str(""); - key << RSP__DEVICE_LIST__LF_STATE << indx; - ((BusMessage *)ret_val)->add_int_parameter(key.str(), device->get_lifecycle_state()); - sensor = dynamic_cast(device); - if (sensor != NULL) { - key.str(""); - key << RSP__DEVICE_LIST__DATA << indx; - data = sensor->get_data(); - if (data != NULL) { - data_str = data->to_string(); - log_debug("returning data: %s\n", data_str.c_str()); - ((BusMessage *)ret_val)->add_string_parameter(key.str(), data_str); - delete(data); - } - } - indx++; - } + decode_device_to_busmessage(ret_val, + device, + indx); + indx++; } } @@ -129,31 +139,60 @@ const Device *DeviceManagerServer::get_device_by_id(string id_param) { return ret_val; } -static void add_data_values_to_bus_message(const BusMessage *msg_rsp_param, Data *data, string key_name_base_param) { - int ii; - int cnt; - double val; - ostringstream key; +static void add_data_values_to_bus_message(const BusMessage *msg_rsp_param, + Data *data, + string key_name_base_param) { + string val_str; - cnt = data->get_value_count(); - for (ii = 0; ii < cnt; ii++) { - key.str(""); - key << key_name_base_param.c_str() << ii; - val = data->get(ii); - ((BusMessage *)msg_rsp_param)->add_double_parameter(key.str(), val); + val_str = data->to_string(); + ((BusMessage *)msg_rsp_param)->add_string_parameter(key_name_base_param, val_str); +} + +void decode_data_to_busmessage(const BusMessage *ret_val, + const DataReader *reader) { + DataRange *dr; + Data *data; + + data = ((DataReader *)reader)->get_latest_data(); + if (data != NULL) { + add_data_values_to_bus_message(ret_val, + data, + RSP__GET_LATEST_DATA__VALUE); + //((BusMessage *)ret_val)->printout(); + delete(data); + } + dr = ((DataReader *)reader)->get_daily_summary(MIN); + if (dr != NULL) { + if (dr->get_count() > 0) { + data = dr->get_first();; + add_data_values_to_bus_message(ret_val, + data, + RSP__GET_LATEST_DATA__MIN_VALUE); + delete(data); + } + delete(dr); + } + dr = ((DataReader *)reader)->get_daily_summary(MAX); + if (dr != NULL) { + if (dr->get_count() > 0) { + data = dr->get_first(); + add_data_values_to_bus_message(ret_val, + data, + RSP__GET_LATEST_DATA__MAX_VALUE); + delete(data); + } + delete(dr); } } -void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param, const BusMessage *ret_val) { +void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param, + const BusMessage *ret_val) { string id; int err_flg; Device *dev; SensorDevice *sensor; - Data *data; ostringstream key; - int cnt; const DataReader *reader; - DataRange *dr; id = msg_req_param->get_string_parameter(REQ__GET_LATEST_DATA__ID, &err_flg); if (err_flg == PLP_OK) { @@ -162,36 +201,7 @@ void DeviceManagerServer::get_latest_data(BusMessage *msg_req_param, const BusMe sensor = dynamic_cast(dev); if (sensor != NULL) { reader = sensor->get_device_data(); - data = ((DataReader *)reader)->get_latest_data(); - if (data != NULL) { - cnt = data->get_value_count(); - ((BusMessage *)ret_val)->add_int_parameter(RSP__GET_LATEST_DATA__VALUE_COUNT, cnt); - ((BusMessage *)ret_val)->add_string_parameter(RSP__GET_LATEST_DATA__DATE, - data->get_date().to_string()); - add_data_values_to_bus_message(ret_val, - data, RSP__GET_LATEST_DATA__VALUE); - ((BusMessage *)ret_val)->printout(); - dr = ((DataReader *)reader)->get_daily_summary(MIN); - if (dr != NULL) { - if (dr->get_count() > 0) { - data = dr->get_first()->clone();; - add_data_values_to_bus_message(ret_val, - data, - RSP__GET_LATEST_DATA__MIN_VALUE); - } - delete(dr); - } - dr = ((DataReader *)reader)->get_daily_summary(MAX); - if (dr != NULL) { - if (dr->get_count() > 0) { - data = dr->get_first()->clone(); - add_data_values_to_bus_message(ret_val, - data, - RSP__GET_LATEST_DATA__MAX_VALUE); - } - delete(dr); - } - } + decode_data_to_busmessage(ret_val, reader); } } }