]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Device.cc
Initial support for reading and writing device specific config data.
[lib1wire.git] / src / W1Device.cc
index 7f52c43f5795341c5943eb8610c5fd71f43d96a4..467a3359685eb7a432ee606259684fe4d79e687b 100644 (file)
@@ -8,26 +8,29 @@
 #include <fstream>
 
 #include <time.h>
+#include <plp/log.h>
 
+#include "W1Store.hh"
 #include "W1Device.hh"
 
 using namespace w1;
 using namespace std;
 
-W1Device::W1Device(dirent *direntry,
-               int family_code_param,
-               string id_param) {
+W1Device::W1Device(int family_code_param,
+               string device_id_param,
+               dirent *direntry_param) {
        string rootdir;
        string device_dir;
        string temp_str;
 
        rootdir         = W1_SCAN_ROOTDIR;
        temp_str        = W1_SLAVE_FILE;
-       dir_path        = rootdir + "/" + direntry->d_name;
+       dir_path        = rootdir + "/" + direntry_param->d_name;
        slave_file      = dir_path + "/" + temp_str;
+       log_debug("w1 data file: %s\n", slave_file.c_str());
        family_code     = family_code_param;
-       id              = id_param;
-       name            = id_param;
+       id              = device_id_param;
+       name            = device_id_param;
 }
 
 W1Device::~W1Device() {
@@ -65,21 +68,24 @@ string W1Device::get_time() {
 void W1Device::printout() {
        string text;
 
-       text    = get_formatted_data();
+       text    = get_formatted_value();
        cout << text << endl;
 }
 
-string W1Device::get_formatted_data() {
+string W1Device::get_formatted_value() {
        string ret_val;
+       string val;
 
-       ret_val = get_formatted_data(get_value());
+       val     = get_raw_value();
+       ret_val = get_formatted_value(val);
        return ret_val;
 }
 
-string W1Device::get_formatted_data(string value) {
+string W1Device::get_formatted_value(string value) {
        string ret_val;
 
-       ret_val = get_time() + ": device type = " + get_devicetype_name() + ", id = " + id + ", value = " + value + " " + get_unit();
+       ret_val = get_time() + "|" + get_device_type() + "|" + id + "|" + value + " " + get_unit();
+       add_to_memory_cache(ret_val);
        return ret_val;
 }
 
@@ -89,24 +95,5 @@ void W1Device::add_to_memory_cache(std::string formatted_data) {
 }
 
 void W1Device::store() {
-       string file_path = "/tmp/" + id + ".txt";
-       string text_line;
-       ofstream data_file(file_path.c_str(), ios::app);
-
-       cout << "storing to " << file_path << "data size " << memory_cache.size() << endl;
-       // TODO: add mutex to protect memory_cache while it's read and emptied
-       if (data_file.is_open()) {
-               while(memory_cache.size() > 0) {
-                       text_line       = memory_cache.front();
-                       memory_cache.pop_front();
-                       if (text_line.length() > 0) {
-                               cout << "storing line: " << text_line << endl;
-                               data_file << text_line << endl;
-                       }
-               }
-               data_file.close();
-       }
-       else {
-               cout << "could not open file " << file_path << " for writing data." << endl;
-       }
+       W1Store::store(id, &memory_cache);
 }