mtkwifidriver驱动的分析

合集下载

MTK_驱动总结文档

MTK_驱动总结文档

MTK_驱动总结文档G616 驱动文档总结在/mediatek/custom下会有好多重名的文件,在不同的文件夹里,最终会编译哪个文件是根据目录的优先级来判断brighter89_evdo_jb2 > mt6589 > xxmon也就是说如果brighter89_evdo_jb2 ,mt6589 , xxmon 同时存在一文件,最终编译的会是brighter89_evdo_jb2目录下的文件也可以通过/mediatek/custom/out/开判断,此文件时最终编译的文件运行/mediatek/dct/。

选择文件/mediatek/custom/brighter89_evdo_jb2/kernel/dct/dct /Edit,打开后可以修改GPIO的模式,上拉,下拉,输入,输出修改后点击“Save”和“Gen Code”重新编译:./makeMtk brighter89_evdo_jb2 codegen ./makeMtk brighter89_evdo_jb2 new pl lk kernel ./makeMtk brighter89_evdo_jb2 bootimage提交时替换bw/custom/project/g616/mediate/custom/brighter89_evdo_jb2/kernel/dct/dct修改CUSTOM_LK_LCM=hx8389b_qhd_dsi_vdoBOOT_LOGO=qhd //根据屏的分辨率CUSTOM_KERNEL_LCM=hx8389b_qhd_dsi_vdo LCM_HEIGHT=960 LCM_WIDTH=540/mediatek/custom/xxmon/kernel/lcm目录名与下hx8389b_qhd_dsi_vdo名字相同,目录下为驱动文件在/mediatek/custom/xxmon/kernel/lcm/mt65xx_lcm_下添加要添加的屏#if defined(HX8389B_QHD_DSI_VDO) &hx8389b_qhd_dsi_vdo_lcm_drv, #endif下修改CUSTOM_HAL_IMGSENSOR=ov5648_mipi_raw hi257_yuv //前后camera CUSTOM_HAL_MAIN_IMGSENSOR=ov5648_mipi_rawCUSTOM_HAL_SUB_IMGSENSOR=hi257_yuvCUSTOM_KERNEL_IMGSENSOR=ov5648_mipi_raw hi257_yuv //前后camera CUSTOM_KERNEL_MAIN_IMGSENSOR=ov5648_mipi_raw CUSTOM_KERNEL_SUB_IMGSENSOR=hi257_yuv驱动要添加的文件:/mediatek/custom/xxmon/kernel/imgsensor/ov5648_mipi _raw /mediatek/custom/xxmon/hal/imgsensor/ ov5648_mipi_raw//hi257前camera同理/mediatek/custom/xxmon/hal/imgsensor/src/ #if defined(OV5648_MIPI_RAW)RAW_INFO(OV5648MIPI_SENSOR_ID, SENSOR_DRVNAME_OV5648_MIPI_RAW, NULL), #endif /mediatek/custom/xxmon/kernel/imgsensor/src/ kd_ #if defined(OV5648_MIPI_RAW) {OV5648MIPI_SENSOR_ID,SENSOR_DRVNAME_OV5648_MIPI_RAW,OV5648MIPISensorInit}, #endifCamera电所在文件:/mediatek/custom/brighter89_evdo_jb2/kernel/camera/ camera/kd_camera_ 核心驱动文件:/mediatek/custom/xxmon/kernel/imgsensor/src /kd_ 如果修改HAL层参数编译命令如下:./makeMtk -t brighter89_evdo_jb2 mm mediatek/platform/mt6589/hardware/camera/下修改: CUSTOM_HAL_LENS=dw9714afCUSTOM_HAL_MAIN_LENS=dw9714af CUSTOM_KERNEL_LENS=dw9714afCUSTOM_KERNEL_MAIN_LENS=dw9714af添加对应的文件夹和驱动文件/G616/mediatek/custom/xxmon/kernel/lens/dw9714af/ M config/mt6589/M custom/brighter89_evdo_jb2/hal/lens/src/ M custom/xxmon/hal/inc/camera_custom_A custom/xxmon/hal/lens/dw9714af/lens_para_ M custom/xxmon/hal/lens/src/ A custom/xxmon/kernel/lens/dw9714af/ A custom/xxmon/kernel/lens/inc/M platform/mt6589/hardware/camera/core/featureio/drv/ lens/mcu_下修改:CUSTOM_KERNEL_FLASHLIGHT=constant_flashlight CUSTOM_HAL_FLASHLIGHT=constant_flashlight驱动核心:/mediatek/custom/xxmon/kernel/flashlight/src/kd_/mediatek/custom/xxmon/kernel/flashlight/constant_f lashlight/leds_G616用的bd7710gwl driver IC,leds_会有相应的更改,文件修改都放到bw目录下 HAL tunning 文件:mediatek/custom/brighter89_evdo_jb2/hal/camera/came ra/flash_tuning_下修改:CUSTOM_KERNEL_TOUCHPANEL=ft5336驱动文件:mediatek/custom/xxmon/kernel/touchpanel/ft5336/ft53 36_/home/chenjian/CJ_WORK/code/G616/mediatek/custom/br ighter89_evdo_jb2/kernel/touchpanel/ft5336/tpd_cust om_下修改:CUSTOM_KERNEL_ACCELEROMETER=lis3dh CUSTOM_KERNEL_ALSPS=tmd2772驱动文件:/mediatek/custom/xxmon/kernel/accelerometer/lis3dh/ //gsensor 配置I2c和Gsensor 的position/mediatek/custom/brighter89_evdo_jb2/kernel/acceler ometer/lis3dh/cust_ static struct acc_hw cust_acc_hw = { .i2c_num = 3,.direction = 6, //chenjian 20XX-12-26 modify gsensor position.power_id = MT65XX_POWER_NONE, /*!< LDO is not used */ .power_vol= VOL_DEFAULT, /*!< LDO is not used */.firlen = 0, //old value 16 /*!< don't enable low pass fileter */ };/mediatek/custom/xxmon/kernel/alsps/tmd2772/ //psensor light sensor 配置I2c和 light sensor上报数据/mediatek/custom/brighter89_evdo_jb2/kernel/alsps/t md2772/cust_.als_level = { 4, 40, 80, 120, 160, 240, 400, 800, 1200, 1600, 20XX, 3000, 5000, 8000, 65535}, .als_value = {0,20, 60, 100, 150, 240, 400, 600, 1000, 1500, 20XX,3000, 5000, 8000, 10000, 10000},配置xls/mediatek/build/tools/emigen/MT6589/MemoryDeviceLis t_都是MTK release的,需要添加的memory要在MemoryDeviceList_表里,且名字与/mediatek/custom/brighter89_evdo_jb2/preloader/inc/ custom_名字需一样如H9TP32A8JDBCPR_KGM 需和MemoryDeviceList_表的名字一样 #define BOARD_ID MT6589_EVB#define CS_PART_NUMBER[0] SD7DP28C_4G#define CS_PART_NUMBER[1] H9TP32A8JDBCPR_KGM Memory兼容:向下添加即可#define CS_PART_NUMBER[2] #define CS_PART_NUMBER[3] ….….9.音频参数硬件同事,通过工具修改,导出文件,替换如下目录/mediatek/custom/brighter89_evdo_jb2/cgen/inc/。

