X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FFactory.cc;h=b10c3eaa46342ec9e5d3def1b9fe2fbd16f9a866;hb=af341b7dfafac0912f513879565ebd856aa77915;hp=c8dc6949f957fe6f1c71b7e8f15338ad26d32eba;hpb=d01194ab9275bc97176071089edc2781bb4de51b;p=lib1wire.git diff --git a/src/Factory.cc b/src/Factory.cc index c8dc694..b10c3ea 100644 --- a/src/Factory.cc +++ b/src/Factory.cc @@ -53,6 +53,9 @@ W1Device *Factory::get_device(int family_code, case 0x1d: ret_val = new W1CounterDevice(family_code, device_id, direntry_param); break; + case 0x81: + // 0x81 is the 1-wire USB dongle... No need to create device for it. + break; default: log_debug("Unsupported 1-wire-family code: %#x, device not created: %s\n", family_code, device_id.c_str()); break; @@ -75,7 +78,7 @@ W1Device *Factory::get_device(int family_code, return ret_val; } -W1Device *Factory::create_device(dirent *direntry_param) { +W1Device *Factory::create_device(dirent *direntry_param, int *err_code_param) { string folder_name; string tmp_str; string device_name; @@ -85,18 +88,26 @@ W1Device *Factory::create_device(dirent *direntry_param) { W1Device *ret_val; ret_val = NULL; + *err_code_param = 0; folder_name = direntry_param->d_name; pos = folder_name.find("-"); if (pos > 0) { tmp_str = folder_name.substr(0, pos); // number in string is in hex format, convert to int suc_flg = string_to_number(family_code, tmp_str, hex); - if (suc_flg == true) { - log_debug("1-wire device family code: %#x\n", family_code); - device_name = folder_name.substr(pos + 1, folder_name.length() - pos); - ret_val = Factory::get_device(family_code, - device_name, - direntry_param); + // if family code = 0x81 (1-wire usb dongle), do not try to create the device + if (family_code != 0x81) { + if (suc_flg == true) { + log_debug("1-wire device family code: %#x\n", family_code); + device_name = folder_name.substr(pos + 1, folder_name.length() - pos); + ret_val = Factory::get_device(family_code, + device_name, + direntry_param); + if ((ret_val == NULL) && + (family_code != 0x81)) { + *err_code_param = 1; + } + } } } return ret_val; @@ -116,12 +127,15 @@ list Factory::get_device_list() { while(direntry != NULL) { is_subdir = W1Util::is_subdirectory(W1_SCAN_ROOTDIR, direntry); if (is_subdir == true) { - device = create_device(direntry); + err_flg = 0; + device = create_device(direntry, &err_flg); if (device != NULL) { ret_val.push_back(device); } else { - log_info("Unsupported 1-wire device detected: %s\n", direntry->d_name); + if (err_flg != 0) { + log_info("Unsupported 1-wire device detected: %s\n", direntry->d_name); + } } } direntry = readdir(dir);