dirent *direntry_param) {
W1Device *ret_val;
DeviceConfig *config;
+ string type;
ret_val = NULL;
switch(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;
config = get_device_config(device_id);
if (config != NULL) {
// if not, create default device config
- string type;
type = config->get_cfg_value(DEVICE_CONFIG_VALUE_KEY__TYPE);
if (type.empty() == true) {
type = ret_val->get_device_type();
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;
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<int>(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;
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);