MTK软件培训课程(三)MTK驱动架构分析精品PPT课件

MTK软件培训课程(三)MTK驱动架构分析精品PPT课件
除了Camera模块外,Idle screen和Media Player 等也使用GDI。
GDI和pixtel_UI的关系
GDI的实现
使用GDI_HANDLE,gdi_handle来操作 GDI对象,GDI的对象可以是layer,gif, jpeg等。 GDI函数返回一个GDI_RESULT GDI函数使用互斥来保护,进入GDI函数 时调用GDI_ENTER_CRITICAL_SECTION()退 出函数时调用GDI_EXIT_CRITICAL_SECTION()
Media Task线程从med_create开始创建,其实 med_create函数只是将入口地址传递给库里的 函数,由里面的函数来创建线程。
Med_create中传入了以下的函数:
med_task_main,
/* 线程入口,消息泵 */
med_init,/*源自初始化 ,指定空间分配*/NULL,
设置当前活动模块,通过stack_set_active_module_id 分发消息,通过消息号,找到对应的消息处理函数,
使用med_main函数。程序里面有很大的一个消息索 引 释放返回消息数据内存区域,free_ilm
Media Task消息
从med_maincam_main相应的消息处 理函数,这时从MDI发过来的一个消息 才被识别,并进入相应的消息处理函数。 这时,我们回过头来再来看我们前面在 MDI章节所分析的Preview实现的例子, 会更清晰一些。 原来的例子:Preview实现
Media Task
Media Task模块分成4个部分:
Camera Audio Image Video
Media Task
Media Task模块有以下的作用:

