2010年7月14日 星期三

Wifi模塊的初始化(轉貼)

二:Wifi模塊的初始化:


在 SystemServer 啟動的時候,會生成一個ConnectivityService 的實例,



try {
Log.i(TAG, "Starting Connectivity Service.");
ServiceManager.addService(Context.CONNECTIVITY_SERVICE, new
ConnectivityService(context));
} catch (Throwable e) {
Log.e(TAG, "Failure starting Connectivity Service", e);
}



ConnectivityService 的構造函數會創建WifiService,


if (DBG) Log.v(TAG, "Starting Wifi Service.");
mWifiStateTracker = new WifiStateTracker(context, handler);
WifiService wifiService = new WifiService(context, mWifiStateTracker);
ServiceManager.addService(Context.WIFI_SERVICE, wifiService);



WifiStateTracker 會創建WifiMonitor 接收來自底層的事件,WifiService 和WifiMonitor 是整
個模塊的核心。WifiService 負責啟動關閉wpa_supplicant、啟動關閉WifiMonitor 監視線程
和把命令下發給wpa_supplicant,而WifiMonitor 則負責從wpa_supplicant 接收事件通知。


具體流程圖如下:

沒有留言:

張貼留言