设置蓝牙名称,动态修改名称

原文

蓝牙名称是指主机扫描时,从机推送给主机的那一串字符。蓝牙名称便于主机建立连接。

蓝牙名称设置函数:

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 动态修改名称

原文



你可能感兴趣的:(BLE(CC2540))