如题,最近在研究蓝牙,学习BLE Software Developer's Guide.pdf,其中关于GATT层的解释有client和server的概念。
说来惭愧,之前搞MQTT的时候,遇到过这个概念,当时就没弄清楚,现在又遇到,还是很懵
请问:
1.这两个角色是对立的吗?有上下层的关系吗?比如server的角色是位于通讯的上层之类的
2.如何根据自己的应用来确定GATT应初始化为client还是server?
暂时先这么多吧,期待大神的回答!笔芯!
Viki Shi:
回复 Viki Shi:
这是我们官方的文档,英文的dev.ti.com/…/gatt.html
z z46:
回复 Viki Shi:
你好,我看了你给的资料,client应该是请求服务的一方,server应该是响应并提供服务的一方,比如手机端的蓝牙相当于client,而我们的蓝牙终端相当于server。
不知道这个理解对不对,按照这个理解,我又重新去看projectzero,发现里面调用了GATT_InitClient(); 这个函数不是把设备初始化为client吗,我理解的蓝牙终端应该是server啊,我又困惑了。。。。
Viki Shi:
回复 z z46:
手机可以是GATT server,也可以是GATT client。保有数据的那一方称之为GATT server,访问数据的那一方称之为GATT client,这个不是一成不变的。
z z46:
回复 Viki Shi:
你说的这个,我觉得我懂。但是projectzero不是保存数据的那一端吗?所有的LED灯,按键信息都在这里呀,手机或者(hosttest+Btool)通过命令/请求来配置/获取projectzero的设备状态信息,这时候projectzero不应该是server吗?为什么初始化为client呢?
Alvin Chen:
回复 z z46:
// Initialize GATT Client, used by GAPBondMgr to look for RPAO characteristic for network privacyGATT_InitClient();
The project_zero project implements a simple Bluetooth low energy peripheral device with GATT services and demonstrates how to integrate Over the Air Download and three custom services. This project can be a framework for developing many different peripheral-role applications.
z z46:
回复 Alvin Chen:
请问peripheral role不应该是提供服务的server吗,为central提供自身各项参数,并根据sentral要求修改配置 ,为什么又是client?
YiKai Chen:
回复 z z46:
建議你讀一下 dev.ti.com/…/ 蓝牙的部分
z z46:
回复 YiKai Chen:
好的,谢谢