硬件平台使用了phy6212 方案, 他的SDK 中带了一个Centrall例子,我刚开始调发现连接后数据发送不出去,后来屏蔽了绑定部分,因为绑定部分注册验证,所以BLE 从机也需要验证,当然这种验证比较麻烦,所以我就直接屏蔽了它。后面就正常了。
下面是代码主控代码路径
PHY62XX_SDK_2.1.0\example\ble_central\simpleBleCentral
屏蔽绑定部分,这部分在蓝牙启动开始事件处修改
if ( events & START_DEVICE_EVT )
{
if(PowerStat==0)
// Start the Device
VOID GAPCentralRole_StartDevice( (gapCentralRoleCB_t *) &simpleBLERoleCB );
// 屏蔽绑定部分
// Register with bond manager after starting device
// GAPBondMgr_Register( (gapBondCBs_t *) &simpleBLEBondCB );
return ( events ^ START_DEVICE_EVT );
}
这是第一步,你的从机可以连接了,但是数据发送部分,需要UUID编号去发送
下面代码是数据发送部分
bStatus_t BleSendData(uint8 * data,uint8 len)
{
if(simpleBLEState == BLE_STATE_CONNECTED)
{
if(simpleBLEConnHandle != GAP_CONNHANDLE_INIT)
{
attWriteReq_t *pReq;
attReadReq_t *pReqread;
pReq = osal_mem_alloc(sizeof(attWriteReq_t));
pReq->sig = 0;
pReq->cmd = TRUE;
pReq->handle = 0x21;
pReq->len = len;
osal_memcpy(pReq->value, data,len);
bStatus_t status = GATT_WriteNoRsp(simpleBLEConnHandle, pReq);
osal_mem_free(pReq);
}
}
}
这个 pReq->handle = 0x21 是从UUID 扫描中获取到的,这个如果不对数据就无法发送。