]> pilppa.org Git - lib1wire.git/blobdiff - src/W1Scanner.cc
Initial support for reading and writing device specific config data.
[lib1wire.git] / src / W1Scanner.cc
index 390c2510576f4267747b6ef5064d76a1b4bd93ae..d40108e2bc32d1b89bd21d813ff6c7175cd004f2 100644 (file)
@@ -18,6 +18,7 @@
 #include "W1Scanner.hh"
 #include "W1TemperatureSensor.hh"
 #include "W1CounterDevice.hh"
+#include "Factory.hh"
 
 using namespace w1;
 using namespace std;
@@ -38,7 +39,7 @@ W1Scanner::W1Scanner() {
 W1Scanner::~W1Scanner() {
 }
 
-W1Device *W1Scanner::create_device(dirent *direntry) {
+W1Device *W1Scanner::create_device(dirent *direntry_param) {
        string          folder_name;
        string          tmp_str;
        string          device_name;
@@ -48,7 +49,7 @@ W1Device *W1Scanner::create_device(dirent *direntry) {
        W1Device        *ret_val;
 
        ret_val         = NULL;
-       folder_name     = direntry->d_name;
+       folder_name     = direntry_param->d_name;
        pos             = folder_name.find("-");
        if (pos > 0) {
                tmp_str = folder_name.substr(0, pos);
@@ -57,20 +58,9 @@ W1Device *W1Scanner::create_device(dirent *direntry) {
                if (suc_flg == true) {
                        log_debug("family_code: %d\n", family_code);
                        device_name     = folder_name.substr(pos + 1, folder_name.length() - pos);
-                       switch(family_code) {
-                               case    0x10:
-                               case    0x28:
-                                       ret_val = new W1TemperatureSensor(direntry, family_code, device_name);
-                                       log_debug("temperature sensor: %d\n", ret_val->get_family_code());
-                                       break;
-                               case    0x1d:
-                                       log_debug("counter device: %d\n", family_code);
-                                       ret_val = new W1CounterDevice(direntry, family_code, device_name);
-                                       break;
-                               default:
-                                       log_debug("device not created the device, unsupported device type: %d\n", family_code);
-                                       break;
-                       }
+                       ret_val         = Factory::get_device(family_code,
+                                                       device_name,
+                                                       direntry_param);
                }
        }
        return ret_val;