]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Device.cc
W1Store --> Store...
[lib1wire.git] / src / W1Device.cc
index 7bb44183c489287c846d95487dbafa44abe25773..429a5e822baacb581aa17bcf9bf5c3b10ee4aee5 100644 (file)
 #include <time.h>
 #include <plp/log.h>
 
-#include "W1Store.hh"
+#include "DeviceConfig.hh"
+#include "Factory.hh"
+#include "Store.hh"
 #include "W1Device.hh"
 
-using namespace w1;
 using namespace std;
+using namespace w1;
+using namespace plp;
 
 W1Device::W1Device(int family_code_param,
                string device_id_param,
@@ -32,10 +35,18 @@ W1Device::W1Device(int family_code_param,
        log_debug("w1 data file: %s\n", slave_file.c_str());
        family_code     = family_code_param;
        id              = device_id_param;
-       name            = device_id_param;
+       name            = "";
 }
 
 W1Device::~W1Device() {
+       list<Data *>::iterator  iter;
+       Data                    *data;
+
+       for(iter = memory_cache.begin(); iter != memory_cache.end(); iter++) {
+               data    = (Data *)*iter;
+               delete(data);
+       }
+       memory_cache.clear();
 }
 
 int W1Device::get_w1_family_code() {
@@ -47,24 +58,27 @@ string W1Device::get_id() {
 }
 
 string W1Device::get_name() {
+       DeviceConfig    *cfg;
+
+       if (name.empty() == true) {
+               cfg     = Factory::get_device_config(id);
+               if (cfg != NULL) {
+                       name    = cfg->get_cfg_value("name");
+                       delete(cfg);
+               }
+       }
        return name;
 }
 
 void W1Device::set_name(string name_param) {
-       name    = name_param;
-}
-
-string W1Device::get_time() {
-       time_t          wtime;
-       struct tm       *ltime;
-       char            buffer[80];
-       string          ret_val;
+       DeviceConfig    *cfg;
 
-       time(&wtime);
-       ltime   = localtime(&wtime);
-       strftime(buffer, 80, "%Y-%m-%d %H:%M:%S", ltime);
-       ret_val = buffer;
-       return ret_val;
+       name    = name_param;
+       cfg     = Factory::get_device_config(id);
+       if (cfg != NULL) {
+               cfg->set_cfg_value("name", name_param);
+               delete(cfg);
+       }
 }
 
 void W1Device::printout() {
@@ -105,16 +119,6 @@ Data *W1Device::get_and_collect_data() {
        return ret_val;
 }
 
-/*
-Data *W1Device::get_formatted_data(Data *data) {
-       Data    *ret_val;
-
-       ret_val = get_time() + "|" + raw_data + " " + get_unit();
-       add_to_save_fifo(ret_val);
-       return ret_val;
-}
-*/
-
 void W1Device::collect_data(Data *data) {
        // TODO: add mutex for memory_cache
        memory_cache.push_back(data);
@@ -123,8 +127,10 @@ void W1Device::collect_data(Data *data) {
 void W1Device::save_data() {
        list<Data *>::iterator  iter;
        Data                    *data;
+       int                     dec_precision;
 
-       W1Store::save(id, &memory_cache);
+       dec_precision   = get_data_decimal_precision();
+       Store::save(id, &memory_cache, dec_precision);
        for(iter = memory_cache.begin(); iter != memory_cache.end(); iter++) {
                data    = (Data *)*iter;
                delete(data);