X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FFactory.cc;h=76f1a1381ec2e626e1b5a8b4081d3ac03dab2d17;hb=9e569babf7e271015fedac3b7153d9035ff17ee0;hp=9d704b59e32b620489bd1174df32458a68e1c375;hpb=f280d6c6383f3642069fac8a490f827195619278;p=lib1wire.git diff --git a/src/Factory.cc b/src/Factory.cc index 9d704b5..76f1a13 100644 --- a/src/Factory.cc +++ b/src/Factory.cc @@ -78,7 +78,7 @@ string Factory::get_device_type_by_family_code(int family_code_param) { return ret_val; } -Device *Factory::create_w1_device(int family_code_param, +Device *Factory::create_device(int family_code_param, string device_id_param, dirent *direntry_param) { Device *ret_val; @@ -87,7 +87,7 @@ Device *Factory::create_w1_device(int family_code_param, ret_val = NULL; type = get_device_type_by_family_code(family_code_param); if (type.empty() == false) { - ret_val = create_w1_device(family_code_param, + ret_val = create_device(family_code_param, type, device_id_param, direntry_param); @@ -95,12 +95,13 @@ Device *Factory::create_w1_device(int family_code_param, return ret_val; } -Device *Factory::create_w1_device(int device_w1_family_code_param, +Device *Factory::create_device(int device_w1_family_code_param, string device_type_param, string device_id_param, dirent *direntry_param) { Device *ret_val; DeviceConfig *config; + bool succ; ret_val = NULL; if (device_type_param.empty() == false) { @@ -124,11 +125,11 @@ Device *Factory::create_w1_device(int device_w1_family_code_param, config = DeviceConfig::get_device_config(device_id_param); if (config != NULL) { // if not, create default device config - device_type_param = config->get_config_value(DEVICE_CONFIG_VALUE_KEY__TYPE); - if (device_type_param.empty() == true) { + succ = config->get_config_value(DEVICE_CONFIG_VALUE_KEY__TYPE, device_type_param); + if (succ == false) { device_type_param = ret_val->get_type(); - config->set_config_value(DEVICE_CONFIG_VALUE_KEY__TYPE, device_type_param); - config->set_config_value(DEVICE_CONFIG_VALUE_KEY__ID, ret_val->get_id()); + config->set_config_value(DEVICE_CONFIG_VALUE_KEY__TYPE, device_type_param, false); + config->set_config_value(DEVICE_CONFIG_VALUE_KEY__ID, ret_val->get_id(), true); } delete(config); } @@ -137,7 +138,7 @@ Device *Factory::create_w1_device(int device_w1_family_code_param, return ret_val; } -Device *Factory::create_w1_device(string device_type_param, +Device *Factory::create_device(string device_type_param, string device_id_param) { int family_code; Device *ret_val; @@ -146,13 +147,13 @@ Device *Factory::create_w1_device(string device_type_param, if (device_type_param.empty() == false) { family_code = get_family_code_by_device_type(device_type_param); if (family_code != -1) { - ret_val = create_w1_device(family_code, device_type_param, device_id_param, NULL); + ret_val = create_device(family_code, device_type_param, device_id_param, NULL); } } return ret_val; } -Device *Factory::create_w1_device(dirent *direntry_param, +Device *Factory::create_device(dirent *direntry_param, int *err_code_param) { string folder_name; string tmp_str; @@ -175,7 +176,7 @@ Device *Factory::create_w1_device(dirent *direntry_param, if (suc_flg == true) { log_debug("1-wire device family code: %#x\n", family_code); device_id = folder_name.substr(pos + 1, folder_name.length() - pos); - ret_val = Factory::create_w1_device(family_code, + ret_val = Factory::create_device(family_code, device_id, direntry_param); if ((ret_val == NULL) && @@ -213,7 +214,7 @@ list Factory::get_device_list() { is_subdir = FileUtil::is_subdirectory(W1_SCAN_ROOTDIR, direntry); if (is_subdir == true) { err_flg = 0; - device = create_w1_device(direntry, &err_flg); + device = create_device(direntry, &err_flg); if (device != NULL) { ret_val.push_back(device); } @@ -246,9 +247,9 @@ list Factory::get_device_list() { } if (found == false) { // reader device is not in the list of active devices. create and add it to list as in-active one... - type = reader->get_device_type(); - if (type.empty() == false) { - device = create_w1_device(type, id1); + found = reader->get_device_type(type); + if (found == true) { + device = create_device(type, id1); if (device != NULL) { ret_val.push_back(device); }