我们正在尝试确定是使用单独的GATT特征还是将多个属性组合为一个自定义特征。
合并的好处非常明显:一次交易,很多属性。
但是即使具有多个特征(每个属性一个),交易似乎也足够快。
这完全是一个任意决定吗?还是有最佳做法?
答案 0 :(得分:2)
这是非常相关的,并且取决于您要实现的系统。我的建议是选择许多单独的特征。原因是您将简化GATT服务器端(存储所有特征的位置)和GATT客户端端的应用程序。例如,如果您使用多个特征,这意味着您必须向GATT客户端添加额外的智能,以将这些特征中的数据分开。如果数据端是可变的,那么这将更加复杂。如果将来您必须使用新功能来更新此组合特征,则与具有许多特征的任务相比,客户端和服务器端的任务可能相对更加复杂,因为事情将被分类和划分。
要考虑的另一件事是测试。创建GATT服务器应用程序时,您需要使用一种或多种不同的GATT客户端实现(例如iOS设备,Linux计算机等)对其进行测试。为此,如果远程设备没有获得组合特征并试图理解数据,将会容易得多。
最后,请注意,正如您所说,蓝牙中的交易相对较快,并且使用多个特征与一个特征时不会有太大的区别。原因是默认情况下,特征长度为20,蓝牙数据包长度为27(除非您使用的是称为Data Length Extension的蓝牙4.2功能,并非所有电话都支持此功能)。因此,即使您使用的特征长度大于20,Bluetooth堆栈/基带也会将特征分成多个块并通过空中发送,因此无法实现您期望的更高吞吐量。
我希望这会有所帮助。