CC2541 做主机只能发现一个默认的service?
IC平台:CC2541
软件环境 :IAR8.2 , SDK1.4.0 工程:SimpleBLECentral
问题描述:
是这样的,CC2541作为主机,去连接从机,BLE的功能需要做成这样的:
- 1.支持Device Infofmation Service(UUID:0x180A) 中的Serial Number String特征(UUID:0x2A25) 的读取,这部分我已经实现,没发现问题,我的实现方法是直接将SIMPLEPROFILE_SERV_UUID这个宏改为0x80A;
- 2.同时需要支持Nordic Uart Service(UUID:0x6e400001-b5a3-f393-e0a9-e50e24dcca9e ),这个service的内容如下:
但是我在CC2541的central 工程中调用了如下的代码,并未能够正确地识别service,
uint8 nusUuid [16] = {0x9e,0xca,0xdc,0x24,0x0e,0xe5,0xa9,0xe0,0x93,0xf3,0xa3,0xb5,0x01,0x00,0x40,0x6e};
#define ATT_UUID_SIZE 16
GATT_DiscPrimaryServiceByUUID( simpleBLEConnHandle,//nusConnHandle,//这个连接的handle是全局性的,不需要多个
nusUuid,
ATT_UUID_SIZE,
simpleBLETaskId );
只能在static void simpleBLEGATTDiscoveryEvent( gattMsgEvent_t *pMsg )里面调试得到这样的结果:
pMsg->method = ATT_FIND_BY_TYPE_VALUE_RSP
pMsg->msg.findByTypeValueRsp.numInfo = 0
然后再也没进入了这个Event处理函数了,但是如果换成16bit的Device Information Service 的 UUID就能够正常识别,numInfo大于0,后来我发现,就算使用16bit的UUID, 只要不是0x180A, 也是同样的结果;
我想请教一下,在发现这个128bit UUID的 service的时候,我有哪一步是遗漏的?