MTK驱动基本介绍

MTK驱动基本介绍

MTK驱动基本介绍MTK(Mediatek Inc.)是台湾联发科技股份有限公司的一个子公司,是一家全球领先的半导体芯片设计公司。

MTK驱动(Mediatek Driver)是联发科技开发的一款设备驱动程序,用于支持和管理MTK系列芯片的硬件设备。

MTK驱动的目的是为了提供对MTK芯片的各种硬件设备的支持,使其能够在计算机系统中正常工作。

MTK芯片广泛用于智能手机、平板电脑、智能家居、物联网等领域的设备,而MTK驱动则起到了连接和协调计算机系统和硬件设备之间的桥梁作用。

1.提供设备识别和连接:MTK驱动可以识别MTK芯片的硬件设备,并与计算机系统进行连接,完成设备的初始化和配置工作。

2.实现设备通信和数据传输:MTK驱动通过与设备之间的通信接口,实现了设备和计算机之间的数据传输和交互,包括文件的读写、音视频的传输和图像的显示等。

3.支持设备管理和控制:MTK驱动可以对MTK芯片的硬件设备进行管理和控制,包括设备的开关、功能设置、驱动安装和升级等。

4.提供系统稳定性和兼容性:MTK驱动经过严格的测试和验证,能够保证在不同的计算机系统环境下的稳定性和兼容性,确保硬件设备能够正常工作。

5.支持开发者和用户的需求:MTK驱动提供了丰富的开发工具和接口,为开发者和用户提供定制化和个性化的驱动支持,方便二次开发和扩展。

2.连接设备和计算机:使用USB数据线或其他连接方式将MTK芯片的硬件设备连接到计算机上。

3.设置设备连接模式:根据设备的不同,选择合适的连接模式,如USB存储模式、USB调试模式等。

4.等待系统安装驱动:当设备连接到计算机后,操作系统会自动检测并安装相应的MTK驱动程序,期间需要等待一段时间。

5.使用设备:一旦驱动安装完成,设备就可以在计算机上正常工作,可以进行文件传输、数据交互、驱动管理等操作。

总之,MTK驱动是一款重要的软件工具,为MTK芯片的硬件设备提供了必要的支持和管理功能,使其能够在计算机系统中正常工作。

MTK系统和驱动

MTK系统和驱动

驱动部分详细讲解 1 开机启动流程:
RESET Boot from BOOTROM
Receiving start- up pattern via UART1 within 150ms?
YES META Mode
NO
Switch PC to External Device Bank #0 Assign Supervisor Mode SP
Touch Panel
LCD LCD Display Display
Media IC
Camera
MTK软件分层初步解析
1、OS层:RTOS嵌入式实时操作系统。
在nucleus.h中看到操作系统的各类操作函数,其 主要作用是实时和效的去调度当前的多项任务, 合理的去管理内存,合理的管理当前资源如TIMER 等。 主模块:任务管理、定时器管理、存储器管理、 资源管理、事件管理、消息管理、队列管理、旗 语管理等。 提问:我们平常调用的kal_sleep_task函数是 如何通过OS实现的?
• 必须学会欣然面对的一种结果----被接纳
真思考如何为以后的发展开好头。
• 以具体的形式感谢招聘单位的接纳,如邮件、短信 • 考虑怎样使自己的知识能力更适应工作需要 • 把走进工作岗位当作职业生涯的重要的第一步,认
Thank you
Reserved_vector B Reserved_vector 未定义中断
IrqHandler B IrqHandler
IRQ
FiqHandler
FIQ 快速中断
…………………………. BL
C_Main 转C入口
谢谢!
求职应注意的礼仪
• 求职时最礼貌的修饰是淡妆 • 面试时最关键的神情是郑重

