/* * DeviceConfig.hh * * Created on: Dec 9, 2010 * Author: lamikr */ #ifndef DEVICECONFIG_HH_ #define DEVICECONFIG_HH_ #include extern "C" { #include #include } 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 "device_cfg" #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, const char *short_fname_param, const char *full_fname_param); ~ConfigHandle(); struct uci_context *_ctx; struct uci_package *_pkg; char *short_fname; char *full_fname; }; 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 long get_read_interval_seconds(); static void set_read_interval_seconds(long seconds_param); static DeviceConfig *get_device_config(std::string device_id); std::string get_config_value(std::string key); void set_config_value(std::string key, std::string value); EnumSummaryCalculationType get_summary_calculation_type(); private: static std::string store_base_dir; static long read_interval_seconds; 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_ */