]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Device.cc
add support for storing data to text file periodically
[lib1wire.git] / src / W1Device.cc
index 48f366db655a1d74bdf92d717b629a03e7e8c168..3160c81034e6e502b8526a5890c00226d5ebf2e7 100644 (file)
@@ -5,6 +5,8 @@
  *      Author: lamikr
  */
 #include <iostream>
+#include <fstream>
+
 #include <time.h>
 
 #include "W1Device.hh"
@@ -61,6 +63,48 @@ string W1Device::get_time() {
 void W1Device::printout() {
        string text;
 
-       text    = get_time() + ": device type = <unknown>, id = " + id + ", value = " + get_value();
+       text    = get_formatted_data();
        cout << text << endl;
 }
+
+string W1Device::get_formatted_data() {
+       string ret_val;
+
+       ret_val = get_formatted_data(get_value());
+       return ret_val;
+}
+
+string W1Device::get_formatted_data(string value) {
+       string ret_val;
+
+       ret_val = get_time() + ": device type = " + get_devicetype_name() + ", id = " + id + ", value = " + value + " " + get_unit();
+       return ret_val;
+}
+
+void W1Device::add_to_memory_cache(std::string formatted_data) {
+       // TODO: add mutex for memory_cache
+       memory_cache.push_back(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;
+       }
+}