]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Device.hh
sensor data read fixes.
[lib1wire.git] / src / W1Device.hh
index 190e36ea81b6f5e8842c728843a0ed10cd262e52..a9303030859cc5c0713ca48259f2cab36f4129b9 100644 (file)
@@ -8,9 +8,16 @@
 #ifndef W1DEVICE_HH_
 #define W1DEVICE_HH_
 
+#include <string>
+#include <list>
+
 #include <dirent.h>
 #include <stdbool.h>
-#include <string>
+
+#include <plp/Data.hh>
+#include <plp/DataReader.hh>
+#include <plp/SensorDevice.hh>
+#include <plp/Device.hh>
 
 #ifndef W1_SCAN_ROOTDIR
 #define W1_SCAN_ROOTDIR                "/sys/bus/w1/devices"
 #endif
 
 namespace w1 {
-       class W1Device {
+       class W1Device : public plp::SensorDevice {
                public:
-                       W1Device(dirent *direntry, int family_code_param, std::string id_param);
+                       W1Device(std::string device_id_param,
+                               std::string device_type_param,
+                               dirent *direntry_param);
                        virtual ~W1Device();
-                       int get_family_code();
-                       std::string get_id();
                        std::string get_name();
-                       virtual void printout();
                        void set_name(std::string name_param);
-                       virtual std::string get_value() = 0;
-                       virtual std::string get_unit() = 0;
-                       std::string get_time();
+                       void printout();
+                       plp::Data *get_data();
+                       plp::DataReader *get_device_data();
                protected:
-                       virtual bool is_supported_family_code(int family_code) = 0;
-                       int     family_code;
-                       std::string id;
-                       std::string name;
                        std::string dir_path;
                        std::string slave_file;
-               private:
+                       std::list<plp::Data *> memory_cache;
+                       plp::DataReader *reader;
+                       void save_and_clean_cache();
+                       virtual std::vector<double> *get_raw_data() = 0;
+                       virtual unsigned int get_data_decimal_precision() = 0;
+                       void cache(plp::Data *data);
+                       std::string to_string(double val, int digit_count);
        };
 }