}
reader = new DataReader(id);
name = "";
+ _cfg = NULL;
}
W1Device::~W1Device() {
- log_debug("W1Device destructor\n");
+ log_debug("started\n");
save_and_clean_cache();
if (reader != NULL) {
delete(reader);
}
}
-string W1Device::get_name() {
- DeviceConfig *cfg;
-
+string Device::get_name() {
if (name.empty() == true) {
- cfg = DeviceConfig::get_device_config(id);
- if (cfg != NULL) {
- name = cfg->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__NAME);
- delete(cfg);
+ if (_cfg == NULL) {
+ _cfg = DeviceConfig::get_device_config(id);
+ }
+ if (_cfg != NULL) {
+ _cfg->get_config_value(DEVICE_CONFIG_VALUE_KEY__NAME, name);
}
}
return name;
}
-void W1Device::set_name(string name_param) {
- DeviceConfig *cfg;
-
+void Device::set_name(string name_param) {
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);
+ if (_cfg == NULL) {
+ _cfg = DeviceConfig::get_device_config(id);
+ }
+ if (_cfg != NULL) {
+ _cfg->set_config_value(DEVICE_CONFIG_VALUE_KEY__NAME, name_param, true);
}
}
}
Data *ret_val;
vector<double> *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");
+ log_debug("%s returning new data\n", id.c_str());
}
else {
- log_debug("get_data() try to read old already saved data\n");
- // read old data already saved
+ // read old already saved data
+ log_debug("%s returning old saved data\n", id.c_str());
ret_val = reader->get_latest_data();
- log_debug("get_data() try to read old already saved data done\n");
}
return ret_val;
}
dec_precision = get_data_decimal_precision();
pthread_mutex_lock(&plock);
- log_debug("save_and_clean_cache(): memory cache size: %d\n", memory_cache.size());
+ /* needs to be casted to long unsigned int value is "unsigned int" in some
+ toolchains and that would otherwise cause an warning/error
+ */
+ log_debug("memory cache size: %lu\n", (long unsigned int)memory_cache.size());
StoreDay::save(id, &memory_cache, dec_precision);
while(memory_cache.empty() == false) {
data = memory_cache.back();
pthread_mutex_unlock(&plock);
}
-const DataReader *W1Device::get_device_data() {
+const DataReader *W1Device::get_datareader() {
return reader;
}