MTK驱动基本介绍

MTK驱动基本介绍

MTK驱动基本介绍
MTK驱动,也称为MediaTek驱动,是一种特定于联发科技(MediaTek)芯片的驱动程序。

联发科技是全球领先的半导体解决方案提
供商之一,其产品广泛应用于移动通信、家庭娱乐、无线通信和物联网等
领域。

MTK驱动的作用是连接计算机与MTK芯片设备之间的通信,使得计算
机可以与MTK芯片设备进行数据交互和控制。

这些设备包括智能手机、平
板电脑、物联网设备以及其他使用MTK芯片的电子产品。

MTK驱动是连接
计算机和这些设备之间桥梁的关键。

MTK驱动负责与芯片设备之间的通信协议,包括数据传输、设备识别、设备控制等功能。

它通过USB接口与计算机连接,并与操作系统进行交互,将设备的功能暴露给计算机使用者。

MTK驱动的正常工作对于设备的功能
和性能至关重要。

MTK驱动的开发是一个复杂而严谨的过程。

开发人员需要深入研究MTK芯片的架构和规范,并编写适配特定芯片的驱动程序。

他们还需要进
行严格的测试和验证,以确保驱动程序在各种情况下都能正常工作。

同时,开发人员还需要与MTK芯片的生产商保持密切合作,获取相关技术支持和
更新。

总之,MTK驱动是一种桥梁,将计算机与MTK芯片设备连接起来。


通过通信协议实现数据传输和设备控制,使得用户可以便捷地使用MTK芯
片设备。

MTK驱动的适应性和兼容性优势使得其成为移动通信和物联网领
域的重要组成部分。

同时,MTK驱动的安装和更新也是用户使用设备时需
要考虑的重要问题。

MTK_Ralink wifi开发及相关应用指南

MTK_Ralink wifi开发及相关应用指南

目录1.VMware9虚拟机环境安装 (2)2.Ubuntu系统在VMware上安装 (7)3.RT5350开发环境搭建及错误处理 (40)4.编译RT5350 SDK(Uboot&&Kernel) (44)5.4M/16M和4M/32M的配置方法 (54)6.测试编译固件在开发板正常工作 (55)7.添加自己应用到SDK中 (59)8.添加驱动程序到SDK中,实现控制所有GPIO的电平 (62)9.GPIO复用功能配置说明 (67)10.项目实战---通过手机控制开发板上的LED (67)11.移植Openwrt系统到开发板上,保证无线,有线正常工作 (71)12.Apclient模式(AP+STA同时共存)实现中继功能WDS (75)13.SDK4.1 稳定性以图为证 (77)14.恢复模块出厂设置 (78)15.STA模式设置 (79)16.修改出厂默认参数 (82)17.设置终端串口为普通串口,做wifi转串口项目 (83)18.WEB升级root_uImage (83)19.量厂固件生成方法 (84)20、通过web界面,修改串口应用程序参数 (84)20.1、修改webui配置界面 (84)20.2、修改js与c语言交互 (85)20.3、添加应用程序保存在flash分区字段名 (85)20.4、添加应用程序接受更改的参数 (85)21、支持jffs2文件系统,掉电后保存用户数据 (86)21.1 配置内核 (86)21.2 添加支持jffs2的命令 (88)21.3 修改SDK默认分区,添加用户分区 (89)21.4 测试jffs2文件系统,掉电保存用户数据 (89)1.VMware9虚拟机环境安装1.1下载RT5350开发板资料后,里面有一个如下目录:这里是安装虚拟机全部软件如下图所示:进入<VMware9原版官方软件英文版>目录单击“VMware-workstation-full-9.0.0-812388”这个安装文件,会出现如下界面:选择“下一步”选择“Typical”选择“下一步”选择“下一步“后面的几个界面一直选择“下一步”就行了,然后会出现如下界面,选择“Continue”这时软件正在安装中,耐心的等待一段时间。

