修改名称后需要重启吗?
您好!
我修改设备名称后,发现需要重启一下才可以更新
请问能否抽空我帮解决一下
谢谢!
我的做法如下:
将static uint8 scanRspData[]改为
void Update_ParameterScanRspData(void)
{
uint8 NameLen,*str_point,*Name_point;
uint8 MachineName[21];
uint8 scanRspData[35]={0};
uint8 scanRsplen;
osal_snv_read(AddrName,1, &NameLen); // 名称长度
osal_snv_read(AddrName,NameLen+1,MachineName); //名称长度+名称
str_point = scanRspData;
*str_point++ = NameLen+1;
*str_point++ = GAP_ADTYPE_LOCAL_NAME_COMPLETE;
Name_point = &MachineName[1];
osal_memcpy(str_point, Name_point, NameLen);
str_point +=NameLen;
*str_point++ = 0x05; // length of this data
*str_point++ = GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE;
*str_point++ = LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL );
*str_point++ = HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL );
*str_point++ = LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL );
*str_point++ = HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL );
// Tx power level
*str_point++ = 0x02;
*str_point++ = GAP_ADTYPE_POWER_LEVEL;
*str_point++ = 0;
scanRsplen = NameLen+ 11;
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, scanRsplen, scanRspData );
GGS_SetParameter( GGS_DEVICE_NAME_ATT, scanRsplen, scanRspData);
}
接收到新名称后,保存在Flash中
然后调用Update_ParameterScanRspData()更改名称
但是总是要重启才可以更新名称
非常感谢!
StarRiver,
adv 和 scan的内容的修改,需要先停止广播,再修改内容,然后再重启广播才能完成更改。
所以你只需要在修改前停止广播,修改完后再重启广播就行,不需要重启整个系统。
非常感谢你的解答!
更改名称后,调用函数如下函数即可
GAP_UpdateAdvertisingData(simpleBLEPeripheral_TaskID,
TRUE,
sizeof(advertData),
advertData );
StarRiver,
用这两个分别改adv 和 scan resp:
GAPRole_SetParameter(GAPROLE_SCAN_RSP_DATA, sizeof (scanRspData), scanRspData);
GAPRole_SetParameter(GAPROLE_ADVERT_DATA, sizeof(advertData), advertData);