微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC2540蓝牙地址

CC2540蓝牙地址

时间:12-23 整理:3721RD 点击:

各位好,请问蓝牙在广播时,广播信息里有没有带蓝牙地址?如果没有,我想增加进去改如何修改?

wang,

可以看看gapRole_ProcessGAPMsg()对GAP_DEVICE_INIT_DONE_EVENT的处理。这里在addr加入到advertising data。

case GAP_DEVICE_INIT_DONE_EVENT:
      {
        gapDeviceInitDoneEvent_t *pPkt = (gapDeviceInitDoneEvent_t *)pMsg;
        bStatus_t stat = pPkt->hdr.status;

        if ( stat == SUCCESS )
        {
          // Save off the generated keys
          VOID osal_snv_write( BLE_NVID_IRK, KEYLEN, gapRole_IRK );
          VOID osal_snv_write( BLE_NVID_CSRK, KEYLEN, gapRole_SRK );

          // Save off the information
          VOID osal_memcpy( gapRole_bdAddr, pPkt->devAddr, B_ADDR_LEN );

          gapRole_state = GAPROLE_STARTED;

          // Update the advertising data
          stat = GAP_UpdateAdvertisingData( gapRole_TaskID,
                              TRUE, gapRole_AdvertDataLen, gapRole_AdvertData );
        }

        if ( stat != SUCCESS )
        {
          gapRole_state = GAPROLE_ERROR;
        }

        notify = TRUE;
      }
      break;

我用debug跟踪到这里确实是正确的蓝牙地址,可是当我调节广播间隔,使用HCI_LE_SetAdvParamCmd函数将间隔调整到1S后,蓝牙地址变成全FF了,这是怎么引起的?

这样导致我多个设备都调整广播后,无法区分了

我用debug跟踪到这里确实是正确的蓝牙地址,可是当我调节广播间隔,使用HCI_LE_SetAdvParamCmd函数将间隔调整到1S后,蓝牙地址变成全FF了,这是怎么引起的?

另外还有一个问题,我看代码里面有DevInfo_AddService,可是在IOS应用那边没有发现所定义的关于这一部分characteristic,比如2A23, 我IOS需要读取这些值。

关于地址, 本人试过, 把广播时间设置成1s, 丝毫没有影响, BTool正常查找到并显示出正确地址, 试过很多次了.

是不是你其他地方的代码有问题? 结果导致广播时间一变, 就产生并发症之类的导致这个问题?

参数设成HCI_PUBLIC_DEVICE_ADDRESS和HCI_RANDOM_DEVICE_ADDRESS的区别

Hi wang,

public address就是芯片的物理地址, random的就是随机产生的一个地址. 用random的话就不能用white list,因为每次地址都会不一样.

我想问一下怎么设置连接时间为1s  因为我追踪到

static void gapRole_ProcessGAPMsg( gapEventHdr_t *pMsg )

{

case GAP_LINK_PARAM_UPDATE_EVENT:
{
NPI_WriteTransport("14\n",3);
gapLinkUpdateEvent_t *pPkt = (gapLinkUpdateEvent_t *)pMsg;

// Cancel connection param update timeout timer (if active)
VOID osal_stop_timerEx( gapRole_TaskID, CONN_PARAM_TIMEOUT_EVT );

if ( pPkt->hdr.status == SUCCESS )
{

// Store new connection parameters
gapRole_ConnInterval = pPkt->connInterval;
gapRole_ConnSlaveLatency = pPkt->connLatency;
gapRole_ConnTimeout = pPkt->connTimeout;
printv(gapRole_ConnInterval);
// Make sure there's no pending connection update procedure
if ( osal_get_timeoutEx( gapRole_TaskID, START_CONN_UPDATE_EVT ) == 0 )
{
// Notify the application with the new connection parameters
if ( pGapRoles_ParamUpdateCB != NULL )
{
NPI_WriteTransport("15\n",3);
(*pGapRoles_ParamUpdateCB)( gapRole_ConnInterval,
gapRole_ConnSlaveLatency,
gapRole_ConnTimeout );
}
}
}
}
break;

}

可是static gapRolesParamUpdateCB_t *pGapRoles_ParamUpdateCB=NULL ;

导致无法修改连接时间

我想问一下 怎么实现这个函数  这个函数里面做一些什么。由于回调函数学的不是很好,麻烦指点一下,谢谢了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top