MTK手机设备驱动编写介绍

MTK手机设备驱动编写介绍


LCD_delay_HX8306A();\

}

#define LCD_DataWrite_HX8306A(_data) \

{\

*(volatile kal_uint32 *) LCD_HX8306A_DATA_ADDR=
((_data & 0xFF00)<<2)|((_data & 0xFF)<<1);\
TD_CTRL);
construct_local_para(sizeof(aux_id_struct),
aux_id_data->aux_id = AUX_ID_FLICK_OFF;
DRV_BuildPrimitive(flick_ilm, MOD_EINT_HISR, MOD_UEM, MSG_ID_AUX_ID, aux_id_data);
3. GPIO使用中需注意的问题
MTK手机设备驱动编写介绍
二.中断的配置与使用
<1>. 中断个数
8个 EINT0, EINT1为专用中断, EINT2-7 与GPIO等功能复用
<2>. 设置中断模式
通过DRV_TOOL或Gpio_init(void)来初始化,也可在程序中通过 GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)随时修改
MTK手机设备驱动编写介绍
audcoeff_default.h
#define DEFAULT_SPEECH_LOUDSPK_MODE_PARA \ {\ 128, 224, 5128, 0, 374, 0, 400, 0 \ }
starty,kal_uint16 endx,kal_uint16 endy) • void LCD_EnterSleep_ST7549T(void) • void LCD_ExitSleep_ST7549T(void) • void LCD_SetContrast_ST7549T(kal_uint8 level)

MTK驱动调试相关总结

MTK驱动调试相关总结

MTK驱动调试相关总结 2010-12-14 Ver:1.11 SIM卡2 T卡3 FLASH4 按键KEY5 IO配置6 ADC配置7 EINT配置8 FM驱动9 BT驱动10 TOUCHSCEEN驱动11 LCM驱动12 Sensor驱动13 背光灯、按键灯、振动器、PWM14 跑马灯15 移动传感器、四方传感器16 MP4、3GP播放17 音量参数、EQ参数、音频功放开关18 SMS、电话本等容量设置19 耳机插入、拔出检查、耳机按键处理20 充电器或USB插入、拔出检查、识别21 RF 配置22参考文档附录默认系统平台为MT6253,code版本:09B.W10.12.MP。

版本变更记录:Andy 2010.12.10 Ver:1.0Andy 2010-12-14 Ver:1.11 SIM卡F910(MT6253)SIM卡插槽与系统SIM卡号映射关系drv\src\switchControl_al.c// andy 2010.05.31 SIM卡插槽映射 __DRV_DUAL_SIM_INVERSE__//kal_bool sim_physicalSlotChanged;#ifdef __DRV_DUAL_SIM_INVERSE__kal_bool sim_physicalSlotChanged = KAL_TRUE ;#elsekal_bool sim_physicalSlotChanged = KAL_FALSE;#endif定制支持的SIM电压:Customer_sim_voltage_support.c/* For customer define ME support voltage of SIM *//* For 1.8V Tech. ME use ME_18V_30V *//* For 3.0V ONLY ME use ME_30V_ONLY *//* For 1.8V ONLY ME use ME_18V_ONLY */#define SIM_VOLTAGE_SUPPORT ME_18V_30Vsim_env SIM_GetCurrentEnv(void){(SIM_VOLTAGE_SUPPORT);return}MT6253的“4.3 SIM Interface”,介绍了SIM卡接口的情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

