/* * W1CounterDevice.cc * * Created on: Oct 30, 2010 * Author: lamikr */ #include #include #include #include #include #include "W1CounterDevice.hh" using namespace std; using namespace w1; template 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(); } W1CounterDevice::W1CounterDevice(int family_code_param, string device_id_param, dirent *direntry_param): W1Device(family_code_param, device_id_param, direntry_param) { string text; ifstream ifs(slave_file.c_str()); if (ifs.is_open() == true) { text = get_time() + ": device type = " + get_device_type() + ", id = " + id + ", could not read file: " + slave_file; cout << text << endl; cout << "verify that you have w1_ds2423 kernel module loaded." << endl; ifs.close(); } } W1CounterDevice::~W1CounterDevice() { // TODO Auto-generated destructor stub } bool W1CounterDevice::is_supported_w1_family_code(int family_code) { bool ret_val; ret_val = false; switch(family_code) { case 0x1d: ret_val = true; break; } return ret_val; } vector *W1CounterDevice::get_raw_data() { int pos; int b_cnt; string val_str; int val_dbl; vector *ret_val; ret_val = NULL; ifstream ifs(slave_file.c_str()); if (ifs.is_open() == true) { while(getline(ifs, val_str)) { b_cnt = val_str.length(); if (b_cnt > 0) { pos = val_str.find("crc=YES c="); if ((pos >= 0) && ((pos + 10) < b_cnt)) { if (ret_val == NULL) { ret_val = new vector(); } val_str = val_str.substr(pos + 10); string_to_number(val_dbl, val_str, dec); ret_val->push_back(val_dbl); } } } ifs.close(); } return ret_val; } string W1CounterDevice::get_unit() { return ""; } string W1CounterDevice::get_device_type() { return "Counter Device"; }