微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > CC2541 做主机只能发现一个默认的service?

CC2541 做主机只能发现一个默认的service?

时间:10-02 整理:3721RD 点击:

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的时候,我有哪一步是遗漏的?

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

网站地图

Top