求教TI大师:BLE Master不能从BLE Slave得到数据的原因是什么?
当执行完 void simpleBLECentralStartDiscovery( void ) 之后,
BLE会从Slave那里得到数据,并执行 static void simpleBLEGATTDiscoveryEvent( gattMsgEvent_t *pMsg )。
Code现在可以进入simpleBLEGATTDiscoveryEvent()中,但是读取不到 simpleBLESvcStartHdl and simpleBLESvcEndHdl。
原因就是 pMsg->msg.findByTypeValueRsp.numInfo = 0
请问为什么会出现这种情况?
Robert,
simpleBLECentralStartDiscovery() 指定只查找SIMPLEPROFILE_SERV_UUID 的uuid,不会返回其他服务的handle.
你的外设里面有SimpleBLEPeripheral吗?
Hi Yan
我用不是SIMPLEPROFILE_SERV_UUID ,但是我BLE Master用的UUID和BLE Slave用的UUID是一致的。
具体说明如下:
simpleBLECentralStartDiscovery()这个函数其实是从SimpleBLECentrol中Copy过来的。
原来的函数内容如下:
/*********************************************************************
* @fn simpleBLECentralStartDiscovery *
* @brief Start service discovery. *
* @return none */
static void simpleBLECentralStartDiscovery( void )
{
uint8 uuid[ATT_BT_UUID_SIZE] = { LO_UINT16(SIMPLEPROFILE_SERV_UUID), HI_UINT16(SIMPLEPROFILE_SERV_UUID) }; // Initialize cached handles
simpleBLESvcStartHdl = simpleBLESvcEndHdl = simpleBLECharHdl = 0;
simpleBLEDiscState = BLE_DISC_STATE_SVC; // Discovery simple BLE service
GATT_DiscPrimaryServiceByUUID( simpleBLEConnHandle, uuid, ATT_BT_UUID_SIZE, simpleBLETaskId );
}
修改后的内容如下:
static void simpleBLECentralStartDiscovery( void )
{
uint8 uuid[ATT_BT_UUID_SIZE] = { LO_UINT16(KW0118_SERVICE_UUID), HI_UINT16(KW0118_SERVICE_UUID) }; // Initialize cached handles
simpleBLESvcStartHdl = simpleBLESvcEndHdl = simpleBLECharHdl = 0;
simpleBLEDiscState = BLE_DISC_STATE_SVC; // Discovery simple BLE service
GATT_DiscPrimaryServiceByUUID( simpleBLEConnHandle, uuid, ATT_BT_UUID_SIZE, simpleBLETaskId );
}
BLE Slave中的UUID也是 KW0118_SERVICE_UUID。这样做修改可以吗?
由于这个程序是从SimpleBLECentrol中Copy过来的,所以如simpBLEConnHandle, simpleBLETaskId,这些变量我就没有去改动。
程序在执行GATT_DiscPrimaryServiceByUUID( simpleBLEConnHandle, uuid, ATT_BT_UUID_SIZE, simpleBLETaskId );的时候,
simpleBLEConnHandle为0, uuid是我自己定义的FFD0,simpleBLETaskId也是正确的。
本来想跟到GATT_DiscPrimaryServiceByUUID()里面看看,但是这个函数是封闭的,看不到什么内容,所以只能请教你了。
即将开始CC2640的工作。希望这周可以解决这个问题,望知情大侠多多帮助。谢谢啊
没 有人能回答这个问题么?
哪个大师能够指点?