ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2012年9月13日 星期四

Add a new entry in Settings. --- save and restore

系統啟動後,Wifi AP Config, restore 的動作好像是在WifiService 作的。

AP Config 好像是存成檔案,不是用 sql 存的。

WifiService 啟動的時候,在 生成函數 WifiService( ) 最後就有: //Initiate a read of Wifi Ap configuration Message.obtain(mWifiHandler, MESSAGE_READ_WIFI_AP_CONFIG).sendToTarget();

對應的 MESSAGE_READ_WIFI_AP_CONFIG 的 handler 是: private class WifiHandler extends Handler { ... ... case MESSAGE_READ_WIFI_AP_CONFIG: readWifiApConfigBlocked(); break;

readWifiApConfigBlocked( ) 是:
DataInputStream in = null; try { WifiConfiguration config = new WifiConfiguration(); in = new DataInputStream(new BufferedInputStream(new FileInputStream( WIFIAP_CONFIG_FILE))); int version = in.readInt(); if (version != 1) { Slog.e(TAG, "Bad version on hotspot configuration file, set defaults"); setDefaultWifiApConfiguration(); return; } config.SSID = in.readUTF(); int authType = in.readInt(); config.allowedKeyManagement.set(authType); if (authType != KeyMgmt.NONE) { config.preSharedKey = in.readUTF(); } synchronized (mWifiApConfigLock) { mWifiApConfig = config; } } catch (IOException ignore) { setDefaultWifiApConfiguration(); } finally {
其中的 WIFI_AP_CONFIG_FILE 是在: private static final String WIFIAP_CONFIG_FILE = Environment.getDataDirectory() + "/misc/wifi/softap.conf";
這個 file 要在 WifiService 只少啟動一次後,才會產生。



系統的其他 component 要得到 wifi ap configuration 要靠 WifiConfiguration 這個 class。
然後是用 Parcel (Android 的 serialize) 作傳送。

所以讀入 config 後,還要修改 WifiConfiguration Parcel 的內容,把 Channel Number 加進去。

沒有留言:

標籤

網誌存檔