2016-05-13 6 views
1

最終的な目標は、ワイヤレス接続のセットアップに失敗した理由を教えてくれるモジュールを作成することです。node.jsのwpa_supplicantインターフェイスのリストを取得する

現在、node-dbusモジュールを使用してwlan0インターフェイスにアクセスしようとしています。 wpa_supplicantはwlan0を認識していないと伝えている。

'wpa_supplicantはこのインターフェースについて何も知らない。'

ご意見やご提案は大変ありがとうございます。

コード:

var dbus = require('dbus-native'); 
var util = require('util'); 

var bus = dbus.systemBus(); 
var wpas = bus.getService('fi.w1.wpa_supplicant1'); 

var wpai = wpas.getInterface('/fi/w1/wpa_supplicant1' 
    , 'fi.w1.wpa_supplicant1', function (err, iface) { 
     //console.log(err, iface); 

     iface.on('PropertiesChanged', function(dict) { 
      console.log('interface properties have changed!'); 
      console.log(dict); 
     }); 

     iface.on('InterfaceAdded', function(path, dict) { 
      console.log('interface has been added!'); 
      console.log(path, dict); 
     }); 

     iface.on('InterfaceRemoved', function(path) { 
      console.log('interface has been removed!'); 
      console.log(path); 
     }); 

     iface.GetInterface('wlan0', function (err, iface2) { 
      console.log(err, iface2); 
     }); 

     console.log(util.inspect(iface, true, 3)); 

    }); 

アップデート1:

私は、インタフェースの特性を調べるためにDバスのプロパティのAPIを使用し、プロパティ自体がnullであることを発見しました。

wpas.getInterface('/fi/w1/wpa_supplicant1', 'org.freedesktop.DBus.Properties', function(err, device) { 
       device.GetAll('fi.w1.wpa_supplicant1', function(err, prop) { 
        var props = arrToMap(prop); 
        console.log(err,props); 
       }); 
      }); 

function arrToMap(arr) { 
    var output = {}; 
    for (var i = 0; i < arr.length; i++) { 
     output[arr[i][0]] = arr[i][1][1][0]; 
    } 
    return output; 
} 

唯一の結論は、wpa_supplicantがdbusに新しいインターフェイスを登録しないことです。

(私はターミナルコマンドを使用してwpa_supplicantのを使用して、私のwlan0を設定することを確保しています)

答えて

1

私は約束を使用して、上記のコードを書き換えることで、私の問題を解決するために管理。 上記のGetInterfaceはwpa_supplicantアダプタのみを返すことに注意することも重要です。

実際のwlan0インターフェイスを取得するには、GetInterfaceでこのオブジェクトを追加呼び出しする必要があります。 /実行/ wpa_supplicantの/ wlan0(もしあれば)

:「wpa_supplicantのは、このインターフェイスをつかむことができない」

誰もがエラーに実行する必要がでwlan0ファイルを削除してみてください

関連する問題