适合新手的wifi模块干货资料分享
今天给大家分享wifi模块总结资料,在网上看到蛮多小伙伴找这方向的内容的,统计了一些,拿出来大家分享,有什么不懂的地方可以加群讨论,更多单片机、proteus,物联网资料下载:813238832
WLAN技术
WLAN是英文WirelessLAN的缩写,就是无线局域网的意思。无线以太网技术是一种基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及难以采用有线接入方式的环境等。
四种主要物理组件
工作站(Station):构建网络的主要目的是为了在工作站间传送数据。所谓工作站,是指配备无线网络接口的计算设备。
接入点(Access Point):802.11网络所使用的帧必须经过转换,方能被传递至其他不同类型的网络。具备无线至有线的桥接功能的设备称为接入点,接入点的功能不仅于此,但桥接最为重要。
无线媒介(Wireless Medium):802.11标准以无线媒介在工作站之间传递帧。其所定义的物理层不只是一种,802.11最初标准化了两种射频物理层以及一种红外线物理层。
分布式系统(Distribution System):当几个接入点串联以覆盖较大区域时,彼此之间必须相互通信以掌握移动式工作站的行踪。分布式系统属于802.11的逻辑组件,负责将帧转送至目的地。
下图为802.11网络的基本服务集(basic service set),其中包含了这四种物理组件。
图一
WIFI适配层
里面定义很多字符串变量和适配层的接口实现,是对wpa_supplicant程序通信的接口封装,用来完成上层和wpa_supplicant的通信, 头文件在libhardware/include/hardware下,这里的函数用来向JNI的本地实现提供调用接口。
这里的函数,我把它们分为四类函数:
一类是命令相关的(控制)函数,就是在JNI层android_XXX_Command()函数所调用 的Wifi_Command()函数,调用流程如下:
android_XXX_command()=>docommand()=>wifi_command()=>wifi_send_command()=>wpa_ctrl_require()。
二类是 监听函数,即Wifi_wait_for_event()函数,调用流程如下:android_net_wifi_Waitforevent()=> wifi_wait_for_event()=>wpa_ctrl_recv()。
三就是WPA_SUPPLICANT的启动,连接,关闭函数
四是驱动的加载和卸载函数
图二
wpa_ctrl的作用
定义了两类套接字和一个管道,并分别实现了和wpa_supplicant的通信,而在实际的实现中采用的都是套接字的方式,因此wpa_supplicant适配层和wpa_supplicant层 是通过socket通讯的。
要是从wifi.c中真的很难看出它和wpa_supplicant有什么关系,和它联系密切的就是 这个wpa_ctrl.h文件,这里面定义了一个类wpa_ctrl,这个类中声明了两个Socket套接口,一个是本地一个是要连接的套接 口,wpa_ctrl与wpa_supplicant的通信就需要socket来帮忙了,而wpa_supplicant就是通过调用 wpa_ctrl.h中定义的函数和wpa_supplicant进行通讯的,wpa_ctrl类(其实是其中的两个socket)就是他们之间的桥梁。
网盘资料链接:https://pan.baidu.com/s/1VGBU8wILQgYJ_a-mByOjWQ 提取码:ouue