]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Device.cc
Moved files that were not w1 specific to libplp.
[lib1wire.git] / src / W1Device.cc
index 37a02bafaa9c7647118bdef68237590b46936ce2..a5f89dfc9f487c17df8e86adb02ec1c24fb1ac96 100644 (file)
 #include <time.h>
 #include <plp/log.h>
 
-#include "DeviceConfig.hh"
+#include <plp/DeviceConfig.hh>
+#include <plp/StoreDay.hh>
+
 #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());
        }
 }
 
@@ -114,6 +115,10 @@ Data *W1Device::get_data() {
                cache(ret_val);
                delete(vect);
        }
+       else {
+               // read old data already saved
+               ret_val = reader->get_latest_data();
+       }
        return ret_val;
 }
 
@@ -140,16 +145,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;
 }