查看各种GATT-based profiles,似乎服务总是在GATT服务器而不是GATT客户端中公开。例如,时间配置文件(TIP)使服务器公开当前时间服务(CTS)。因此,如果手机要使用TIP以当前时间更新心率监测器,则手机将成为服务器,而监护仪将成为客户端。但是,作为心率监测器,Heart Rate Profile希望监护仪成为GATT服务器。
那么,对于从手机获取当前时间的显示器,它应该是GATT客户端还是服务器?是否应将其设置为客户端,同时与手机同步并设置为服务器?是否应该实现自定义配置文件,以便CTS在客户端中公开?
由于
答案 0 :(得分:4)
通用属性配置文件(GATT)定义服务器和客户端如何通信 彼此使用属性协议来传输数据。客户 在过程结束时启动和释放过程时确定和服务器角色。因此,设备可以同时扮演两种角色。
我建议你阅读Bluetooth Spec。在G部分2.2中,它解释了角色和配置。
客户端 - 这是启动命令和请求的设备 服务器,并可以接收由...发送的响应,指示和通知 服务器。 服务器 - 这是接受传入命令和请求的设备 来自客户端并向客户发送响应,指示和通知。
回到你的问题:
时间配置文件使设备可以获取日期,时间,时区, 和DST信息并控制与时间相关的功能。
在您的情况下,当手机需要时间时,显示器将成为GATT客户端。但是,它可以与电话同时用于另一个程序(操作,请求等)。
简而言之,客户端和服务器角色不会固定到设备上。当您的手机公开当前时间时,它将是服务器。同样,当它从监视器获取当前时间时,它将是客户端。无需自定义配置文件。如果您希望手机从设备获取当前时间并将其暴露给其他设备,只需为客户端和服务器角色实施相同的配置文件即可。
修改强>
根据{{3}},要获取当前时间信息,GATT读取特征值子过程应与当前时间特性的句柄一起使用。作为客户端监控将从服务器的GATT表中读取当前时间特征(在这种情况下,它是电话)。一旦监视器从手机中检索值,它就可以更新其当前时间特征值,并以三种方式将其暴露给它的环境: