-W1TemperatureSensor::W1TemperatureSensor(dirent *direntry, int family_code_param, string id_param): W1Device(direntry, family_code_param, id_param) {
+template <class NumberDataType>
+bool string_to_number(NumberDataType& result,
+ const std::string& string_param,
+ std::ios_base& (*format)(std::ios_base&))
+{
+ std::istringstream iss(string_param);
+ return !(iss >> format >> result).fail();
+}
+
+string convert_celcius_value_to_three_digits(string raw_value) {
+ string ret_val;
+ int int_val;
+ bool suc_flg;
+ double dbl_val;
+
+ suc_flg = string_to_number<double>(dbl_val, raw_value, dec);
+ if (suc_flg == true) {
+ dbl_val = dbl_val / 1000;
+ std::ostringstream out;
+ out << fixed << setprecision(3) << dbl_val;
+ ret_val = out.str();
+ }
+ else {
+ ret_val = raw_value;
+ }
+ return ret_val;
+}
+
+W1TemperatureSensor::W1TemperatureSensor(dirent *direntry,
+ int family_code_param,
+ string id_param): W1Device(direntry, family_code_param, id_param) {
+ log_debug("trying to open file: %s\n", slave_file.c_str());