目 錄
前 言
第1章 準備工作 1
1.1?Android系統架構 2
1.2 工具使用 2
1.2.1 Source Insight的使用 3
1.2.2 Eclipse的使用 3
1.2.3 BusyBox的使用 7
1.3?本書資源下載說明 8
第2章 深入理解Netd 9
2.1?概述 10
2.2?Netd工作流程 10
2.2.1?main函數分析 11
2.2.2?NetlinkManager分析 12
2.2.3?CommandListener分析 16
2.2.4?DnsProxyListener分析 18
2.2.5?MDnsSdListener分析 21
2.3?CommandListener中的命令 26
2.3.1?iptables、tc和ip命令 27
2.3.2?CommandListener構造函數和測試工具ndc 31
2.3.3?InterfaceCmd命令 33
2.3.4?IpFwd和FirewallCmd命令 40
2.3.5?ListTtysCmd和PppdCmd命令 43
2.3.6?BandwidthControlCmd和IdletimerControlCmd命令 45
2.3.7?NatCmd命令 47
2.3.8?TetherCmd和SoftapCmd命令 49
2.3.9?ResolverCmd命令 54
2.4?NetworkManagementService介紹 55
2.4.1?create函數詳解 55
2.4.2?systemReady函數詳解 57
2.5?本章總結和參考資料說明 58
2.5.1?本章總結 58
2.5.2?參考資料說明 58
第3章 Wi-Fi基礎知識 62
3.1?概述 63
3.2?無線電頻譜和802.11協議的發展歷程 63
3.2.1?無線電頻譜知識 63
3.2.2?IEEE 802.11發展歷程 64
3.3?802.11無線網絡技術 66
3.3.1?OSI基本參考模型及相關基本概念 66
3.3.2?802.11知識點導讀 73
3.3.3?802.11組件 74
3.3.4?802.11 Service介紹 77
3.3.5?802.11 MAC服務和幀 82
3.3.6?802.11 MAC管理實體 98
3.3.7?無線網絡安全技術知識點 105
3.4 Linux Wi-Fi編程API介紹 121
3.4.1 Linux Wireless Extensions介紹 122
3.4.2 nl80211介紹 125
3.5 本章總結和參考資料說明 135
3.5.1 本章總結 135
3.5.2 參考資料說明 136
第4章 深入理解wpa_supplicant 140
4.1 概述 142
4.2 初識wpa_supplicant 144
4.2.1 wpa_supplicant架構 144
4.2.2 wpa_supplicant編譯配置 145
4.2.3 wpa_supplicant命令和控制API 146
4.2.4 git的使用 149
4.3 wpa_supplicant初始化流程 149
4.3.1 main函數分析 150
4.3.2 wpa_supplicant_init函數分析 153
4.3.3 wpa_supplicant_add_iface函數分析 158
4.3.4 wpa_supplicant_init_iface函數分析 164
4.4 EAP和EAPOL模塊 191
4.4.1 EAP模塊分析 191
4.4.2 EAPOL模塊分析 202
4.5 wpa_supplicant連接無線網絡分析 212
4.5.1 ADD_NETWORK命令處理 214
4.5.2 SET_NETWORK命令處理 216
4.5.3 ENABLE_NETWORK命令處理 218
4.6 本章總結和參考資料說明 264
4.6.1 本章總結 264
4.6.2 參考資料說明 264
第5章 深入理解WifiService 267
5.1 概述 268
5.2 WifiService的創建及初始化 268
5.2.1 HSM和AsyncChannel介紹 269
5.2.2 WifiService構造函數分析 276
5.2.3 WifiStateMachine介紹 277
5.3 加入無線網絡分析 287
5.3.1 Settings操作Wi-Fi分析 288
5.3.2 WifiService操作Wi-Fi分析 295
5.4 WifiWatchdogStateMachine介紹 312
5.5 Captive Portal Check介紹 316
5.6 本章總結和參考資料說明 320
5.6.1 本章總結 320
5.6.2 參考資料說明 320
第6章 深入理解Wi-Fi Simple Configuration 321
6.1 概述 322
6.2 WSC基礎知識 322
6.2.1 WSC應用場景 323
6.2.2 WSC核心組件及接口 325
6.3 Registration Protocol詳解 326
6.3.1 WSC IE和Attribute介紹 328
6.3.2 802.11管理幀WSC IE設置 331
6.3.3 EAP-WSC介紹 335
6.4 WSC代碼分析 343
6.4.1 Settings中的WSC處理 343
6.4.2 WifiStateMachine的處理 345
6.4.3 wpa_supplicant中的WSC處理 347
6.4.4 EAP-WSC處理流程分析 356
6.5 本章總結和參考資料說明 370
6.5.1 本章總結 370
6.5.2 參考資料說明 370
第7章 深入理解Wi-Fi P2P 371
7.1 概述 372
7.2 P2P基礎知識 372
7.2.1 P2P架構 372
7.2.2 P2P Discovery技術 374
7.2.3 P2P工作流程 389
7.3 WifiP2pSettings和WifiP2pService介紹 392
7.3.1 WifiP2pSettings工作流程 392
7.3.2 WifiP2pService工作流程 397
7.4 wpa_supplicant中的P2P 408
7.4.1 P2P模塊初始化 409
7.4.2 P2P Device Discovery流程分析 416
7.4.3 Provision Discovery流程分析 426
7.4.4 GO Negotiation流程分析 433
7.5 本章總結和參考資料說明 441
7.5.1 本章總結 441
7.5.2 參考資料說明 441
第8章 深入理解NFC 443
8.1 概述 444
8.2 NFC基礎知識 444
8.2.1 NFC概述 445
8.2.2 NFC R/W運行模式 448
8.2.3 NFC P2P運行模式 453
8.2.4 NFC CE運行模式 459
8.2.5 NCI原理 462
8.2.6 NFC相關規范 464
8.3 Android中的NFC 464
8.3.1 NFC應用示例 465
8.3.2 NFC系統模塊 478
8.4 NFC HAL層討論 498
8.5 本章總結和參考資料說明 500
8.5.1 本章總結 500
8.5.2 參考資料說明 500
第9章 深入理解GPS 503
9.1 概述 504
9.2 GPS基礎知識 504
9.2.1 衛星導航基本原理 505
9.2.2 GPS系統組成及原理 513
9.2.3 OMA-SUPL協議 532
9.3 Android中的位置管理 536
9.3.1 LocationManager架構 536
9.3.2 LocationManager應用示例 538
9.3.3 LocationManager系統模塊 541
9.4 本章總結和參考資料說明 570
9.4.1 本章總結 570
9.4.2 參考資料說明 570
附錄 574