X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FW1Device.cc;h=f2e85902c0c6e3afa1b75085beda15e5ba27c063;hb=557fe3a639d7bd6fd146fdc9d573cf53bb2adff0;hp=37a02bafaa9c7647118bdef68237590b46936ce2;hpb=da203ad44792ca37320768f4cbe68587c4806910;p=lib1wire.git diff --git a/src/W1Device.cc b/src/W1Device.cc index 37a02ba..f2e8590 100644 --- a/src/W1Device.cc +++ b/src/W1Device.cc @@ -12,18 +12,19 @@ #include #include -#include "DeviceConfig.hh" +#include +#include + #include "Factory.hh" -#include "StoreDay.hh" #include "W1Device.hh" using namespace std; using namespace w1; using namespace plp; -W1Device::W1Device(string device_type_param, - string device_id_param, - dirent *direntry_param) { +W1Device::W1Device(string device_id_param, + string device_type_param, + dirent *direntry_param) : SensorDevice(device_id_param, device_type_param) { string rootdir; string device_dir; string temp_str; @@ -41,22 +42,20 @@ W1Device::W1Device(string device_type_param, else { lifecycle_status = LIFECYCLE_STATUS__UNAVAILABLE; } - name = ""; + reader = new DataReader(id); + name = ""; } W1Device::~W1Device() { save_and_clean_cache(); -} - -string W1Device::get_id() { - return id; + delete(reader); } string W1Device::get_name() { DeviceConfig *cfg; if (name.empty() == true) { - cfg = Factory::get_device_config(id); + cfg = DeviceConfig::get_device_config(id); if (cfg != NULL) { name = cfg->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__NAME); delete(cfg); @@ -68,11 +67,13 @@ string W1Device::get_name() { void W1Device::set_name(string name_param) { DeviceConfig *cfg; - name = name_param; - cfg = Factory::get_device_config(id); - if (cfg != NULL) { - cfg->set_cfg_value(DEVICE_CONFIG_VALUE_KEY__NAME, name_param); - delete(cfg); + if (name.compare(name_param) != 0) { + name = name_param; + cfg = DeviceConfig::get_device_config(id); + if (cfg != NULL) { + cfg->set_cfg_value(DEVICE_CONFIG_VALUE_KEY__NAME, name_param); + delete(cfg); + } } } @@ -88,9 +89,9 @@ void W1Device::printout() { cout << text << endl; } else { - type = get_device_type(); + type = get_type(); name = get_name(); - log_error("Could not data for %s device: %s\n", type.c_str(), name.c_str()); + log_error("Could not read data for %s device: %s\n", type.c_str(), name.c_str()); } } @@ -107,12 +108,21 @@ Data *W1Device::get_data() { Data *ret_val; vector *vect; + log_debug("get_data() started\n"); ret_val = NULL; vect = get_raw_data(); if (vect != NULL) { + log_debug("get_data() got raw data\n"); ret_val = new Data(vect, get_unit()); cache(ret_val); delete(vect); + log_debug("get_data() got raw data done\n"); + } + else { + log_debug("get_data() try to read old already saved data\n"); + // read old data already saved + ret_val = reader->get_latest_data(); + log_debug("get_data() try to read old already saved data done\n"); } return ret_val; } @@ -140,16 +150,5 @@ void W1Device::save_and_clean_cache() { } DataReader *W1Device::get_device_data() { - string id; - - id = get_id(); - return new DataReader(id); -} - -EnumDeviceLifeCycleStatus W1Device::get_lifecycle_state() { - return lifecycle_status; -} - -string W1Device::get_device_type() { - return type; + return reader; }