对于IPCamera以及smartphone这样的设备,在物联网应用中会涉及到在ESS的多个AP之间自动漫游的问题。这里以RT5350/MT7620 sdk为例,简要描述一下相关的规则。
一)
在RT5350 SDK的帮助文档中关于WIFI roaming可以通过如下的参数进行设置
FastRoaming
Value:
0:Disabled
1:Enabled
RoamThreshold
Value
0~255
AutoRoaming=Value
Enable/Disable auto roaming mechanism
Value:
0:Disabled
1:Enabled
Default Setting is disabled。
但是从code分析来看,实际上控制WIFI roaming的参数目前只有“RoamThreshold”和“AutoRoaming”这两个。
MT7620SDK上的实现和这里大同小异。
具体分析一下代码:
首先在ralink的driver中,目前只有sta驱动才支持该功能,因此如果client模式是使用ap-client来实现的话,则无法支持该功能。
代码中通过struct _STA_ADMIN_CONFIG结构中的如下两个成员来保存Fast Roaming的相关配置信息
/* Fast Roaming */ BOOLEAN bAutoRoaming; /* 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI */ CHAR dBmToRoam; /* the condition to roam when receiving Rssi less than this value. It's negative value. */
在code中通过RTMPSetProfileParameters函数中的如下代码段来从配置文件中获取这两个参数的配置:
/* AutoRoaming by RSSI*/ if (RTMPGetKeyParameter("AutoRoaming", tmpbuf, 32, pBuffer, TRUE)) { if (simple_strtol(tmpbuf, 0, 10) == 0) pAd->StaCfg.bAutoRoaming = FALSE; else pAd->StaCfg.bAutoRoaming = TRUE;
DBGPRINT(RT_DEBUG_TRACE, ("AutoRoaming=%d\n", pAd->StaCfg.bAutoRoaming)); } /* RoamThreshold*/ if (RTMPGetKeyParameter("RoamThreshold", tmpbuf, 32, pBuffer, TRUE)) { long lInfo = simple_strtol(tmpbuf, 0, 10);
if (lInfo > 90 || lInfo < 60) pAd->StaCfg.dB |