管理篇接收到扫描完毕nicRxSDIOAggReceiveRFBssdio有两个通道,两个通道获取数据的流程是一样的,1)通过prEnhDataStr->rRxInfo.u.u2NumValidRx0Len可以获取到该通道目前存储有多少数据包,通道数据包的存储量只有16个,如果超过16个则是固件问题,跳过看下一个通道的2)然后获取当前freeswrfb空闲空间是否够用,不够用则看下一个通道的。

3)可接收的聚合报文(管理帧)长度(u4RxAvailAggLen)为23524)循环遍历某个通道的报文,读到报文长度+4 然后按照4个字节对齐从u4RxAvailAggLen 扣减掉。

如果空间不够则跳出。

5)遍历完之后用2352减去u4RxAvailAggLen 可以得到总的数据长度通过dma获取数据到prRxCtrl->pucRxCoalescingBufPtr中1)6)遍历通道中报文数,把每个报文拷贝到prSwRfb->pucRecvBuff中,并且填充prSwRfb->ucPacketType和prSwRfb->ucStaRecIdx2)nicRxSetupRFB3)如果prSwRfb->pvPacket为空,则先将prSwRfb置成0,然后按照2352分配sk_buff,prSwRfb->pucRecvBuff指向skb->data,prSwRfb->pvPacket指向skb1)同时,prSwRfb->prHifRxHdr指向skb->data首部。

2)nicRxFillRFB3)从prHifRxHdr->ucHerderLenOffset获取出header的offset和MACHeaderLen4)设置prSwRfb->pvHeader指向skb->data越过prHifRxHdr + HIF_RX_HDR_SIZE + u4HeaderOffset,指向的将是beacon帧结构5)重置prSwRfb->u2HeaderLen=u4MacHeaderLen 和prSwRfb->u2PacketLen为原来skb->data长度减去(HIF_RX_HDR_SIZE + u4HeaderOffset)MacHeader 如下图:nicAddScanResult该函数分为replace和add部分,先讲解add部分Add1)如果prAdapter->rWlanInfo.u4ScanResultNum小于63则继续往下走2)先将prAdapter->rWlanInfo.arScanResult[i]到aucIE之前的部分设置为03)设置prAdapter->rWlanInfo.arScanResult[i].u4Length为aucIE之前的部分的长度+IE的长度4)拷贝mac地址到prAdapter->rWlanInfo.arScanResult[i].arMacAddress5)拷贝ssid到prAdapter->rWlanInfo.arScanResult[i].rSsid.aucSsid6)设置u4Privacy、rRssi、eNetworkTypeInUse、eOpMode等7)拷贝prConfiguration到prAdapter->rWlanInfo.arScanResult[i].rConfiguration中8)拷贝rSupportedRates到prAdapter->rWlanInfo.arScanResult[i].rSupportedRates中9)拷贝u2IELength到prAdapter->rWlanInfo.arScanResult[i].u4IELength10)如果u2IELength大于0 则检查aucScanIEBuf是否够放下当前bssdesc的IE部分,如果可以的话,则拷贝到aucScanIEBuf[prAdapter->rWlanInfo.u4ScanIEBufferUsage],然后设置指针到apucScanResultIEs[i]中,接下来重置u4ScanIEBufferUsage的值。

如果空间不够的话,则将arScanResult[i].u4Length、u4IELength、apucScanResultIEs[i]设置为0.如果u2IELength不大于0,则设置apucScanResultIEs[i] = NULL;11)prAdapter->rWlanInfo.u4ScanResultNum++;如果当前已经没有空间存储了,则考虑替换rssi最弱的那个ap authCheckRxAuthFrameTransSeq1)该函数先判断该报文是否是正确的,评判标准就是:如果报文总长度扣掉报文头所剩下的空驾大于6(auth algorithm+auth seq num+status code)这三个字段是必备的意思。

