蓝牙名称是指主机扫描时,从机推送给主机的那一串字符。蓝牙名称便于主机建立连接。
蓝牙名称设置函数:
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
1. 在数组scanRspData[ ]里,存放的就是蓝牙名称,可以自己设置。
1.1直接在数组中修改
// GAP - SCAN RSP data (max size = 31 bytes)
static uint8 scanRspData[] =
{
// complete name
0x14, // 第一段长度指的是从机名的长度+1,这个1是GAP_ADTYPE_LOCAL_NAME_COMPLETE这个宏
GAP_ADTYPE_LOCAL_NAME_COMPLETE,
0x53, // 'S' 可以用ASCII码表示,也可以直接用字符表示
0x69, // 'i'
0x6d, // 'm'
0x70, // 'p'
0x6c, // 'l'
0x65, // 'e'
0x42, // 'B'
0x4c, // 'L'
0x45, // 'E'
0x50, // 'P'
0x65, // 'e'
0x72, // 'r'
0x69, // 'i'
0x70, // 'p'
0x68, // 'h'
0x65, // 'e'
0x72, // 'r'
0x61, // 'a'
0x6c, // 'l'
// connection interval range
0x05, // 第二段长度
GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE,
LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ), // 100ms
HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ),
LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ), // 1s
HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ),
// Tx power level
0x02, // 第三段长度
GAP_ADTYPE_POWER_LEVEL,
0 // 0dBm
};
1.2逐个添加数组元素
uint8 AttDeviceNameLen = osal_strlen((char*)GetAttDeviceName());
uint8 pSscanRspDataLen = ( 11 + AttDeviceNameLen);
uint8 *pSscanRspData = osal_mem_alloc(pSscanRspDataLen);
if(pSscanRspData)
{
uint8 index = 0;
pSscanRspData[0] = AttDeviceNameLen + 1;
pSscanRspData[1] = GAP_ADTYPE_LOCAL_NAME_COMPLETE;
osal_memcpy(&pSscanRspData[2], GetAttDeviceName(), AttDeviceNameLen);
index = 2 + AttDeviceNameLen;
pSscanRspData[index+0] = 0x05;
pSscanRspData[index+1] = GAP_ADTYPE_SLAVE_CONN_INTERVAL_RANGE;
pSscanRspData[index+2] = LO_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL ); // 100ms
pSscanRspData[index+3] = HI_UINT16( DEFAULT_DESIRED_MIN_CONN_INTERVAL );
pSscanRspData[index+4] = LO_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL ); // 1s
pSscanRspData[index+5] = HI_UINT16( DEFAULT_DESIRED_MAX_CONN_INTERVAL );
// Tx power level
pSscanRspData[index+6] = 0x02; // length of this data
pSscanRspData[index+7] = GAP_ADTYPE_POWER_LEVEL;
pSscanRspData[index+8] = 0; // 0dBm
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, pSscanRspDataLen, pSscanRspData );
osal_mem_free(pSscanRspData);
2 动态修改名称