微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于GATT Client 和 GATT Server 的疑问

关于GATT Client 和 GATT Server 的疑问

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

各位哥们请问:

在SimpleBLEPeripheral范例里面是属于GATT Server 端,

在SimpleBLECentral范例里面是属于GATT Client端,

现在我想要让他们两个专案同时存在Client及Server,

所以在SimpleBLEPeripheral_Init() 添加 :

VOID GATT_InitClient();

GATT_RegisterForInd( simpleBLEPeripheral_TaskID );

以及 SimpleBLECentral_Init() 添加 :

SimpleProfile_AddService( GATT_ALL_SERVICES );

那么现在我在Peripheral 里面呼叫 GATT_DiscPrimaryServiceByUUID() ;

 响应了 pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP , 事件里面的代码如下:

arr[0] = pMsg->msg.findByTypeValueRsp.handlesInfo[0].handle; 
arr[1] = pMsg->msg.findByTypeValueRsp.handlesInfo[0].grpEndHandle;
uint16 cHandle;
GAPRole_GetParameter( 0x30E, &cHandle);
attReadByTypeReq_t req;
req.startHandle = arr[0];
req.endHandle = arr[1];
req.type.len = ATT_BT_UUID_SIZE;
req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID); 
req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID);
GATT_ReadUsingCharUUID( cHandle, &req, simpleBLEPeripheral_TaskID );

这个 GATT_ReadUsingCharUUID() 方法会响应 ATT_READ_BY_TYPE_RSP or ATT_ERROR_RSP

但是我添加了这两个事件都没有进入判断式子里,所以我找不到Central的特征值,

可以确定的是在呼叫GATT_ReadUsingCharUUID() 后 osal 有发送 GATT_MSG_EVENT 事件,

怎样才能找到Central的特征呢?

请先了解蓝牙4.0协议中GATT的通讯原理,可以看论坛那个视频教程贴。
大致过程就是 从机起 service,主机访问操作,所以从机是server,主机是client。

论坛说两个可以同时存在....

"一个设备中可以同时为Client及Server,但实际应用中并不冲突"

你讲的从机起 service,主机访问操作,所以从机是server,主机是client。

只是我想将主机添加Server , 从机添加 client 。

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

网站地图

Top