获取auth seq num 来判断该数据包是属于auth request(1和3)还是auth response(2和4)saaFsmRunEventRxAuth(处理auth response的包函数)aaaFsmRunEventRxAuth (处理auth request的包函数aaa指authentication,authorization,and accountingservices即认证授权计费系统)kalEnqueueCommand的cmd最后会由这边来执行wlanProcessCommandQueue mboxRcvAllMsg上层下发scan指令流程分析mtk_cfg80211_scan1)首先先查看下当前是否有在扫描的请求,如果有,则直接退出,通过变量prGlueInfo->p rScanRequest来进行判断2)通过对request进行判断分解请求a.分解ssid,如果请求ssid的个数为1,则将ssid拷贝到rScanRequest的ssid中,如果大于1则直接退出,如果为0,则将rScanRequest.rSsid.u4SsidLen为0;b.分解IE,如果ie_len大于0,则将rScanRequest.pucIE指向request中的ie,并且置为u4IELength为03)通过kalioctl进行发送wlanoidSetBssidListScanExt参数为rScanRequestKalioctl 触发流程:将相关参数组装成prIoReq中,之后唤醒tx_thread来处理OID,然后等待执行结束,在tx_t hread中会调用wlanSetInformation或者wlanQueryInformation,不过这两部分的操作,最后都会调用prIoReq中的回调函数,wlanoidSetBssidListScanExt流程:1.判断参数中请求的长度参数的长度是否等于参数结构的大小2.判断射频是否关闭3.遍历prBSSDescList,将类型为BSS_TYPE_INFRASTRUCTURE的prBssDesc->aucRawBuf清空4.将scanrequest的参数解析出来5.获取ais状态机prAisFsmInfo6.启动prAisFsmInfo->rScanDoneTimer定时器时长为15s如果支持在线扫描,则直接aisFsmScanRequest,否则如果kalGetMediaStateIndicated(prAdap ter->prGlueInfo) != PARAM_MEDIA_STATE_CONNECTED则跟着aisFsmScanRequest,其他直接WLAN_STATUS_FAILURE。

aisFsmScanRequest流程1.判断prConnSettings->fgIsScanReqIssued是否为false,同一时间只能有一次scan。

2.如果有ssid、IE等获取出来,拷贝到prAisFsmInfo中对应的变量中。

3.如果当前prAisFsmInfo->eCurrentState == AIS_STATE_NORMAL_TR,如果当前是处于prAisBssInfo->eCurrentOPMode == OP_MODE_INFRASTRUCTURE并且prAisFsmInfo->fgIsInfraC hannelFinished == FALSE(802.1x 可能还没完成,pend it 等后续操作),则执行aisFsm InsertRequest(prAdapter, AIS_REQUEST_SCAN);否则,则执行开始online scan(包括wlan ClearScanningResult(prAdapter)和aisFsmSteps(prAdapter, AIS_STATE_ONLINE_SCAN))4.如果当前prAisFsmInfo->eCurrentState == AIS_STATE_IDLE,则直接进行扫描(包括wlanClearScanningResult(prAdapter)和aisFsmSteps(prAdapter, AIS_STATE_ONLINE_SCAN))。

其他情况也是直接pend it 等后续操作aisFsmInsertRequest(prAdapter, AIS_REQUEST_SCA N);wlanClearScanningResult流程1.如果当前处于连接状态,则遍历prAdapter->rWlanInfo.arScanResult,跟当前连接的ap的mac地址进行比对prAdapter->rWlanInfo.rCurrBssId.arMacAddress,如果一致,则将其搬到prAdapter->rWlanInfo.arScanResult[0]其他都清除。

如果当前不处于连接,则直接prAdapter->rWlanInfo.u4ScanResultNum = 0;prAdapter->rWlan Info.u4ScanIEBufferUsage = 0;aisFsmSteps(prAdapter, AIS_STATE_SCAN/AIS_STATE_ONLINE_SCAN/LOOK_FOR)流程:1.先将nextState保存到prAisFsmInfo->eCurrentState中。

2.Switch(nextState)就看AIS_STATE_SCAN/AIS_STATE_ONLINE_SCAN/LOOK_FOR3. A.先检测网络设备是否已经激活,如果没有激活,则进行激活操作。

相关文档
最新文档