]> pilppa.org Git - libplp.git/blobdiff - src/DeviceConfig.hh
w1 independent file cleanups.
[libplp.git] / src / DeviceConfig.hh
diff --git a/src/DeviceConfig.hh b/src/DeviceConfig.hh
new file mode 100644 (file)
index 0000000..90ff28d
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * DeviceConfig.hh
+ *
+ *  Created on: Dec 9, 2010
+ *      Author: lamikr
+ */
+
+#ifndef DEVICECONFIG_HH_
+#define DEVICECONFIG_HH_
+
+#include <string>
+
+extern "C" {
+       #include <uci.h>
+       #include "config.h"
+}
+
+enum EnumSummaryPeriod{PERIOD_YEARLY, PERIOD_MONTHLY, PERIOD_DAILY, PERIOD_HOURLY, PERIOD_MINUTELY, PERIOD_SECONDLY};
+enum EnumSummaryCalculationType {SUM, DELTA, MIN, MAX, MEAN};
+
+const std::string SUMMARY_PERIOD_NAMES_ARRAY[]         = {"yearly", "monthly", "daily", "minutely", "secondly"};
+const std::string CALCULATION_TYPE_NAMES_ARRAY[]       = {"sum", "delta", "min", "max", "mean"};
+
+#define DEVICE_CONFIG__FILE_NAME               "dev_cfg.txt"
+#define DEVICE_CONFIG__SECTION_TYPE            "device"
+#define DEVICE_CONFIG__SECTION_NAME            "base_data"
+#define DEVICE_CONFIG_VALUE_KEY__TYPE          "type"
+#define DEVICE_CONFIG_VALUE_KEY__ID            "id"
+#define DEVICE_CONFIG_VALUE_KEY__NAME          "name"
+
+#define DEFAULT_STORAGE_BASE_DIR               "/tmp/w1data"
+#define DATAFILE_SUFFIX                                ".txt"
+#define CACHE_DIR_NAME                         "cache"
+
+namespace plp {
+       struct ConfigHandle {
+               public:
+                       ConfigHandle(uci_context *ctx_param, uci_package *pkg_param);
+                       ~ConfigHandle();
+                       struct uci_context      *_ctx;
+                       struct uci_package      *_pkg;
+       };
+
+       class DeviceConfig {
+               public:
+                       DeviceConfig(std::string device_id_param);
+                       virtual ~DeviceConfig();
+                       static std::string get_base_dir_name();
+                       static void set_base_dir_name(std::string store_param);
+                       static DeviceConfig *get_device_config(std::string device_id);
+                       std::string get_cfg_value(std::string key);
+                       void set_cfg_value(std::string key, std::string value);
+                       EnumSummaryCalculationType get_summary_calculation_type();
+               private:
+                       static std::string      store_base_dir;
+                       std::string             device_id;
+                       std::string             device_type;
+                       ConfigHandle            *uci_handle;
+                       ConfigHandle *load_device_config(std::string device_id_param);
+                       std::string get_dir_name(std::string device_id);
+                       std::string get_file_name(std::string device_id_param);
+       };
+}
+
+#endif /* DEVICECONFIG_HH_ */