/* * Factory.cc * * Created on: Dec 11, 2010 * Author: lamikr */ #include #include "Factory.hh" #include "W1TemperatureSensor.hh" #include "W1CounterDevice.hh" using namespace w1; using namespace std; Factory::Factory() { // TODO Auto-generated constructor stub } Factory::~Factory() { // TODO Auto-generated destructor stub } W1Device *Factory::get_device(int family_code, string device_id, dirent *direntry_param) { W1Device *ret_val; DeviceConfig *config; ret_val = NULL; log_debug("family_code: %d\n", family_code); switch(family_code) { case 0x10: case 0x28: ret_val = new W1TemperatureSensor(family_code, device_id, direntry_param); log_debug("temperature sensor: %d\n", ret_val->get_family_code()); break; case 0x1d: ret_val = new W1CounterDevice(family_code, device_id, direntry_param); log_debug("counter device: %d\n", family_code); break; default: log_debug("device not created, unsupported device type: %d\n", family_code); break; } if (ret_val != NULL) { // check that device config exist // if not, create default... config = get_device_config(device_id); if (config != NULL) { string type; type = config->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__TYPE); if (type.empty() == true) { type = ret_val->get_device_type(); config->set_cfg_value(DEVICE_CONFIG_VALUE_KEY__TYPE, type); config->set_cfg_value(DEVICE_CONFIG_VALUE_KEY__ID, ret_val->get_id()); } } } return ret_val; } DeviceConfig *Factory::get_device_config(string device_id) { DeviceConfig *ret_val; ret_val = new DeviceConfig(device_id); return ret_val; }